绘制年月日与重量的关系



链接到"堆栈溢出问题";我是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 "PycharmProjectshellopythonvenvlibsite-
packagespandasplotting_core.py", line 920, in call
elif not isinstance(data[x], ABCSeries):
File "PycharmProjectshellopythonvenvlibsite-packagespandascoreframe.py", line 3024, in getitem
indexer = self.columns.get_loc(key)
File "PycharmProjectshellopythonvenvlibsite-
packagespandascoreindexesbase.py", line 3082, in get_loc
raise KeyError(key) from err
KeyError: 'date'

两个选项

选项1

由于date是索引,所以我们不需要通过x和y轴来绘制。感谢@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')

最新更新