大编辑:如果我从read_csv函数中删除index_col = 1,则不会抛出此错误。留下这个问题是因为我很好奇为什么会这样。
我有以下CSV文件:
Agency Division Expenditures ($000,000)
NYPD OPERATIONS 3331
NYPD EXECUTIVE MANAGEMENT 489.4
NYPD SCHOOL SAFETY 279.6
NYPD ADMINISTRATION-PERSONNEL 263.9
当我用以下方式绘制此图时
data.plot(x='Division',y='Expenditures ($000,000)')
我被抛出:
KeyError: 'Division'
我很困惑,因为我的索引名为“ Division”,所以为什么会引发此错误?使用data.plot(kind ='bar')给了我一个合理的图,但是在按键调用此列时遇到了问题。
下面的完整代码:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
NYPD_data = "D:/CSVs/NYPD_Spending.csv"
data = pd.read_csv(NYPD_data, index_col = 1)
plt.figure(1, figsize=(10,10))
plt.xlabel('NYPD Division')
data.plot(x='Division', y='Expenditures ($000,000)')
plt.show()
答案 0 :(得分:0)
data = {'Agency': {0: 'NYPD', 1: 'NYPD', 2: 'NYPD', 3: 'NYPD'},
'Division': {0: 'OPERATIONS',
1: 'EXECUTIVE MANAGEMENT',
2: 'SCHOOL SAFETY',
3: 'ADMINISTRATION-PERSONNEL'},
'Expenditures ($000,000)': {0: 3331.0, 1: 489.4, 2: 279.6, 3: 263.9}}
df = pd.DataFrame.from_dict(data)
plt.figure(figsize=(10, 10))
plt.plot(df['Division'], df['Expenditures ($000,000)'])
plt.xticks(rotation='30')
plt.xlabel('NYPD Division')
plt.show()
生成图:
df.plot('Division', 'Expenditures ($000,000)')
df.plot(x='Division', y='Expenditures ($000,000)')
不起作用:
df.plot(x=df['Division'], y=['Expenditures ($000,000)'])
这不起作用,因为df.plot
已经指定了源。 x
和y
应该分别为x : label or position, default None
和y : label, position or list of label, positions, default None
。因此,问题是以错误的形式将参数发送给方法。 pandas.DataFrame.plot
在以下情况下:
df = pd.read_csv('Book1.csv', index_col=1)
df =
Agency Expenditures ($000,000)
Division
OPERATIONS NYPD 3331.0
EXECUTIVE MANAGEMENT NYPD 489.4
SCHOOL SAFETY NYPD 279.6
ADMINISTRATION-PERSONNEL NYPD 263.9
请注意,Division
现在是索引,不再是列,因此使用x = 'Division'
将不起作用。
df.plot()