给定一个 .csv 文件,其中包含多个城市在特定日期的温度和湿度数据。您需要获取每个城市的平均值并将其显示在屏幕上。
我尝试按城市对数据进行分组并找出每个城市的平均值。但是当我尝试从新数据框中获取城市名称时,出现错误 KeyError: 'city' 。
我的程序代码:
import pandas as pd
import seaborn as sns
data = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/weather.csv")
grouped_data = data.groupby(["city"])[["temp", "hum"]].agg(["mean"])
print("Средняя температура и влажность для каждого города:")
for index, row in grouped_data.iterrows():
print(f"{row['city']}: {row['temp']['mean']} C, {row['hum']['mean']} %")
.csv 文件示例:
date,city,temp,hum
2023-01-01,Moscow,-5,80
2023-01-01,London,5,90
2023-01-01,New York,10,70
2023-01-02,Moscow,-4,75
2023-01-02,London,6,85
2023-01-02,New York,9,65
2023-01-03,Moscow,-3,70
2023-01-03,London,7,80
2023-01-03,New York,8,60
PS感谢所有回复的人。
就我而言,有必要使用index而不是row['city']或在输出之前使用,将其转换index为列.reset_index(inplace=True)。
另外,由于其中一条评论,我使用了.to_string()带有参数的方法formatters=,而不是带有输出的循环。这样更方便,而且由于对齐,输出看起来更好。
最终代码:
import pandas as pd
import seaborn as sns
data = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/weather.csv")
grouped_data = data.groupby("city")[["temp", "hum"]].agg(["mean"]).droplevel(1, axis=1)
grouped_data.reset_index(inplace=True)
print("Средняя температура и влажность для каждого города:")
print(grouped_data.to_string(formatters={"city": "{}:".format,
"temp": "{}°, ".format,
"hum": "{}%".format},
index=False,
header=False))