Как построить pandas .DataFrame.plot.bar () с этими странными столбцами в моем pandas кадре данных? - PullRequest
2 голосов
/ 14 февраля 2020

В настоящее время у меня есть этот фрейм данных, который выглядит следующим образом:

enter image description here

В настоящее время я пытаюсь построить график, который сгруппирован в такой way:

  • Для каждого соответствующего year_of_assessment я хочу построить тип return_type, который должен быть представлен в 3 отличительных цветах. И каждый год_от_оценки будет отображаться в строке

Однако я попытался построить черновую диаграмму, и в результате я получил: enter image description here

Ниже приведен код, который я пытался использовать для построения гистограммы:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# import the csv file
dataname = 'Datasets\\filing-of-tax-returns-for-individual-income-tax-and-corporate-income-tax.csv'
data = pd.read_csv(dataname,na_values=['na'])
df = pd.DataFrame(data)

# drop the NaN values
df2 = df.dropna()

# drop the rows that include values for individual income tax as it is irrelevent
df2 = df2[df2.tax_type != 'Individual Income Tax']
df2

# drop the column tax_type as we alr filter out to be a corporate income tax
df3 = df2.drop(columns = 'tax_type')
df3

# draw the bar chart to see the respectiive return_type for each respective year
df3.plot.bar(x='year_of_assessment',rot=0,figsize=(40,20))
plt.show()

Отказ от ответственности: мне сказали не использовать matplotlib для построения графика.

1 Ответ

1 голос
/ 14 февраля 2020

Вы можете построить эту диаграмму, используя Pandas 'plot(), просто переставив данные внутри Pandas перед построением графика.

Просто поверните данные, чтобы года оценки становятся индексом, а возвращаемые типы становятся столбцами.

Вы можете сделать это с помощью простой операции:

df4 = df3.pivot_table(
    index=['year_of_assessment'], 
    columns=['return_type'],
)

На этом этапе простой df4.plot.bar() будет делать то, что вы хочу.

Вы можете сделать его немного лучше, отрегулировав метки оси, легенды и заголовка, но это в основном косметические настройки c на данный момент:

ax = df4.plot.bar()
ax.legend(labels=df4.columns.levels[1])
ax.set_xlabel('Year of Assessment')
ax.set_title('Returns Received On Time')
plt.show()

Вот пример график, который я получил с небольшой выборкой данных, которая похожа на ту, что вы поделились:

Plot Sample

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