今年是冷冬?我爬了北京10年的气温,哟 还真是!

简介: 今年是冷冬?我爬了北京10年的气温,哟 还真是!

WARNING: 非严谨气相数据分析,旨在表达数据分析过程,结论还是看看就好,更严谨的信息请查阅专业的气相资料。

10月份的北京,仿佛酷热的夏季戛然而止,然后变成了春夏秋冬随机播放的模式,与往年不同的是今年很多人都在说“今年比去年冷多了”。 之前网络上就在传受拉尼娜现象的影响,今年会是个冷冬,似乎大家早已将今年的冬天和关联在了一起。 那问题就来了,今年的冷是真冷还是“冷冬”给大家的心理暗示?

为了搞清楚这个问题,我想到了我之前写的天气数据爬虫,当时我是为了学习fbprophet,然后就写了用fbprophet预测北京未来一个月的气温一文,恰好收集到的近10年北京天气数据还能用,那我们就来通过历史数据来对比下今年是不是更冷。所有相关代码我都已上传至我的Github仓库 weather-analysis,抓取到的数据见data.csv

数据分析

这里我用了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月的日最高温度还是停留在比较正常的水平,当然这也说明不了今年更冷或者更热。我们来看看日均最低气温的数据,还是同样的绘制方法,只需要换下数据列即可。

复制

# 和上面一样,只是这里绘制最低温度的数据 
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月北京的数据。

可以看的出来9月还是比较正常的,也就是说这个冷冬是从10月才开始的,那等到下个月月底,我们再来看11月份的数据,看看冷冬是不是纸老虎。

结语

最后斗胆预测下未来一个月的最高和最低温度走势,详见fbprophet_temp_predict.ipynb

冷冬不是空穴来风,各位旁友们今年还是要做好保暖和防护措施啊! btw: 我后来有用同样的方式看了下大连的数据(详见dl_oct_temp_analysis.ipynb),结果发现大连并没有比以往更冷,但大连的旁友们还是在抱怨今年冷,我……

目录
相关文章
|
4月前
|
机器学习/深度学习 数据采集 算法
重庆二手房数据爬取与分析实现
本文通过逻辑回归模型对重庆二手房市场数据进行爬取、分析和预测,研究了影响房价的关键变量特征,并提供了数据清洗、可视化和建模的详细步骤,旨在为投资者提供准确的市场趋势预测和投资建议。
重庆二手房数据爬取与分析实现
|
数据采集 API Python
用fbprophet预测北京未来一个月的气温
fbprophet是facebook开源的时序数据预测包,提供了简洁的python和R api,可以对时序数据做一些预测,也提供了有些简单的趋势分析。更多细节可以看下官方文档。官方doc中给了一个数据集作为prophet的入门,这里我也只是按照官方的入门文档编写了的代码,很简单,只是把数据集换成了北京这8年来的每日温度数据,温度数我从网上爬取的,爬虫源码和数据可以从我github上找到。
130 0
|
数据采集 Python
使用 lxml 爬取四川省各城市天气预报
使用 lxml 爬取四川省各城市天气预报
203 1
使用 lxml 爬取四川省各城市天气预报
|
前端开发 Java 数据挖掘
2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)
2021年北京积分落户名单公布了,手痒痒就写了一段Java代码,运行了两个多小时,终于到了所有数据,如下截图:
354 0
2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)
|
人工智能 算法 计算机视觉
杭州萧山机场使用阿里云ET航空大脑 ,人证安检只用3秒、一月揪出5人
目前机场已全面引入阿里云ET航空大脑,25个国内安检通道全部上线人脸识别技术,人脸判断准确率超99.6%,旅客身份甄别速度提升3倍以上。上线一个多月来,已经成功“揪”出5名冒用身份证的旅客。
4885 0
经合组织:疫情下,英美等发达国家GDP跌幅将超25%
据经合组织(OECD)估计,疫情至少将让发达国家的经济萎缩15%。法国、德国、意大利、西班牙、英国和美国的GDP跌幅将超过25%。