Почему я получаю «Нет» в заголовке легенды при построении сводной таблицы? - PullRequest
2 голосов
/ 01 мая 2020

У меня есть датафрейм, а затем я вызываю метод pivot_table и затем отображаю результат.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'Date': ['2020-04-10', '2020-04-11', '2020-04-12', '2020-04-13','2020-04-10', '2020-04-11', '2020-04-12', '2020-04-13'],
'Station': ['Hogwarts', 'Hogwarts', 'Hogwarts', 'Hogwarts','Hogwarts', 'Hogwarts', 'Hogwarts', 'Hogwarts'],
'Direction': ['Southbound', 'Southbound', 'Southbound', 'Southbound','Northbound','Northbound','Northbound','Northbound'],
'Daily trains': [1,1,2,3,0,0,2,1]})

df['Date'] = pd.to_datetime(df['Date'],format="%Y-%m-%d")

df1 = df.pivot_table(index='Date', columns=['Station','Direction'],values=['Daily trains'])
fig, ax = plt.subplots(1)

df1.plot(ax=ax)
ax.figure.savefig('so.png',bbox_inches='tight')

Вот это результат:

enter image description here

Почему я получаю 'None' в названии легенды?

1 Ответ

3 голосов
/ 01 мая 2020

Он помечает имена столбцов.

df1.columns.names
#FrozenList([None, 'Station', 'Direction'])

Вы предоставляете list значений, но у вас есть только одно значение, поэтому он создает ненужный уровень в ваших столбцах MultiIndex. Удалить [].

...

df1 = df.pivot_table(index='Date', columns=['Station','Direction'], values='Daily trains')

fig, ax = plt.subplots(1)
df1.plot(ax=ax)

enter image description here


Если вам нужно повернуть несколько столбцов (например, values = ['Daily Trains', 'Daily Accidents']) и вы хотите построить их все, тогда вы все равно застряли с None для названия этого уровня. Вы можете переименовать его во что-то перед началом печати. ​​

df1.columns = df1.columns.rename('Category', level=0)
...