前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
開運張 | 作者
知乎專欄 | 來源
https://zhuanlan.zhihu.com/p/55642042
三個步驟:
- 確定問題,選擇圖形
- 轉換資料,應用函式
- 引數設定,一目了然
首先對時段進行分析
- 第一步
提出問題:租賃總量對應濕度的變化趨勢
適合圖形:因為濕度屬于連續性數值變數,我們可以選擇折線圖反應變化趨勢
- 第二步
轉換資料:我們需要一個二維資料框,按照溫度變化排序,取對應的三個租賃數的平均值
應用函式:直接應用plt的plot函式即可完成折線圖
workingday_df = Bikedata[Bikedata['workingday']==1]#t
workingday_df = workingday_df.groupby(['hour'],as_index=True).agg({'count':'mean','registered':'mean','casual':'mean'})
nworkingday_df = Bikedata[Bikedata['workingday']==0]
nworkingday_df = nworkingday_df.groupby(['hour'],as_index=True).agg({'count':'mean','registered':'mean','casual':'mean'})
nworkingday_df.head()
- 第三步:設定引數
figure,axes = plt.subplots(1,2,sharey=True)#設定一個1*2的畫布,且共享y軸
workingday_df.plot(figsize=(15,5),title='The average number of rentals initiated per hour in the working day',ax=axes[0])
nworkingday_df.plot(figsize=(15,5),title='The average number of rentals initiated per hour in the nworking day',ax=axes[1])
<matplotlib.axes._subplots.AxesSubplot at 0xe452940>
可以看出:
- 在作業日,會員出行對應兩個很明顯的早晚高峰期,并且在中午會有一個小的高峰,可能對應中午外出就餐需求;
- 作業日非會員用戶出行高峰大概在下午三點;
- 作業榷訓員出行次數遠多于非會員用戶;
- 在周末,總體出行趨勢一致,大部分用車發生在11-5點這段時間,早上五點為用車之最,
對溫度進行分析
- 第一步
提出問題:租賃總量對應濕度的變化趨勢
適合圖形:因為濕度屬于連續性數值變數,我們可以選擇折線圖反應變化趨勢
- 第二步
轉換資料:我們需要一個二維資料框,按照溫度變化排序,取對應的三個租賃數的平均值
應用函式:直接應用plt的plot函式即可完成折線圖
- 第三步
引數設定:只需要設定折線圖的標題,其他引數默認
temp_df = Bikedata.groupby(['temp'],as_index='True').agg({'count':'mean','registered':'mean','casual':'mean'})
temp_df.plot(title = 'The average number of rentals initiated per hour changes with the temperature')
<matplotlib.axes._subplots.AxesSubplot at 0xe57d7f0>
- 隨著溫度的升高,租賃數量呈上升趨勢;
- 在溫度達到35度時,因天氣炎熱,總體數量開始下降;
- 在溫度在4度時,租賃數達到最低點;
濕度對租賃數量的影響
- 第一步
提出問題:租賃總量對應濕度的變化趨勢
適合圖形:因為濕度屬于連續性數值變數,我們可以選擇折線圖反應變化趨勢
- 第二步
轉換資料:我們需要一個二維資料框,按照溫度變化排序,取對應的三個租賃數的平均值
應用函式:直接應用plt的plot函式即可完成折線圖
- 第三步
引數設定:只需要設定折線圖的標題,其他引數默認
humidity_df = Bikedata.groupby(['humidity'],as_index=True).agg({'count':'mean','registered':'mean','casual':'mean'})
humidity_df.plot(title='Average number of rentals initiated per hour in different humidity')
<matplotlib.axes._subplots.AxesSubplot at 0xe582400>
可以觀察到在濕度20左右租賃數量迅速達到高峰值,此后緩慢遞減,
年份,月份和季節作圖方法類似,都采用折線圖繪制,這里省略,
查看不同天氣對出行情況的影響
- 第一步
提出問題:租賃總量對應濕度的變化趨勢
適合圖形:因為天氣情況屬于數值型分類變數,我們可以選擇柱形圖觀察數量分布
- 第二步
轉換資料:我們需要一個二維資料框,按照天氣情況對租賃數量取平均值
應用函式:應用plt的plot.bar函式繪制組合柱形圖
- 第三步
引數設定:只需要設定折線圖的標題,其他引數默認
weather_df = Bikedata.groupby(['weather'],as_index=True).agg({'registered':'mean','casual':'mean'})
weather_df.plot.bar(stacked=True,title='Average number of rentals initiated per hour in different weather')
<matplotlib.axes._subplots.AxesSubplot at 0xe7e0a90>
觀察到天氣等級為4時,平均出行人數比天氣等級為2是還要高,這不符合常理
我們查看一下天氣等級為4的詳細情況
count_weather = Bikedata.groupby('weather')
count_weather[['casual','registered','count']].count()
天氣狀況為4級的只有一天,我們把資料列印出來查看一下
Bikedata[Bikedata['weather']==4]
時間為作業日的下午六點鐘,屬于晚高峰例外資料,不具有代表性,
會員用戶和臨時用戶在整體用戶中占比
- 第一步
提出問題:查看會員用戶和臨時用戶在整體用戶中的比例
適合圖形:查看占比,適合用餅圖pie
- 第二步
轉換資料:需要一個二維資料框,按天數取兩種用戶的平均值
應用函式:應用plt的plot.pie函式繪制餅圖
- 第三步
引數設定:這是資料標簽和類別標簽
#考慮到相同日期是否作業日,星期幾,以及所屬年份等資訊是一樣的,把租賃資料按天求和,其它日期類資料取平均值
day_df = Bikedata.groupby(['date'], as_index=False).agg({'casual':'sum','registered':'sum','count':'sum', 'workingday':'mean','weekday':'mean','holiday':'mean','year':'mean'})
day_df.head()
#按天取兩種型別用戶平均值
number_pei=day_df[['casual','registered']].mean()
number_pei
casual 517.411765
registered 2171.067031
dtype: float64
#繪制餅圖
plt.axes(aspect='equal')
plt.pie(number_pei, labels=['casual','registered'], autopct='%1.1f%%', pctdistance=0.6 , labeldistance=1.05 , radius=1 )
plt.title('Casual or registered in the total lease')
Text(0.5,1,'Casual or registered in the total lease')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20959.html
標籤:Python
