iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

商業數據分析應用系列 第 16

[Day 16] 資料視覺化(II)-seaborn/matplotlib

  • 分享至 

  • xImage
  •  

Today's Goal

其他視覺化圖片完成:
1.月份與有效次數之關係
2.會員/非會員與騎乘長短關聯
3.時間與距離之關係

月份與有效次數之關係 (Line Chart)

先將1月到3月單獨切割成一欄後,再做計算次數。

#切割字串欄位為月份以利計算
L1=[]
for i in df1['started_at']:
    j=i.split('-')
    L1.append(j[1])
L2=[]
for i in L1:
    j=i.split('0')
    L2.append(int(j[1]))

df1.insert(15,column='month',value=L2)

https://ithelp.ithome.com.tw/upload/images/20220918/20143863A9QnN3uBFC.png

可以看到多了一個欄位!接著來作圖。

plt.figure(dpi=300) #圖片解析度設定
plt.style.use('ggplot') #灰階背景

y=[sum(df1[mask_5]['month']==1),
   sum(df1[mask_5]['month']==2),
   sum(df1[mask_5]['month']==3)]
x=['Jan 2020','Feb 2020','Mar 2020']
ax = sns.lineplot(x=x, y=y) #lineplot為折線圖
ax.set_title('Ride record counts of months')

https://ithelp.ithome.com.tw/upload/images/20220919/20143863mOCk3xM4fG.png
但是這樣的設定會讓數值看起來好像落差很大,會誤導觀看者(畢竟第一時間的直覺會是看圖片為主,不會先注意到軸的間距),於是再加上一行來調整間距大小。

ax.set_yticks(ticks=[125000,130000,135000,140000,145000])

https://ithelp.ithome.com.tw/upload/images/20220919/201438633jT9baskuJ.png

會員/非會員與騎乘長短關聯 (stacked bar chart & pie chart)

想說用堆疊長條圖來看一下不同時間長短的會員跟非會員人數,但忘記前面有計算過大多數使用者的時間都是落在一小時內(短程),所以y軸刻度的部分會讓三者看起來落差極大、不易觀察:

plt.figure(dpi=300)

member=[sum(df1[mask&mask_1]['member_casual']=='member'),
        sum(df1[mask_2&mask_3]['member_casual']=='member'),
        sum(df1[mask_4]['member_casual']=='member')]
casual=[sum(df1[mask&mask_1]['member_casual']=='casual'),
        sum(df1[mask_2&mask_3]['member_casual']=='casual'),
        sum(df1[mask_4]['member_casual']=='casual')]

x=['Short','Middle','Long']

ax=sns.barplot(x=x,y=member,color='#61b8d8')
ax=sns.barplot(x=x,y=casual,color='#d58e96')
ax.set_title('member or casual(by ride time)')

https://ithelp.ithome.com.tw/upload/images/20220919/20143863rM2ehLEFaS.png
可以說是看不出任何東西XD

於是分別用圓餅圖來看一下會員/非會員比例,原本預想應該是租借愈久、會員比例愈高(可視為對於品牌的信任?),結果出乎意料!
https://ithelp.ithome.com.tw/upload/images/20220919/201438636g7ihA7S9y.png

https://ithelp.ithome.com.tw/upload/images/20220919/20143863CRQ3MLrqnI.png

https://ithelp.ithome.com.tw/upload/images/20220919/20143863OX5MCCrvu9.png

程式碼附上!

#short
plt.figure(dpi=300)

short=[member[0],casual[0]]
seperate=[0,0.08]
plt.pie(short,labels=['member','casual'],colors=['#61b8d8','#d58e96'],autopct='%1.1f%%',explode=seperate)
plt.axis('equal')
plt.title('Ride Time(Short)')
plt.show()

#middle
plt.figure(dpi=300)

middle=[member[1],casual[1]]
seperate=[0,0.08]
ax=plt.pie(middle,labels=['member','casual'],colors=['#61b8d8','#d58e96'],autopct='%1.1f%%',explode=seperate)
plt.axis('equal')
plt.title('Ride Time(Middle)')
plt.show()

#long
plt.figure(dpi=300)

long=[member[2],casual[2]]
seperate=[0,0.04]
ax=plt.pie(long,labels=['member','casual'],colors=['#61b8d8','#d58e96'],autopct='%1.1f%%',explode=seperate)
plt.axis('equal')
plt.title('Ride Time(Long)')
plt.show()

剩下一項與時間距離有關的(散點圖),留到Day17來呈現/images/emoticon/emoticon08.gif


上一篇
[Day15] 資料視覺化(I)-seaborn/matplotlib
下一篇
[Day17] 資料視覺化(III)-seaborn/matplotlib
系列文
商業數據分析應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言