【发布时间】:2025-11-29 18:45:01
【问题描述】:
我有一个日期格式如下的 df:yyyy-mm-dd
我导入了数据并使用 parse-dates 将其作为日期时间对象读入:
df1 = pd.read_csv(file1, encoding="utf-8", sep=',', parse_dates=['Date'])
我想找到最高和最低温度并绘制它们。
我很接近。
我正在让基本绘图(现在只是最大和最小线)工作如下:
df1["str_dates"] = df1["Date"].astype({'Date': 'str'})
str_dates_temp = df1.groupby("Date")["str_dates"].unique().to_list()
str_dates = [''.join(x) for x in str_dates_temp]
df1 = df1.sort_values(by="Date", ascending=True)
print(df1.head(), '\n')
print(df1.tail(), '\n')
grouped_max_list = df1.groupby("Date")["Data_Value"].max().to_list()
grouped_min_list = df1.groupby("Date")["Data_Value"].min().to_list()
fig, axe = plt.subplots(figsize=(16, 8), facecolor='1.0')
axe.set_facecolor("1.0")
plt.plot(str_dates, grouped_max_list, color='blue')
plt.plot(str_dates, grouped_min_list, color='salmon')
plt.show()
问题是 df 按日期排序。这意味着数据按年、月、日从左到右显示。
所以我得到 2005 年 1 月、2005 年 2 月、2005 年 3 月 ... 2005 年 12 月、2006 年 1 月、2006 年 2 月、2006 年 3 月 ... 2006 年 12 月,等等。
我希望将所有月份分组以用于绘图。
所以我希望 df 排序如下: 2005 年 1 月、2006 年 1 月、2007 年 1 月、... 2014 年 1 月、2005 年 2 月、2006 年 2 月、2007 年 2 月、... 2014 年 2 月,依此类推。
如果数据按月份分组,则\应该如下所示:
我不确定如何调整排序以达到预期的结果。
我想要的只是排序方面的帮助。没有别的了。
【问题讨论】:
-
您正在使用
str_dates进行绘图。这意味着 matplotlib 只能将它们解释为单词,并试图按字典顺序对它们进行排序。您应该以日期时间格式传递它们 -
@Henry Ecker,我按日期时间列(“日期”)排序。我想使用该列调整排序,以按月进行分组\排序。我的排序需要“增强”。
-
是的,我明白了。我只是澄清 matplotlib 自己进行排序以定位其轴。无论您在 DataFrame 中的数据顺序如何,轴最终都会由您的图形库决定。
标签: python-3.x pandas sorting datetime