并未发于微信公众号 DongTalks …… 但还是欢迎关注 DongTalks ,让我们一起聊聊个人成长、职场、电影、音乐、运动等话题。
本帐号所有文章均为原创。文章可以随意转载,但请务必注明作者。如果觉得文章有用,欢迎转发朋友圈分享。
1. 背景
解密大数据社群第一次作业,分析某地一年的天气情况。
2. 环境
Python 3,根据课程要求用 Jupyter。
3. 分析
3.1 观察
用 pandas 的 read_csv 功能读入数据文件,自动生成 DataFrame,方便的不要不要的。
csvfile = open('weatherdata.csv', 'r')
wdata = pd.read_csv(csvfile, parse_dates=True, index_col='Date')
用 wdata.describe()
先对数据有个整体概念。虽说数据分析以数据为主,但数据也要靠人来观察。
- | TemperatureF | Humidity | SeaLevelPressureIn | VisibilityMiles | WindSpeedMPH | CloudCover |
---|---|---|---|---|---|---|
count | 365.000000 | 365.000000 | 365.000000 | 365.000000 | 365.000000 | 365.000000 |
mean | 51.693151 | 71.178082 | 30.062027 | 8.402740 | 7.219178 | 4.191781 |
std | 18.164513 | 13.646380 | 0.186156 | 1.961019 | 3.300211 | 2.647088 |
min | 9.000000 | 34.000000 | 29.450000 | 1.000000 | 1.000000 | 0.000000 |
25% | 34.000000 | 63.000000 | 29.930000 | 7.000000 | 5.000000 | 2.000000 |
50% | 55.000000 | 72.000000 | 30.070000 | 9.000000 | 7.000000 | 4.000000 |
75% | 68.000000 | 82.000000 | 30.180000 | 10.000000 | 9.000000 | 6.000000 |
max | 80.000000 | 97.000000 | 30.600000 | 10.000000 | 21.000000 | 8.000000 |
一堆数字,能看懂个 count 是365,好吧这是一年的数据;mean 平均值,但对这个数据有什么用我一直搞不懂。平均值掩盖了很多真正有价值的信息。比如某地年平均气温 10°,感觉气候宜人是不?但要么热的要死到达40°,要么冷的要死-40°,这种平均值又能说明什么问题?
剩下最大最小以及中间一些分位之类,看数字没啥感觉。以前迷恋数字,现在开始迷恋数据可视化。那就继续走起。
3.2 图表
先看看温度。数据估计来自老美,用的还是华氏度,没感觉,于是换成摄氏度。
wdata['TemperatureC'] = (wdata['TemperatureF'] - 32)/1.8
wdata.plot(y='TemperatureC')
结果如下
TemperatureC.png貌似气温波动挺大啊。对,看看温差怎样。
wdata['TemperatureDiff'] = wdata.TemperatureC - wdata.TemperatureC.shift(1)
wdata.plot(y='TemperatureDiff')
TemperatureDiff.png
呃,前后两天温度变化在10~15度之间,还真是大啊。这个地方的人民生活不怎么幸福啊。
其他湿度啥的,都可以用类似的方法观察。我对刮风下雨之类倒是更感兴趣一些,比如统计一下有多少种天气,各种一年中有几天之类,但翻了半天pandas的文档没有找到合适的方法。哎,等进一步课程吧……
Buy-me-beer.jpg
DongTalks.jpg