2021年11月6日晚,北京2021年的第一场冬雪降临,似乎比以往时候都要来得更早一些。
今天我们用Python采集北京历史天气数据,来看看今年的冬雪是不是真的来得更早一些呢?
其实,并不是每年北京的冬天都有下雪。比如去年也就是2020年的冬季就没有下雪。
今年(2021年的冬雪是在11月6日),过去10年的第1场冬雪时间表如下:
我们能够正常的看到,过去10年里有3个年头并没有冬雪,大部分年份的第1场冬雪都是在11月下旬及之后才出现。相比之下,2015年和2012年的第1场冬雪来的时间相对更早一些(仅1日)是11月5日。不过吧,今年的这个雪属于大雪了,要比往年的都要大很多,更有下雪的味道!
截止2021年10月31日共有304天,基于这304天的天气数据,我们大家可以看到:
合计有223天多云和晴天,占比超过73%;阴天和雾霾天有55天,占比约为18%;下雨天有24天,占比约为8%。
从每日最冷气温来看,7月的最冷气温也属于全年度最高,而1月的最冷气温可低到-20摄氏度,简直了。。
选定月份后,URL地址栏的URL会变化,比如2021年10月在URL地址栏里是,在URL最后的202110就是变化的规律所在。
确定的URL规律后,我们再看看怎么解析出数据,我这里直接采用的是xpath方法哈,整体完整代码各位参考如下即可(修改地址即可,北京是beijing,其他城市的大家打开网页自己看即可,很简单)。
数据处理部分我们用到的也是pandas,以下将从处理思路和办法来进行简单讲解,原始数据你们可以通过第三部分的数据采集爬虫代码运行获取。
通过观察采集下来的数据,我们大家可以发现日期字段中带有星期信息,最高的最冷气温中带有摄氏度符号,天气中存在雨夹雪等字眼。
df[日期].str.split( ,expand=True,n=1)
我们看这个数据info发现各字段基本都不是我们想要的类型,比如日期字段、最高最冷气温期望是int类型等等。于是,我们应该进行相关数据类型转换啦。
snowData[snowData[月份]=9].groupby(年份).first().reset_index()