Pandas:绘图时忽略索引中的年份,但保留小时/天/月

2024-04-28 21:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据系列:

                     values
Date                              
2013-01-01 00:00:00            NaN
2013-01-01 01:00:00       0.041702
2013-01-01 02:00:00       0.042505
2013-01-01 03:00:00       0.030535
...
2020-12-30 21:00:00       0.525059
2020-12-30 22:00:00       0.249274
2020-12-30 23:00:00       0.024965     

我想:

  1. 滚动多年
  2. 在一周中的某一天将它们对齐
  3. 计算统计数据,比如8年数据中当天的平均值——是的,8分对于统计数据来说太少了。例如,点0将是每年第一个星期二00:00:00或2013-01-01 00:00:002014-01-07 00:00:002015-01-06 00:00:00等的平均值

绘制此图基本上会生成一个基于大约365个点估计值的单线图(忽略闰年和年末数据较少的天数)。我尝试从建议的透视表开始here,但失败惨重:

df_pv = pd.pivot_table(series.to_frame(), columns=series.index.year)

Exception has occurred: AttributeError 'Series' object has no attribute 'columns'

有什么想法吗


Tags: columns数据datehere绘制估计值nan建议
1条回答
网友
1楼 · 发布于 2024-04-28 21:29:55

这正是你写下的,只是一个groupby()而不是一个轴心

import datetime as dt
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=[10,6])

d = pd.date_range(dt.date(2013,1,1), dt.date(2021,1,1), freq="H")
df = pd.DataFrame({"Date":d,"values":np.random.uniform(0,1,len(d))})


l = df.groupby([df.Date.dt.dayofweek,df.Date.dt.isocalendar().week,df.Date.dt.time]).agg({"values":"mean"}).plot(ax=ax)
l = ax.set_xticklabels(ax.get_xticklabels(), rotation = 90)

enter image description here

相关问题 更多 >