我希望能够可视化一周中的每一天,一年中的每一周以及每月的数据点。我每年都能看到我的数据。但是,当我调整“每月”和“每周”的代码时,x轴仍保持为每年。
我有8年的住院记录。我的数据分为两列。第1列是我的“日期”列,从2010-03-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");
Graph result
所以我得到了正确的图形。但是,当我每月将(df.resample('Y')。sum()从('Y')更改为('M')时,会得到一个显示每年X轴和值的图表。如何更改这样可以获得每月X轴和每周X轴?
最佳答案
因此,正如我所假设的,鉴于有可用的日期,这很容易。
因此,首先创建一个新列来表示日期属于哪个星期,年和月。为此,您需要在读取csv时将Dates设置为index和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()
您也共享的图是:
请记住,就月份而言,您将需要将“年”和“月”组合在一起进行分组,否则最终会将所有相同编号的月份组合在一起。我的意思是这样的-
by=('Year','Month'))
休息,我敢肯定,您可以自己解决这个问题。不过,如果您遇到错误,请告诉我。
关于python - 我有8年的每日数据。我想绘制一周中的每一天,一年中的每一周以及一年中的每月所有值。我怎么做?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54045129/