這個進階作業有幾位同學已經分析得挺詳盡。之前把作業時間估計得有些樂觀,實際做的過程中略微去探索一些新的問題作業的主線就時間不夠了,內容比較少。
有感觸數據分析人員如果對于所分析數據的業務背景和數據含義有更好地認識,個人認為最后的描述結果有更大概率能發現有實際意義的規律或特征,更好地指導工作。怎么在實際企業工作中讓數據中的發現和真正的運營手段結合更緊密是這個職業的一個關鍵問題。
進階作業天氣數據分析
- 使用本課所學的方法,在Jupyter Notebook中分析天氣數據weatherdata.csv
運行環境
- Jupyter Notobook 5.0.0
- Python 3.6.1
數據導入和初步觀察
# 導入pandas模塊
import pandas as pd
# 魔術關鍵字設置直接顯示圖片
%matplotlib inline
weather_data = pd.read_csv('G:\Dropbox\data-analysis\weatherdata.csv', parse_dates=True , index_col='Date')
weather_data
weatherdata.csv對應的DataFrame
數據是某地2013年整年的天氣數據,包含華氏溫度,濕度,氣壓(校準到海平面高度是為了排除高度對氣壓的影響,單位是英寸汞柱。海平面標準大氣壓是29.92英寸汞柱,即我們的760毫米汞柱),可見度,風速,云量和天氣事件。
weather_data.describe()
天氣DataFrame的描述性結果
對華氏溫度我們比較沒有直觀感覺,加入攝氏溫度
weather_data['TemperatureC'] = ( weather_data['TemperatureF'] - 32 ) * 5 / 9
weather_data.describe()
加入攝氏溫度后的描述性結果
weather_data.TemperatureC.plot(title='Celsius Temperature in 2013', figsize=(20, 6))
2013年攝氏溫度時間序列圖
可以看到全年最低溫能達到-10度以下,而最高溫未超過27度,基本也就6至8月在20至25度之間。從我自己的常識來估計,該地區在北半球溫帶地區。如果氣候類型和中國差異不大,相當于緯度在黃河以北,吉林以南。
weather_data['Events'].value_counts(dropna=False).plot(title='Climate Events Distribution 2013', kind='pie', autopct='%1.1f%%', figsize=(8, 8))
2013年氣候事件分布
weather_data.resample('W').mean().plot(y=['TemperatureF','Humidity'], kind='bar', secondary_y=['Humidity'], mark_right=False, figsize=(20, 8))
華氏溫度與濕度周均值序列圖
weather_data.resample('W').mean().plot(y=['WindSpeedMPH','Humidity'], kind='bar', secondary_y=['Humidity'], mark_right=False, figsize=(20, 8))
風速與濕度周均值序列圖
有一定比例的雨雪霧氣候。有限時間內做圖肉眼觀察覺得濕度和溫度或風速沒有太大的相關性,一年大多數時間濕度都不低。就4,5月份有那么幾周濕度能在60%以下。這個地區的潮濕和季風應該關系不大,不是靠湖就是靠海。
本來有想法多分析一些數據和嘗試一些新的方法,比如X軸時間變量的格式變化。在有限的時間內覺得練習有所收獲,還是先發文吧。
疑問
- Jupyter Notobook能直接把運行結果保存或導出為圖片嗎?pnjoe的完整的weatherdata.csv生成的DataFrame的結果截圖是用外部的截圖工具做的嗎?
- 如果老師發現我的Python語句有什么錯誤或可以優化的地方,分析的角度和方式有什么可以優化的地方,都歡迎提出。
- 做圖要學的地方還不少。坐標軸中Timestamp變量的顯示格式在制作圖表的工作里也經常調整。現在還沒找到一個高效的方法。除了導入或制作索引前即改變其格式,改變格式的函數還未來得及找到并嘗試。