用Python第三方库:imageio,NumPy,pandas,Matplotlib, jieba,写一个抓取城市某年某季度的天气数据的Python的代码。通过代码的分析与统计,使数据可视化,要对代码进行分析与讲解
时间: 2024-03-30 19:34:15 浏览: 27
好的,很高兴回答您的问题。首先,我们需要了解一下这些库的作用:
- imageio: 用于读取和写入各种图像文件格式,包括动画图像。
- NumPy: Python科学计算的基础包,用于处理大量数组数据。
- pandas: 用于数据分析、处理和操作的Python库。
- Matplotlib: 用于绘制高质量的图形、图表、图像的Python库。
- jieba: 中文分词库,可以将中文文本切分成单词。
接下来,我们可以使用这些库编写一个程序,来抓取城市某年某季度的天气数据,并进行分析与可视化。代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import jieba
import requests
import re
from io import BytesIO
import imageio
# 设置城市和时间
city = '上海'
year = 2021
quarter = 2
# 爬取数据
url = f'http://tianqi.2345.com/t/wea_history/js/{city}/{year}/{quarter}.js'
response = requests.get(url)
text = response.content.decode('gbk')
# 正则表达式匹配
pattern = re.compile(r'(\d{4}-\d{2}-\d{2})\|(\d{1,2})\|(\d{1,2})\|(\d{1,3})\|(\d{1,3})\|(\D+)\n')
result = pattern.findall(text)
# 数据整理
data = pd.DataFrame(result, columns=['日期', '最高温度', '最低温度', '空气质量指数', '风力等级', '天气'])
data[['最高温度', '最低温度', '空气质量指数', '风力等级']] = data[['最高温度', '最低温度', '空气质量指数', '风力等级']].astype(int)
data['日期'] = pd.to_datetime(data['日期'])
# 可视化分析
# 统计天气情况
weather_count = data['天气'].value_counts()
weather_count = weather_count[:10]
# 分词统计
seg_list = jieba.cut(' '.join(data['天气'].tolist()))
words = {}
for word in seg_list:
if len(word) < 2:
continue
if word in words:
words[word] += 1
else:
words[word] = 1
# 绘制柱状图和词云图
plt.figure(figsize=(10, 5))
plt.bar(weather_count.index, weather_count.values)
plt.title(f'{city}{year}年第{quarter}季度天气情况')
plt.xlabel('天气')
plt.ylabel('次数')
plt.savefig('weather_bar.png')
wordcloud = pd.DataFrame(list(words.items()), columns=['word', 'count'])
mask_image = imageio.imread('cloud_mask.png')
wordcloud.plot(kind='scatter', x='count', y='count', alpha=0.5, s=300, cmap='Reds', figsize=(10, 5))
for i in range(len(wordcloud)):
plt.text(wordcloud.iloc[i]['count'], wordcloud.iloc[i]['count'], wordcloud.iloc[i]['word'], ha='center', va='center', fontproperties='SimHei')
plt.axis('off')
plt.imshow(mask_image, cmap=plt.cm.gray, interpolation='bilinear')
plt.savefig('weather_wordcloud.png')
```
我们的代码使用了requests库来获取页面内容,使用了正则表达式来提取数据,使用了pandas库进行数据整理,使用了jieba库来分词,使用了Matplotlib库来绘制柱状图和词云图,并使用了imageio库来处理图片。
在程序运行完成后,我们可以得到两张图片:一张是柱状图,用于表示天气情况的统计;另一张是词云图,用于表示天气情况的分词统计。
这个程序可以帮助我们更好地了解城市在某一季度的天气情况,并且可以通过可视化的方式进行数据分析,使得数据更加直观、易于理解。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)