Панды: морской граф из нескольких колонн - PullRequest
0 голосов
/ 06 июля 2018

У меня есть датафрейм с несколькими категориальными столбцами. Я знаю, как сделать countplot, который обычно строит ОДИН столбец. Вопрос: как построить максимальное количество столбцов из ВСЕХ в одном графике?

Вот примерная структура данных для уточнения вопроса:

import pandas as pd
import numpy as np
import seaborn as sns

testdf=pd.DataFrame(({   'Ahome' :   pd.Categorical(["home"]*10),
                         'Bsearch' : pd.Categorical(["search"]*8 + ["NO"]*2),
                          'Cbuy' : pd.Categorical(["buy"]*5 + ["NO"]*5),
                          'Dcheck' : pd.Categorical(["check"]*3 + ["NO"]*7),


                     } ))
testdf.head(10)
sns.countplot(data=testdf,x='Bsearch');

В последней строке просто используется нормальный график для одного столбца. Я хотел бы иметь категорию столбцов (дом, поиск, покупка и проверка) по оси X и их частоту по оси Y.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Как указывает @HarvIpan, используя melt, вы создадите длинный фрейм данных с именами столбцов в качестве записей. Вызов countplot на этом фрейме данных дает правильный график.

В отличие от существующего решения, я бы рекомендовал вообще не использовать аргумент hue.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df=pd.DataFrame(({   'Ahome' :   pd.Categorical(["home"]*10),
                         'Bsearch' : pd.Categorical(["search"]*8 + ["NO"]*2),
                          'Cbuy' : pd.Categorical(["buy"]*5 + ["NO"]*5),
                          'Dcheck' : pd.Categorical(["check"]*3 + ["NO"]*7),


                     } ))

df2 = df.melt(value_vars=df.columns)
df2 = df2[df2["value"] != "NO"]
sns.countplot(data=df2, x="variable")
plt.show()

enter image description here

0 голосов
/ 06 июля 2018

Вам нужно использовать countplot, как показано ниже:

df = pd.melt(testdf)
sns.countplot(data=df.loc[df['value']!="NO"], x='variable', hue='value')

Выход:

enter image description here

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