Python3抓取并分析天气数据

|本文转载至知乎ID:Charles(白露未晞)知乎个人专栏|
|下载W3Cschool手机App,0基础随时随地学编程>>戳此了解|

导语

利用Python“简单地”抓取并分析一下天气数据。

T_T翻了翻公众号之前文章。。。

很少有把重点放在数据可视化分析上。。。

所以算是填补一下之前的空白吧~~~

Let's Go!

相关文件

文件下载链接: 

https://pan.baidu.com/s/1dxoxhdu3sqAcNDUKFub0Xg 

密码: jc52

开发工具

Python版本:3.6.4

相关模块:PIL模块;requests模块;pyecharts模块;以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

额外说明:

pyecharts模块安装时请依次执行以下命令:

pip install 

echarts-countries-pypkg

pip install 

echarts-china-provinces-pypkg

pip install 

echarts-china-cities-pypkg

pip install 

pyecharts

若安装过程中出现:

'utf-8'codec can't decode byte 0xb6

或者类似的编码错误提示。

可尝试修改Python安装文件夹下如下图所示路径下的__init__.py
文件的第75行代码:

Python3抓取并分析天气数据

修改为下图所示内容:

Python3抓取并分析天气数据

主要思路

利用国家气象局和百度天气查询API接口来获取当前天气数据,主要包括温度、湿度、气压等。

获取相关数据之后利用pyecharts模块和PIL模块对数据进行可视化分析。

具体实现过程详见源代码。

结果展示

使用:

在cmd窗口中运行analysis.py
文件即可。

要画什么图把对应的函数调用注释去掉就好啦:

Python3抓取并分析天气数据

结果:

(打开相关文件中的html文件查看效果更佳,到处点一点有惊喜~~~)

(1)全国部分城市空气质量

Python3抓取并分析天气数据

(2)天气预报简图

Python3抓取并分析天气数据

(3)部分城市气温柱状图

Python3抓取并分析天气数据

(4)部分城市气温折线图

Python3抓取并分析天气数据

(5)部分城市相对气压饼图

Python3抓取并分析天气数据

(6)部分城市气温分布图

Python3抓取并分析天气数据

(7)北京城市湿度

Python3抓取并分析天气数据

(8)南京天气信息雷达图

Python3抓取并分析天气数据

有些是为了画图而画图了,所以看起来逻辑很怪T_T

更多

代码截止2018-04-08测试无误。

Echarts作为百度开源的一个数据可视化 JS 库,功能还是十分强大的,有兴趣的朋友可以尝试去绘制一些其他有趣的图表。

Python数据可视化–折线图–柱状图

Python数据可视化--折线图--柱状图


安装必要的模块

Windows用户安装四个模块:

  1. python_dateutil

  2. pyparsing

  3. Numpy

  4. matplotlib

安装Python模块参考下文:

Python遇上剪切板

模块的基本使用

from matplotlib
import pyplot

import random

x = list(range(0,100))

y = [random.randint(0,100) for r in range(0,100)]

fig1 = pyplot.figure()#初始化一个空白画布

pyplot.plot(x, y, ‘-‘)#生成一个折线图,X轴,Y轴,图形样式

pyplot.title(‘First Plot – Random integers’)

pyplot.xlabel(‘X Axis’)

pyplot.ylabel(‘Y Axis’)

pyplot.show()

|

生成的图片见下图:

Python数据可视化--折线图--柱状图

生成的随机数折线图

结合CSV文件生成图形

CSV文件如下图:

Python数据可视化--折线图--柱状图

csv 数据

该数据可以由Arduino生成,参考下文:

Python与arduino文件IO操作简介


该例子将生成两个图片,一个是折线图一个是柱状图,代码如下:

import csv

from matplotlib
import pyplot

num = 

[]

btnValues = 

[]

potValues = 

[]

with open(‘Arduino_data.csv’, ‘r’) as f:

 

 

reader = csv.reader(f)

 

 

header = next(reader, None)#读取第一行标题

 

 

for row in reader:

 

 

 

 

num.append(int(row[0]))#序列

 

 

 

 

potValues.append(float(row[1]))#电位计数据列

 

 

 

 

btnValues.append(int(row[2]))#按钮数据列

pyplot.subplot(2, 1, 1)##三个参数的意思是:整个图表分为2行1列,该子图表位于第一行

pyplot.plot(num, potValues, ‘-‘)#生成折线图

pyplot.title(‘Line plot – ‘ + header[1])

pyplot.xlim([1, 30])

pyplot.xlabel(‘X Axis’)

pyplot.ylabel(‘Y Axis’)

pyplot.subplot(2, 1, 2)#三个参数的意思是:整个图表分为2行1列,该子图表位于第二行

pyplot.bar(num, btnValues)#生成柱状图

pyplot.title(‘Bar chart – ‘ + header[2])

pyplot.xlim([1, 30])#x轴坐标范围

pyplot.xlabel(‘X Axis’)

pyplot.ylabel(‘Y Axis’)

pyplot.tight_layout()#下面有比较

pyplot.show()

|

Python数据可视化--折线图--柱状图

有pyplot.tight_layout()语句

Python数据可视化--折线图--柱状图

pyplot.tight_layout()语句

喜欢文章,欢迎大家转发!!!

|