Pandas df.plot () KeyError Thrown - PullRequest
       2

Pandas df.plot () KeyError Thrown

0 голосов
/ 01 октября 2018

БОЛЬШОЕ РЕДАКТИРОВАНИЕ: Эта ошибка не сработает, если я удалю index_col = 1 из функции read_csv.Оставляя этот вопрос, потому что мне любопытно, почему это происходит.

У меня есть следующий 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'

Я в замешательстве, потому что мой индекс называется «Отдел», так почему бы мне выкинуть эту ошибку?Использование 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()

1 Ответ

0 голосов
/ 01 октября 2018
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()

enter image description here

Производственный участок:

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

API построения графиков данных

В случае:

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()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...