Pandas - Построение диаграммы с разбивкой по стеклу

Я пытаюсь создать столбчатую гистограмму, которая реплицирует изображение, все мои данные отделены от этой таблицы Excel.

enter image description here

Я не могу понять, как сделать тактику данных для нее, как показано на рисунке, и не могу понять, как сделать сложную гистограмму. Все примеры, в которых я нахожу работу по-разному, относятся к тому, что я пытаюсь создать.

Мой dataframe представляет собой csv всех значений, суженных до следующего с помощью pandas dataframe.

      Site Name    Abuse/NFF
0    NORTH ACTON       ABUSE
1    WASHINGTON         -
2    WASHINGTON        NFF
3    BELFAST            -
4    CROYDON            - 

Мне удалось подсчитать данные с итогами и получить индивидуальные подсчеты для каждого сайта, я просто не могу совместить его с графиком.

Было бы очень полезно, если бы вы убедились в руководстве.

Завершенный код, большое спасибо за помощь.

test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)

test5.plot(kind='bar', stacked=True)

Ответы

Ответ 1

Вы получаете ошибки или просто не знаете, с чего начать?

%pylab inline
import pandas as pd
import matplotlib.pyplot as plt

df2 = df.groupby(['Name', 'Abuse/NFF'])['Name'].count().unstack('Abuse/NFF').fillna(0)
df2[['abuse','nff']].plot(kind='bar', stacked=True)

stacked bar plot

Ответ 2

Это должно помочь

df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)

Ответ 3

Может быть, вы можете использовать функцию кросс-таблицы панды

test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf[''Abuse/NFF''])

test5.plot(kind='bar', stacked=True)

Ответ 4

Если вы хотите изменить размер графика, используйте arg figsize

df.groupby(['NFF', 'ABUSE']).size().unstack()
      .plot(kind='bar', stacked=True, figsize=(15, 5))