WARNING: 非严谨气相数据分析,旨在表达数据分析过程,结论仍是看看就好,更严谨的信息请查阅专业的气相资料。python
10月份的北京,仿佛酷热的夏季戛然而止,而后变成了春夏秋冬随机播放的模式,与往年不一样的是今年不少人都在说“今年比去年冷多了”。 以前网络上就在传受拉尼娜现象的影响,今年会是个冷冬,彷佛你们早已将今年的冬天和冷关联在了一块儿。 那问题就来了,今年的冷是真冷仍是“冷冬”给你们的心理暗示?git
为了搞清楚这个问题,我想到了我以前写的天气数据爬虫,当时我是为了学习fbprophet,而后就写了用fbprophet预测北京将来一个月的气温一文,刚好收集到的近10年北京天气数据还能用,那咱们就来经过历史数据来对比下今年是否是更冷。全部相关代码我都已上传至个人Github仓库 weather-analysis,抓取到的数据见data.csv。github
这里我用了python的matplotlib和pandas作数据处理和图像绘制,完整数据和代码见我github bj_oct_temp_analysis.ipynb。网络
# coding: utf-8 # 分析北京10月份的气温数据 import matplotlib.pyplot as plt import pandas as pd # 数据预处理 data = pd.read_csv("data.csv") data.head() # 把年月日拆成新的3列数据,方便后续处理和绘图 data['yyyy'] = data['date'].apply(lambda x : x.split("-")[0]) data['mm'] = data['date'].apply(lambda x : x.split("-")[1]) data['dd'] = data['date'].apply(lambda x : x.split("-")[2])
# 绘制日最高温度数据 plt.figure(figsize=(12, 6)) plt.title('oct_max_temp') plt.xlabel('date') plt.ylabel('maxTemp') for year in range(2011, 2020): curData = data[(data['yyyy'] == str(year)) & (data['mm'] == '10')] plt.plot(curData['dd'], curData['maxT'], color='gray') # 计算11-19年10月的均值 meanData = data[(data['mm'] == '10') & (data['yyyy'] < '2020')].groupby('dd').mean() meanData['maxT'].head() plt.plot(meanData['maxT'], linewidth=2.0, color='blue', label='mean') # 绘制2020年10月的数据 year20 = data[(data['yyyy'] == '2020') & (data['mm'] == '10')] plt.plot(year20['dd'], year20['maxT'], linewidth=2.0, color='red', label='2020') plt.legend() plt.show()
从北京历年10月的的最高气温来看,今年10月的日最高温度仍是停留在比较正常的水平,固然这也说明不了今年更冷或者更热。咱们来看看日均最低气温的数据,仍是一样的绘制方法,只须要换下数据列便可。app
# 和上面同样,只是这里绘制最低温度的数据 plt.figure(figsize=(12, 6)) plt.title('oct_min_temp') plt.xlabel('date') plt.ylabel('minTemp') for year in range(2011, 2020): curData = data[(data['yyyy'] == str(year)) & (data['mm'] == '10')] plt.plot(curData['dd'], curData['minT'], color='gray') # 计算11-19年10月的均值 meanData = data[(data['mm'] == '10') & (data['yyyy'] < '2020')].groupby('dd').mean() plt.plot(meanData['minT'], linewidth=2.0, color='blue', label='mean') year20 = data[(data['yyyy'] == '2020') & (data['mm'] == '10')] plt.plot(year20['dd'], year20['minT'], linewidth=2.0, color='red', label='2020') plt.legend() plt.show()
这里很明显今年确实比以往更冷,甚至有几天创下了近10年的最低温度记录,并且大多很多天子温度都低于过去9年的平均值,看来冷冬的传闻是真的。学习
一样,咱们来看看9月北京的数据。
能够看的出来9月仍是比较正常的,也就是说这个冷冬是从10月才开始的,那等到下个月月底,咱们再来看11月份的数据,看看冷冬是否是纸老虎。.net
最后斗胆预测下将来一个月的最高和最低温度走势,详见fbprophet_temp_predict.ipynb
3d
冷冬不是空穴来风,各位旁友们今年仍是要作好保暖和防御措施啊! btw: 我后来有用一样的方式看了下大连的数据(详见dl_oct_temp_analysis.ipynb),结果发现大连并无比以往更冷,但大连的旁友们仍是在抱怨今年冷,我……code
本文来自https://blog.csdn.net/xindooblog