其他視覺化圖片完成:
1.月份與有效次數之關係
2.會員/非會員與騎乘長短關聯
3.時間與距離之關係
先將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)
可以看到多了一個欄位!接著來作圖。
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')
但是這樣的設定會讓數值看起來好像落差很大,會誤導觀看者(畢竟第一時間的直覺會是看圖片為主,不會先注意到軸的間距),於是再加上一行來調整間距大小。
ax.set_yticks(ticks=[125000,130000,135000,140000,145000])
想說用堆疊長條圖來看一下不同時間長短的會員跟非會員人數,但忘記前面有計算過大多數使用者的時間都是落在一小時內(短程),所以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)')
可以說是看不出任何東西XD
於是分別用圓餅圖來看一下會員/非會員比例,原本預想應該是租借愈久、會員比例愈高(可視為對於品牌的信任?),結果出乎意料!
程式碼附上!
#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來呈現