Python - Создание диаграммы с несколькими столбцами для информационного кадра - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть datafarme, и я хотел бы создать несколько баров.

По сути, я создал таблицу ниже после того, как запустил код:

company = df.groupby('country').status.value_counts()
company
country       status   
DNK           operating    186
              acquired      13
              closed        10
FIN           operating    171
              acquired      11
              closed         8
ISL           operating     14
              closed         2
NOR           operating     85
              acquired       6
              closed         6
SWE           operating    277
              closed        18
              acquired      12

Я попытался создать диаграмму с несколькими столбцами, в которой каждая страна группирует 3 значения статуса. Каждый статус представляет цвет бара (рабочий = синий, приобретенный = зеленый, закрытый = красный). Однако я получаю либо ошибку, либо все они имеют один цвет. Диаграмма должна быть такой же, как на рисунке ниже:

image sample for multiple bars chart

Я новичок и надеюсь, что вы поможете мне с этим.

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы можете использовать seaborn:

import seaborn as sns
sns.set()

sns.catplot(x="country", y="value", hue="status", kind="bar", data=company)

Здесь value будет именем столбца вашего числового столбца. И вам, возможно, придется сначала заполнить столбец страны, чтобы ваш DataFrame выглядел следующим образом:

country       status       value
DNK           operating    186
DNK           acquired      13
DNK           closed        10
FIN           operating    171
FIN           acquired      11
FIN           closed         8
ISL           operating     14
ISL           closed         2
NOR           operating     85
NOR           acquired       6
NOR           closed         6
SWE           operating    277
SWE           closed        18
SWE           acquired      12

Тогда он должен работать:

barplot

0 голосов
/ 08 апреля 2020

Исходя из окончательного вывода @Arne, в основном мне нужно присвоить value для вывода status.value_counts(), чтобы получить график без ошибок, добавив reset_index(name='value') к коду.

company = df.groupby('country').status.value_counts().reset_index(name='value')

company
    country    status       counts
0   DNK        operating    186
1   DNK        acquired     13
2   DNK        closed       10
3   FIN        operating    171
4   FIN        acquired     11
5   FIN        closed       8
6   ISL        operating    14
7   ISL        closed       2
8   NOR        operating    85
9   NOR        acquired     6
10  NOR        closed       6
11  SWE        operating    277
12  SWE        closed       18
13  SWE        acquired     12

Затем я продолжаю с тем же кодом, который предложил @Arne:

import seaborn as sns
sns.set()

sns.catplot(x="country", y="value", hue="status", kind="bar", data=company)

Вывод получился такой же, как у диаграммы @ Arne.

Спасибо @Arne!

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