본문 바로가기

Data Analysis/기타 데이터

[기타 데이터] Airbnb NewYork 데이터 분석 3 (EDA / 시각화 / 리뷰)

728x90

이전 내용은 아래 글에서 확인 하실 수 있습니다.

[Data Analysis/기타 데이터] - [기타 데이터] Airbnb NewYork 데이터 분석 1 (데이터 확인 / 질문)

 

[기타 데이터] Airbnb NewYork 데이터 분석 1 (데이터 확인 / 질문)

Airbnb NewYork 데이터 분석 분석 목적 : 2021년 9월 1일자 에어비앤비 뉴욕 데이터 데이터 출처 : http://insideairbnb.com/get-the-data.html Inside Airbnb. Adding data to the debate. Inside Airbnb is a..

sks8410.tistory.com

[Data Analysis/기타 데이터] - [기타 데이터] Airbnb NewYork 데이터 분석 2 (데이터 전처리)

 

[기타 데이터] Airbnb NewYork 데이터 분석 2 (데이터 전처리)

이 전 내용은 아래 글에서 확인 하실 수 있습니다. [Data Analysis/기타 데이터] - [기타 데이터] Airbnb NewYork 데이터 분석 1 (데이터 확인 / 질문) [기타 데이터] Airbnb NewYork 데이터 분석 1 (데이터 확인..

sks8410.tistory.com

4. EDA & Visualization

4-0 컬럼간 상관관계 확인

# 컬럼 간 상관관계를 히트맵으로 확인

bnb_thr_corr = bnb_thr.corr().round(2)

import plotly.figure_factory as ff

fig = ff.create_annotated_heatmap(x = bnb_thr_corr.index.tolist(),
                                 y = bnb_thr_corr.columns.tolist(),
                                 z = bnb_thr_corr.values,
                                 xgap=1, 
                                 ygap=1,
                                 showscale = True)

fig.update_layout(
    title = dict(
        text = "<b>컬럼간 상관관계 Heat Map</b>",        
        y = 0.9,
        font_size = 20
    ),
    
    xaxis = dict(
        side = "bottom" # x 축 위치 조정
    ),
    
    yaxis_autorange='reversed'
)

fig.show()

- 호스트 id(host_id)는 월평균 리뷰수(reviews_per_month), 대여가능한 에어비앤비 개수(calculated_host_listings_count), 1년 중 대여가능 일수(availability_365)와 상관관계가 있습니다.

 

- 가격(price)은 1년 중 대여가능 일수(availability_365)와 상관관계가 있습니다.

 

- 최소 숙박일(minimum_nights)은 대여가능한 에어비앤비 개수(calculated_host_listings_count)와 상관관계가 있습니다.

 

- 리뷰 수(number_of_reviews)와 월 평균 리뷰 수(reviews_per_month)는 강한 상관관계가 있습니다.

   -> 둘 중 하나만 사용하여 분석해도 무방하다고 판단됩니다.

 

- 대여가능한 에어비앤비 개수(calculated_host_listings_count)는 1년 중 대여가능 일수(availability_365)와 상관관계가 있습니다.

 

- 1년 중 대여가능 일수(availability_365)는 리뷰 수(number_of_reviews)와 상관관계가 있습니다.

4-1 뉴욕 에어비앤비 금액대 분포는?

# 뉴욕 에어비앤비 금액대 분포 시각화

bnb_thr["price"].iplot(kind = "box",
                       title = "<b>뉴욕 에어비앤비 금액대 분포</b>",
                       theme = "white")

뉴욕 에어비앤비 금액은 대부분 200& 아래에 분포해 있습니다.

4-2 가장 많이 에어비엔비에 리스트 된 호스트는?

# 가장 많이 에어비앤비에 리스트 된 호스트 top10

bnb_host_top10 = bnb_thr["host_name"].value_counts().head(10).reset_index()
bnb_host_top10.columns = ["host_name", "count"]
bnb_host_top10

 

 

# 가장 많이 에어비앤비에 리스트 된 호스트 top10 시각화

fig = px.bar(bnb_host_top10, x = "host_name", y = "count",            
             color = "count",
             color_continuous_scale = px.colors.sequential.Bluered,
             text = "count")

fig.update_layout(    
    title = dict(
        text = "<b>가장 많이 Airbnb Newyork에 리스트 된 호스트 Top10</b>",
        font_size = 20,        
    ),
    
    xaxis = dict(
        title = "호스트명"
    ),
    
    yaxis = dict(
        title = "리스트 수"
    ),    
    
    template = "plotly_white"
)

fig.show()

June 이 에어비앤비 뉴욕에 가장 많이 리스트 되어 있습니다.

4-3 지역별로 가장 비싼방과 저렴한 방은?

# 지역별로 가장 비싼방 확인
# idxmax : 최대값을 가지는 index 출력

bnb_thr.loc[bnb_thr.groupby("neighbourhood_group")["price"].idxmax()][["name", "host_name", "neighbourhood_group", "price"]]

 

 

# 지역별로 가장 저렴한 방 확인
# idxmin : 최소값을 가지는 index 출력

bnb_thr.loc[bnb_thr.groupby("neighbourhood_group")["price"].idxmin()][["name", "host_name", "neighbourhood_group", "price"]]

4-4 뉴욕의 어느 지역이 가장 비쌀까?

fig = px.box(bnb_thr, x = "neighbourhood_group", y = "price",
                color = "neighbourhood_group")

fig.update_layout(
    showlegend = False,
    title = dict(
        text = "<b>뉴욕 지역별 Airbnb 가격</b>",
        font_size = 20
    ),
    
    xaxis = dict(
        title = "지역명"
    ),
    
    yaxis = dict(
        title = "가격"
    ),
    
    template = "plotly_white"
)

fig.show()

맨하탄 지역이 타 지역에 비해 상대적으로 가격이 높은편 입니다.

 4-5 지역별로 에어비앤비 타입이 다를까?

# 지역별 방 타입 수 확인

bnb_room_type = bnb_thr.groupby("neighbourhood_group")["room_type"].value_counts().unstack(0)

bnb_room_type

 

 

# 지역별 방 타입 수 시각화

layout = dict(
    title = dict(
        text = "<b>뉴욕 지역별 Airbnb 방 타입 수</b>",
        font_size = 20
    ),
    
    xaxis = dict(
        title = "방 타입"
    ),
    
    yaxis = dict(
        title = "합계"
    ),
    
    template = "plotly_white"
    
)

bnb_room_type.iplot(kind = "bar", layout = layout)

- Entire home/apt, Private room 이 뉴욕 에어비엔비 방의 대부분을 차지하고 있습니다.
- Entire home/apt 은 맨하탄에 가장 많고, Private room 은 브루클린에 가장 많이 있습니다.

4-6 리뷰가 가장 많은 방은?

# 뉴욕에서 리뷰가 가장 많은 방 top10 확인

#bnb_thr.loc[bnb_thr["reviews_per_month"].sort_values(ascending = False).index].head(10)
bnb_review_top10 = bnb_thr.nlargest(10, "reviews_per_month")
bnb_review_top10[["name", "host_name", "neighbourhood_group", "reviews_per_month"]]

뉴욕 에어비앤비에서 가장 리뷰가 많은 방은 [Lovely Young Apt Close to JFK & LGA] 으로 월 평균 157.06 개의 리뷰를 받았습니다.

4-7 위도와 경도로 지도 위에 위치 나타내기

# 지구명, 방 타입 위치 시각화

f, ax = plt.subplots(1, 2, figsize = (18, 10))

sns.scatterplot(data = bnb_thr, x = "longitude", y = "latitude", hue = "neighbourhood_group",
               palette = "bright", edgecolor = "black", linewidth = 0.3, ax = ax[0])

sns.scatterplot(data = bnb_thr, x = "longitude", y = "latitude", hue = "room_type",
               palette = "bright", edgecolor = "black", linewidth = 0.3, ax = ax[1])

plt.show()

5. Review

1) Airbnb 데이터는:  
   -> 총 데이터 개수:  516922  

   -> 총 결측치 수: 0 = 전체 데이터의 0.00%  

   -> 호스트 ID: 25679 개, 호스트 9003 명  
   -> 2021년 9월 기준 뉴욕 Airbnb 평균 금액: 169.19$

 

2) Airbnb 뉴욕의 금액대 분포는?  
   -> 뉴욕 Airbnb 금액은 대부분 200$ 아래에 분포해 있습니다.

3) 가장 많이 Airbnb에 리스트 된 호스트는?  
   -> June 이 에어비앤비 뉴욕에 가장 많이 리스트 되었습니다.
    
4) 지역별로 가장 비싼 방과 저렴한 방은?  
    -> 가장 비싼 방

 

   -> 가장 저렴한 방

         
5) 뉴욕의 어느 지역이 가장 비쌀까?  
   -> 맨하탄이 타 지역에 비해 가격이 상대적으로 높은 편입니다.

6) 지역별로 에어비앤비 타입이 다를까?  
   -> Entire home/apt, Private room 이 뉴욕 에어비엔비 방의 대부분을 차지하고 있습니다.
   -> Entire home/apt 은 맨하탄에 가장 많고, Private room 은 브루클린에 가장 많이 있습니다.

728x90