Подсчет подгруппы нескольких категориальных переменных на одной гистограмме - PullRequest
1 голос
/ 22 февраля 2020

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

Приведенный ниже код достигает того, чего я хочу, но на 4 различных столбчатых графиках. Я бы хотел, чтобы все это было на одном графике, чтобы столбцы располагались рядом (метки / легенды были бы лучами). Я пытаюсь получить чистое, простое решение с использованием matplotlib, но пока не могу понять. Помогите?

Спасибо!

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame({"A":['cow','pig','horse','goat','cow'], "B":['cow','pig','horse','cow','goat'], "C":['pig','horse','goat','pig','cow'], "D":['cow','pig','horse','horse','goat'], "E":['pig','horse','goat','cow','goat']})

levels = np.sort(df['A'].unique()) 

df.A.value_counts()[levels].plot(kind='bar')
df.B.value_counts()[levels].plot(kind='bar')
df.C.value_counts()[levels].plot(kind='bar')
df.D.value_counts()[levels].plot(kind='bar')

1 Ответ

2 голосов
/ 23 февраля 2020

Вам следует подать pd.series.value_counts и построить гистограмму, с накоплением или без нее.

Если вам нужен каждый столбец отдельно;

df.apply(pd.Series.value_counts).plot(kind='bar')

если вам нужно их сложить;

df.apply(pd.Series.value_counts).plot(kind='bar', stacked=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...