3tw*_*zzy 5 python data-visualization matplotlib pandas
我希望能够将我的数据点可视化为一周中的每一天、一年中的每一周和每月。我能够每年可视化我的数据。但是当我调整每月和每周的代码时,x 轴仍然是每年。
我有8年的住院记录。我的数据被组织成 2 列。第 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");
Run Code Online (Sandbox Code Playgroud)
所以我得到了正确的图形。但是,当我将每月的 (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)
Run Code Online (Sandbox Code Playgroud)
现在您可以创建三列:
data['Week']=data.index.week
data['Month']=data.index.month
data['Year']=data.index.year
Run Code Online (Sandbox Code Playgroud)
这将为您提供如下数据:
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
Run Code Online (Sandbox Code Playgroud)
我不会为您分享整个代码,而只会显示 Year 输出及其工作原理,其余的我希望您可以自己完成,否则您将不会以这种方式学到任何东西。
所以下一步是:
Yearwise=data.groupby(by=('Year')).sum()['Total # Events']
Run Code Online (Sandbox Code Playgroud)
就是这样,绘制它:
plt.figure(figsize=(14,10))
Yearwise.plot()
Run Code Online (Sandbox Code Playgroud)
请记住,对于月份而言,您需要将年份和月份一起进行分组,否则最终会将所有相同编号的月份分组在一起。我的意思是这样的——
by=('Year','Month'))
Run Code Online (Sandbox Code Playgroud)
休息一下,我相信您可以自己解决。不过,如果您遇到错误,请告诉我。
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |