python获取多个地区当天的数据及未来四十天的数据并将单个城市保存为csv文件
时间: 2024-03-22 17:37:27 浏览: 14
好的,我可以为您提供一些Python代码来获取多个地区的天气数据并将其保存为CSV文件。
首先,您需要安装一个名为`pandas`的Python库,如果您还没有安装它,可以通过运行以下命令来进行安装:
```
pip install pandas
```
接下来,您需要使用一个名为`requests`的Python库来从一个名为OpenWeatherMap的天气API中获取天气数据。同样,如果您还没有安装它,可以通过运行以下命令来进行安装:
```
pip install requests
```
在这里,我将使用一个名为`cities.csv`的CSV文件,其中包含多个城市的名称和ID。您可以根据自己的需要替换它。
接下来是Python代码:
```python
import pandas as pd
import requests
# 读取城市和ID的CSV文件
cities_df = pd.read_csv("cities.csv")
# 创建一个空的DataFrame,用于存储所有城市的天气数据
all_data = pd.DataFrame()
# 循环遍历每个城市,并获取其天气数据
for index, row in cities_df.iterrows():
city_id = row["id"]
city_name = row["name"]
api_url = f"https://api.openweathermap.org/data/2.5/forecast?id={city_id}&appid=<YOUR_API_KEY>&units=metric"
response = requests.get(api_url)
data = response.json()
# 获取当天和未来四十天的天气数据
daily_data = data["list"][:41]
# 将数据转换为DataFrame
city_data = pd.DataFrame.from_records(daily_data)
# 添加城市名称列
city_data["city"] = city_name
# 将数据添加到所有数据中
all_data = all_data.append(city_data, ignore_index=True)
# 将所有数据保存到CSV文件中
all_data.to_csv("all_cities_weather.csv", index=False)
# 循环遍历每个城市,并将其天气数据保存到单独的CSV文件中
for city_name in cities_df["name"]:
city_data = all_data[all_data["city"] == city_name]
file_name = f"{city_name}_weather.csv"
city_data.to_csv(file_name, index=False)
```
在这段代码中,我们首先读取城市和ID的CSV文件`cities.csv`,并创建一个空的DataFrame`all_data`,用于存储所有城市的天气数据。
然后,我们循环遍历每个城市,并使用OpenWeatherMap API获取其天气数据。我们使用`response.json()`将响应转换为Python字典,并从中获取当天和未来四十天的天气数据。
然后,我们将数据转换为DataFrame,并添加一个名为`city`的列,其中包含城市名称。最后,我们将数据添加到所有数据中。
一旦我们获取了所有城市的天气数据并将其保存到`all_data`中,我们可以使用`to_csv()`方法将所有数据保存到CSV文件`all_cities_weather.csv`中。
接下来,我们循环遍历每个城市,并使用`all_data` DataFrame中的数据筛选出每个城市的天气数据。然后,我们使用城市名称作为文件名,将数据保存到单独的CSV文件中。
希望这可以帮助您获取多个地区的天气数据并将其保存为CSV文件。