전처리가 끝난 데이터셋입니다. 630만개 정도 되는군요
seaborn을 이용해서 시각화 하면
라고 나오지만 , 우리는 수치를 보고 싶습니다
그래서 matplotlib 을 이용해보겠습니다
male 이용량이 많은 걸 볼 수 있네요. 380만 - 220만 인 160만 정도 이용량 차이네요
숫자로는 감이 잘 안오니 %로 확인해보겠습니다
코드는 다음과 같습니다. 왜 legend가 원하는 대로 우측상단에 안나오는지.. ㅜㅜ
get_bbox().bounds 를 이용해서 숫자가 표기될 위치와 형식을 지정해줬습니다
# legend=['Female','Male']
ax=sex.plot(kind='bar',rot=0,color=['crimson','royalblue'],figsize=(10,8)) #,labels=sex.index
for p in ax.patches:
left,bottom,width,height=p.get_bbox().bounds
ax.annotate('%d'%(height) , (left+width/2 ,height*1.02),ha='center',fontsize=20)
plt.sca(ax)
# plt.legend(legend,loc='upper left', bbox_to_anchor=(1,1),fontsize=20)
# plt.legend(legend,loc='lower right', prop={'size':20},bbox_to_anchor=(1,1))
plt.box(False)
plt.xticks(fontsize=20)
# plt.xlabel('성별',fontsize=20)
plt.title('남여 이용량', fontsize=30)
plt.show()
다음으로 파이모양으로 전체이용률 대비 해당하는 비율을 살펴보겠습니다.
한 눈에 차이가 쏙 들어오네요 . 전체대비 남성은 63% , 여성은 37% 입니다. 현저한 차이네요
plt.figure(figsize=(15,8))
plt.pie(sex,labels=sex.index,autopct='%.1f%%',colors=('crimson','royalblue'),textprops={'fontsize': 30},pctdistance=0.5)
# 표기방식에 %%를 해서 %까지 표기되게 하였고, pctdistance는 비율이 표시되는 거리(?) 입니다.
# 많은 파라미터가 있으니 한번씩 해보시면 재미있으실 겁니다
plt.title('남여 이용 비율',fontsize=30)
legend=['Female','Male']
plt.legend(legend,loc='upper left', bbox_to_anchor=(1,1),fontsize=20)
# plt.legend(loc=1,fontsize=20)
파이에는 다양한 파라미터들이 있으니 한번씩 손대보시면 입맛에 맞게 표기 하실 수 있습니다
다음으로 stack graph를 보겠습니다. #stacked graph , #누적그래프
저는 이런식으로 전처리해서 시각화를 하였습니다.
month=df.groupby(['month','성별'])['동'].count()
month_df=pd.DataFrame(month)
month_df=month_df.unstack()
month_df.columns=month_df.columns.droplevel()
month_df['sum']=month_df.sum(axis=1)
month_df['F(pct)']=month_df['F']/month_df['sum']
month_df['M(pct)']=month_df['M']/month_df['sum']
pct_month_df=month_df[['F(pct)','M(pct)']]
pct_month_df.index=np.arange(1,13,1)
pct_month_df
누적그래프 'bar' & 'barh' 로 해보겠습니다
우선 kind='bar' 먼저
legend=['Female','Male']
ax=pct_month_df.plot(kind='bar',stacked=True,rot=0,width=0.7,color=['crimson','royalblue'],figsize=(15,8))
for p in ax.patches:
left, bottom, width, height = p.get_bbox().bounds
ax.annotate("%.1f"%(height*100), xy=(left+width/2, bottom+height/2), ha='center', va='center',fontsize=20)
plt.sca(ax)
# ax.legend(loc=1)
plt.legend(legend,loc='lower right', prop={'size':20},bbox_to_anchor=(1,1))
# plt.legend(loc=1)
plt.box(False)
plt.title('월별 남녀 이용비율' , fontsize=30)
plt.xticks(fontsize=20)
plt.show()
아무래도 야외활동이다 보니 날씨나 기온에 영향을 받을 수 밖에 없는데요. 3월부터 11월까지는 여성의 이용률이 다소 상승합니다. 겨울인 12~2월 까지는 20% 대의 이용률인 반면, 다른계절에는 30% 이상으로 상승하는 걸 확인할 수 있습니다. 하지만 전체이용률 대비 어떻게 변하였는지 , 다른 변수의 영향은 어떤게 있는지 연결지어 생각해봐야 합니다.
한눈에 보기 편한 시각화 인 것 같습니다. 그래프의 색과 폰트는 가독성을 위해 취향대로 바꾸시는 걸 추천드립니다. 저는 만국공통 sign인 블루와 레드로 남성과 여성을 대표해봤습니다
다음으로 kind='barh' 입니다. 세로모양을 가로로 눕혔기 때문에 get_bbox()가 인지하셔야 합니다
# legend=['Female','Male']
ax=pct_month_df.plot(kind='barh',rot=0,stacked=True,figsize=(12,8),width=0.8,color=['crimson','royalblue']) #,labels=sex.index
for p in ax.patches:
left,bottom,width,height=p.get_bbox().bounds
ax.annotate('%.1f%%'%(width*100) , xy=(left+width/2 ,bottom+height/2),ha='center',va='center',fontsize=20)
plt.legend(legend,loc='upper left', prop={'size':20},bbox_to_anchor=(1,1))
plt.box(False)
plt.yticks(fontsize=20)
# plt.xlabel('성별',fontsize=20)
plt.title('월별 성별 이용량', fontsize=30)
plt.show()
전체이용량에서 월별 ,성별로 구분해서 각각의 비율을 보겠습니다
위에서 언급한대로, 남성여성 모두 겨울에는 이용량이 적고 6월에 남성여성 모두 최고이용률을 보이고 있네요
다음으로 연령대별로 분류해서 살펴보겠습니다
연령대는 10대이하, 20대, 30대, 40대, 50대, 60대이상 으로 분류하였습니다
다양하게 이용하고 있지만, 뭐라고 딱 인사이트를 뽑아내기는 어려운 것 같습니다
그래서 파이로 살펴보겠습니다
모두가 알듯이 20~30대 이용비율이 70%를 차지합니다. 의외로 나머지 연령대가 30%를
차지한다는게 좀 놀랍군요
많은 세그먼트들이 있으니 코드도 첨부하겠습니다. 위와 그렇게 다른 것은 없습니다
plt.figure(figsize=(18,12))
plt.pie(ag,labels=ag.index,autopct='%.1f%%',textprops={'fontsize': 35},pctdistance=0.6,explode =(0.4, 0.05, 0.05, 0.05, 0.05 ,0.4))
plt.title('연령대별 이용 비율',fontsize=30)
plt.legend(ag.index,loc='upper left', bbox_to_anchor=(1,1),fontsize=20)
# plt.legend(loc=1,fontsize=20)
아 이건 그렇게 보기 편하진 않지만 여러 개의 그룹군으로 stacked graph 를 해봤습니다
다음으로 연령대별 성별 이용률을 살펴보겠습니다
시각화된 그림으로 보자면 40대가 남성이용비율이 높고 20대가 여성 이용비율이 높습니다. 이것만으로 유의미한 분석을 할 수 없을 것 같습니다
다음으로 전체이용량대비 각각의 이용비율을 살펴보겠습니다.
이번에는 barh 스타일로 해봤습니다. 두개다 해보시고 편한걸로 하시면 되겠습니다. 이 factor로 했을 때는 bar스타일이 가독성이 좋은 것 같습니다.
전체이용량 대비 20대 남성이 12.7% 로 가장 많이 이용하고 10대여성과,60대여성이 제일 이용비율이 낮은 걸 확인 할 수 있습니다.
20대 여성의 이용비율도 매우 높습니다. 30대남성의 비율보다 높네요
다음으로 시간과 , 지역구 별 이용량을 살펴보겠습니다.
'빅데이터 > 따릉이' 카테고리의 다른 글
미세먼지,날씨 ,기온에 따른 이용량 EDA - 따릉이(4) (0) | 2020.04.04 |
---|---|
대여소위치별,이용시간에 따른 이용내역 EDA -따릉이(3) (0) | 2020.04.03 |
떠오르는 소형 모빌리티 [따릉이] -따릉이(1) (0) | 2020.03.26 |