繁体   English   中英

绘制年月日与体重

[英]ploting year-month-date vs weight

链接到“ Stackoverflow 问题” 我是 Python 的新手并尝试了链接中的程序但是,我收到以下错误,我在这里遗漏了什么吗? 你能指出我吗?

...................................

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
          'weight':[1, 2, 3, 4],
          'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
          })
df['date'] = pd.to_datetime(df['date'])

df1 = df.groupby(df['date'].dt.to_period('M')).sum()

df1 = df1.resample('M').asfreq().fillna(0)

plt.figure();

df1.plot(x='date', y='weight', kind='bar')


.......................................... Traceback (most recent call last):

File "/PycharmProjects/hellopython/hello_world", line 24, in

df1.plot(x='date', y='weight', kind='bar')
File "\PycharmProjects\hellopython\venv\lib\site-

packages\pandas\plotting_core.py", line 920, in call

elif not isinstance(data[x], ABCSeries):
File "\PycharmProjects\hellopython\venv\lib\site-packages\pandas\core\frame.py", line 3024, in getitem

indexer = self.columns.get_loc(key)
File "\PycharmProjects\hellopython\venv\lib\site-

packages\pandas\core\indexes\base.py", line 3082, in get_loc

raise KeyError(key) from err
KeyError: 'date'

两种选择

选项1

由于date是索引,所以我们不需要将 x 和 y 轴传递给 plot。 感谢@Nk03 提出这个选项。

在现有代码中修改以下行

df1.plot(kind='bar')

代码

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
          'weight':[1, 2, 3, 4],
          'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
          })
df['date'] = pd.to_datetime(df['date'])

df1 = df.groupby(df['date'].dt.to_period('M')).sum()

df1 = df1.resample('M').asfreq().fillna(0)

plt.figure();

df1.plot(kind='bar')

选项 2 - 重置索引

在现有代码中添加了以下行

df1 = df1.reset_index()

完整代码

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({
          'weight':[1, 2, 3, 4],
          'date':['2011-05-01', '2013-10-10', '2015-12-17', '2017-10-29']
          })
df['date'] = pd.to_datetime(df['date'])

df1 = df.groupby(df['date'].dt.to_period('M')).sum()

df1 = df1.resample('M').asfreq().fillna(0)
df1 = df1.reset_index()

plt.figure();

df1.plot(x='date', y='weight', kind='bar')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM