下面是关于“python小程序基于Jupyter实现天气查询的方法”的完整攻略。
1. 准备工作
在开始代码之前,我们需要准备以下材料:
- Python 3.x版本的环境(推荐使用anaconda)
- Jupyter软件
- requests, json, 和 pandas等相关库
2. 获取天气数据
使用requests库与天气API交互以获取天气信息。
这里我们用的API是http://www.weather.com.cn/data/sk/101010100.html
使用requests库向该网址发送GET请求,得到JSON格式的天气信息数据。
import requests
import json
response = requests.get('http://www.weather.com.cn/data/sk/101010100.html')
data = json.loads(response.text)
print(data)
解析数据,通过键获取其相关信息。
city_name = data['weatherinfo']['city']
temperature = data['weatherinfo']['temp']
humidity = data['weatherinfo']['SD']
wind_direction = data['weatherinfo']['WD']
wind_power = data['weatherinfo']['WS']
3. 输出天气信息
输出获取到的天气信息,描述当前天气状况。
print(f"{city_name}当前天气:\n温度:{temperature}℃\n湿度:{humidity}\n风向:{wind_direction}\n风力:{wind_power}")
4. 针对多个城市查询天气
我们可以使用pandas库的DataFrame对象将数据进行整理。这里我们将一个列表中的城市转化为一个DataFrame对象,方便之后进行天气查询。
import pandas as pd
# 将城市数据转化为DataFrame对象
city_list = ['北京', '上海', '广州', '深圳']
df = pd.DataFrame(city_list, columns=['城市'])
print(df)
输出结果为:
城市 | |
---|---|
0 | 北京 |
1 | 上海 |
2 | 广州 |
3 | 深圳 |
5. 查询多个城市的天气
结合第2步和第4步,我们可以写出以下代码块,完成针对多个城市的天气查询。
import requests
import json
import pandas as pd
# 将城市数据转化为DataFrame对象
city_list = ['北京', '上海', '广州', '深圳']
df = pd.DataFrame(city_list, columns=['城市'])
# 查询每个城市的天气,并将结果添加到DataFrame对象中
for i in range(len(df)):
city_name = df.iloc[i][0]
response = requests.get(f"http://wthrcdn.etouch.cn/weather_mini?city={city_name}")
data = json.loads(response.text)
temperature = data['data']['wendu']
weather = data['data']['forecast'][0]['type']
df.loc[i, '温度'] = temperature
df.loc[i, '天气状况'] = weather
print(df)
输出的结果为:
城市 | 温度 | 天气状况 | |
---|---|---|---|
0 | 北京 | 12℃ | 小雨 |
1 | 上海 | 17℃ | 小雨 |
2 | 广州 | 20℃ | 阵雨 |
3 | 深圳 | 21℃ | 多云 |
示例
以下是两个示例,在jupyter notebook中运行(前提是已经安装必要的库)。第一个示例为查询单个城市的天气;第二个示例是查询多个城市的天气。
# 安装需要的库,执行1次就可以
!pip install requests pandas
# 示例1 - 查询单个城市的天气
import requests
import json
# 按照城市名称查询天气
city_name = '北京'
response = requests.get(f"http://wthrcdn.etouch.cn/weather_mini?city={city_name}")
data = json.loads(response.text)
temperature = data['data']['wendu']
weather = data['data']['forecast'][0]['type']
# 输出天气数据
print(f"{city_name}当前天气情况:\n温度:{temperature}℃\n天气状况:{weather}")
# 示例2 - 查询多个城市的天气
import requests
import json
import pandas as pd
# 将城市数据转化为DataFrame对象
city_list = ['北京', '上海', '广州']
df = pd.DataFrame(city_list, columns=['城市'])
# 查询每个城市的天气,并将结果添加到DataFrame对象中
for i in range(len(df)):
city_name = df.iloc[i][0]
response = requests.get(f"http://wthrcdn.etouch.cn/weather_mini?city={city_name}")
data = json.loads(response.text)
temperature = data['data']['wendu']
weather = data['data']['forecast'][0]['type']
df.loc[i, '温度'] = temperature
df.loc[i, '天气状况'] = weather
print(df)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python小程序基于Jupyter实现天气查询的方法 - Python技术站