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