python - 我有 8 年的每日数据。我想绘制一周中每天、一年中的每周和一年中的每个月的所有值。我怎么做?

标签 python pandas matplotlib data-visualization

我希望能够可视化我一周中每天、一年中每周和每月的数据点。我能够可视化我每年的数据。但是当我调整每月和每周的代码时,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");

Graph result

所以我得到了正确的图形。但是,当我每月将 (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()

你也分享了图表,是: enter image description here

请记住,对于 Month wise,您需要将 Year 和 Month 放在一起进行分组,否则最终会将所有相同编号的月份组合在一起。我的意思是这样的-

by=('Year','Month'))

放心,我相信您可以自己解决。不过,如果您遇到错误,请告诉我。

关于python - 我有 8 年的每日数据。我想绘制一周中每天、一年中的每周和一年中的每个月的所有值。我怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045129/

相关文章:

python - 从日期中减去 timedelta - pandas

python - ipython Pandas 类型错误 : read_csv() got an unexpected keyword argument 'delim-whitespace' '

python-2.7 - 如何将通过 "pandas.describe"获取的参数一次性放入一个图中?

python - 自动将 SVN 修订号导入程序

python - Django 在 DATABASES 中设置 TIME_ZONE 对 'date' 查找无效

Python - 使用 ctypes 将 imgdata 指针传递给 C 中的函数

python - 正则表达式 - 将子字符串与字符串匹配

python - 单个 matplotlib 图中的多个图

python - 在 Julia 中使用 PyPlot 会出现错误 : PyCall not properly installed

matplotlib - 对图像的 channel 进行切片并将 channel 存储到 numpy 数组中(与图像大小相同)。绘制 numpy 数组而不给出原始图像