panda dataframe визуализирует процент различных значений категориального столбца в разных бинах числового столбца - PullRequest
1 голос
/ 27 апреля 2020

У меня есть pandas фрейм данных с двумя столбцами col1 и class. class является двоичным. Я хочу построить гистограмму и визуализировать процент каждого из значений class в разных столбцах столбца col1. Вот мои попытки:

1- Две гистограммы, по одной для каждого значения столбца class:

df.col1[df.class == 0].hist()

enter image description here

df.col1[df.class == 1].hist()

enter image description here

2- Объедините их все (два значения класса) в один график

df.groupby('class').col1.hist(alpha=0.9)

enter image description here

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

df.groupby('class').col1.transform(lambda x: x/sum(x)).hist(alpha=0.9)

enter image description here

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

1 Ответ

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

Поскольку количество элементов в классе сильно разбалансировано, невозможно иметь оба графика в одних и тех же осях Y для гистограмм. Если оба предложения имеют одинаковое распределение среди значений, которые вы можете использовать distplots для выполнения некоторой нормализации данных:

uniques = df['class'].unique()
targets = [df.col1[df['class'] == val] for val in uniques]

for target in targets:
    sns.distplot(target, rug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...