////////
Search
Duplicate

유쥔_예약가능일수 및 리뷰 수 1 이상.

Tags
Archive
ETA
Main Task
Sub Task
담당자
메모
상태
Done
생성 일시
2025/07/11 07:33
우선 순위
진행률 %
Task :
# 대도시별 예약 가능 날짜 수 통계 계산
import pandas as pd # 대도시별 예약 가능 날짜 수 통계 계산 availability_stats = df.groupby('neighbourhood_group')['availability_365'].agg( 숙소수='count', 평균예약가능일수=lambda x: round(x.mean(), 1), 최소예약가능일수='min', 최대예약가능일수='max' ).reset_index() # 컬럼명 보기 좋게 변경 availability_stats.columns = ['neighbourhood_group', '숙소 수', '평균 예약 가능 일수', '최소 예약 가능 일수', '최대 예약 가능 일수'] # 결과 확인 print(availability_stats)
Python
복사
대도시별 예약 가능 날짜 수 통계 계산
import pandas as pd import matplotlib.pyplot as plt # 대도시별 예약 가능 날짜 수 통계 계산 availability_stats = df.groupby('neighbourhood_group')['availability_365'].agg( 숙소수='count', 평균예약가능일수=lambda x: round(x.mean(), 1), 최소예약가능일수='min', 최대예약가능일수='max' ).reset_index() # 시각화 plt.figure(figsize=(10, 6)) bars = plt.bar(availability_stats['neighbourhood_group'], availability_stats['평균예약가능일수']) # 막대 위에 수치 라벨 표시 for bar, value in zip(bars, availability_stats['평균예약가능일수']): plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 2, f'{value}', ha='center', va='bottom') plt.title('📅 대도시별 평균 예약 가능 일수') plt.xlabel('대도시 (neighbourhood_group)') plt.ylabel('평균 예약 가능 일수') plt.ylim(0, availability_stats['평균예약가능일수'].max() + 20) plt.tight_layout() plt.show()
Python
복사
대도시 별 방 타입 별 예약 가능 날짜 수 통계 계산
# 대도시별 방타입별 예약 가능 날짜 수 통계 계산 availability_stats_by_room = df.groupby(['neighbourhood_group', 'room_type'])['availability_365'].agg( 숙소수='count', 평균예약가능일수='mean', 최소예약가능일수='min', 최대예약가능일수='max' ).reset_index() # 소수점 1자리로 반올림 availability_stats_by_room['평균예약가능일수'] = availability_stats_by_room['평균예약가능일수'].round(1) # 시각화 plt.figure(figsize=(14, 7)) sns.barplot( data=availability_stats_by_room, x='neighbourhood_group', y='평균예약가능일수', hue='room_type' ) # 수치 표시 for i, bar in enumerate(plt.gca().containers): plt.bar_label(bar, fmt='%.1f', label_type='edge', fontsize=9) plt.title('🏙️ 대도시별 방타입별 평균 예약 가능 일수') plt.xlabel('대도시 (neighbourhood_group)') plt.ylabel('평균 예약 가능 일수 (availability_365)') plt.xticks(rotation=45) plt.legend(title='방 타입') plt.tight_layout() plt.show()
Python
복사
박스플롯 시각화: 대도시 별 예약 가능 일수 분포
# 박스플롯 시각화: 대도시별 예약 가능 일수 분포 plt.figure(figsize=(12, 6)) sns.boxplot(x='neighbourhood_group', y='availability_365', data=df) plt.title('📦 대도시별 예약 가능 일수 분포 (Boxplot)') plt.xlabel('대도시 (neighbourhood_group)') plt.ylabel('예약 가능 일수 (availability_365)') plt.ylim(0, df['availability_365'].max() * 1.05) plt.xticks(rotation=45) plt.tight_layout() plt.show()
Python
복사
리뷰 수 1 이상일 때 데이터 확인
# 리뷰 수가 1 이상인 숙소만 필터링
# 리뷰 수가 1 이상인 숙소만 필터링 df_reviews = df[df['number_of_reviews'] > 0] # 리뷰 수 관련 통계 계산 review_summary = { "총 숙소 수": len(df_reviews), "리뷰 수 평균": round(df_reviews["number_of_reviews"].mean(), 1), "리뷰 수 중간값": df_reviews["number_of_reviews"].median(), "리뷰 수 최솟값": df_reviews["number_of_reviews"].min(), "리뷰 수 최댓값": df_reviews["number_of_reviews"].max(), "상위 25% 기준값": df_reviews["number_of_reviews"].quantile(0.75), "하위 25% 기준값": df_reviews["number_of_reviews"].quantile(0.25) } # 딕셔너리를 DataFrame으로 변환 review_summary_df = pd.DataFrame(list(review_summary.items()), columns=["지표", "값"]) review_summary_df
Python
복사
지표
0
총 숙소 수
1
리뷰 수 평균
2
리뷰 수 중간값
3
리뷰 수 최솟값
4
리뷰 수 최댓값
5
상위 25% 기준값
6
하위 25% 기준값
결과