链接到"堆栈溢出问题";我是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')