我希望能够可视化我一周中每天、一年中每周和每月的数据点。我能够可视化我每年的数据。但是当我调整每月和每周的代码时,x 轴仍然保持每年。
我有 8 年的住院记录。我的数据分为两列。第 1 列是我的“日期”列,从 2010 年 3 月 10 日开始到 2017 年 12 月 31 日结束。第 2 列是我的值列。此列列出了我是否有患者来接受治疗。第 2 列中的值为 0 或 x 数字。例如 0 意味着我没有病人 x 意味着我有 x 病人。当我尝试以图形方式表示此数据时,它只计算我每周拥有的最大 x 数。
df=pd.read_csv('Data 3.csv', parse_dates=["Dates"], index_col="Dates")
# create the plot space upon which to plot the data
fig, ax = plt.subplots(figsize = (10,10))
# add the x-axis and the y-axis to the plot
ax.plot(df.resample('Y').sum()['Total # Events'],color = 'blue')
# rotate tick labels
plt.setp(ax.get_xticklabels(), rotation=45)
# set title and labels for axes
ax.set(xlabel="Years",
ylabel="Total # of Events",
title="Yearly Treatment Events from 2010-2017");
所以我得到了正确的图形。但是,当我每月将 (df.resample('Y').sum() 从 ('Y') 更改为 ('M') 时,我会得到一个显示年度 X 轴和值的图表。我该如何更改这是为了获得每月 X 轴和每周 X 轴?
最佳答案
因此,正如我所假设的那样,鉴于日期可用,这很容易。
因此,首先创建新的列来表示日期所属的周、年和月。为此,您需要在读取 csv 时将日期设置为索引和 parse_dates:
data=pd.read_csv('Data 3.csv',index_col='Dates',parse_dates=True)
现在您可以创建三列:
data['Week']=data.index.week
data['Month']=data.index.month
data['Year']=data.index.year
这将为您提供如下数据:
Total # Events Week Year Month
Dates
2010-03-10 0 10 2010 3
2010-03-11 4 10 2010 3
2010-03-12 0 10 2010 3
2010-03-13 0 10 2010 3
2010-03-14 0 10 2010 3
2010-03-15 0 11 2010 3
2010-03-16 0 11 2010 3
2010-03-17 0 11 2010 3
2010-03-18 2 11 2010 3
2010-03-19 0 11 2010 3
我不会为您分享整个代码,我只会展示 Year 输出及其工作原理,其余的我希望您可以自己完成,否则您将无法学到任何东西。
所以下一步是:
Yearwise=data.groupby(by=('Year')).sum()['Total # Events']
就是这样,绘制它:
plt.figure(figsize=(14,10))
Yearwise.plot()
请记住,对于 Month wise,您需要将 Year 和 Month 放在一起进行分组,否则最终会将所有相同编号的月份组合在一起。我的意思是这样的-
by=('Year','Month'))
放心,我相信您可以自己解决。不过,如果您遇到错误,请告诉我。
关于python - 我有 8 年的每日数据。我想绘制一周中每天、一年中的每周和一年中的每个月的所有值。我怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045129/