Получить количество значений в столбце и показать их процент на графике - PullRequest
1 голос
/ 11 июля 2019

Как подсчитать частоту значений в столбце и рассчитать процентное отношение к общему итогу?

Я получил кадр данных:

   range
0   G-L
1   M-R
2   G-L
3   M-R
4   A-F
5   S-Z
6   A-F
..   ..
..   ..

после df.range.value_counts () я получаю это:

A-F    1882
G-L    3096
M-R    3830
S-Z    1017

Теперь я хочу получить процент каждого диапазона по сравнению с общей суммой и показать это на графике, где ось X получила диапазоны (AF; GL; ...), а ось Y показывает процент этих диапазонов.

1 Ответ

2 голосов
/ 11 июля 2019

Предположим, это ваше DataFrame:

data = {'labels': ["A-F", "G-L", "M-R", "S-Z"], 'count':[1882, 3096, 3830, 1017]}
df = pd.DataFrame.from_dict(data)

print(df)

  labels  count
0    A-F   1882
1    G-L   3096
2    M-R   3830
3    S-Z   1017

Теперь вам нужно рассчитать процент каждой строки:

df['percentage'] = (df['count'] / df['count'].sum()) * 100

print(df)

  labels  count  percentage
0    A-F   1882   19.155216
1    G-L   3096   31.511450
2    M-R   3830   38.982188
3    S-Z   1017   10.351145

, а затем нанесите метки в зависимости от процента, используя функцию df.plot() и указав ее kind, которая, как я полагаю, является барплотом.

df.plot(kind='bar', x='labels', y='percentage')

Это даст следующий сюжет: enter image description here

Edit: Метод value_counts() возвращает объект pd.Series(). Чтобы построить его, вы можете запустить следующую строку:

df.range.value_counts(normalize=True).plot(kind='bar')

...