Сюжет категории на 1 и 0 из словаря списков - PullRequest
0 голосов
/ 31 октября 2018

У меня есть словарь, который выглядит так:

dict = {'a': [0,1,0,1,0,0,0,0,0], 'b': [1,1,1,1,1,1,1,1,0], 'c': [1,0,1,0,0,0,0,0,0] ...}

Цель: создать линейчатую диаграмму категории, где ось x - это имя ключа, а ось y - это пропорция 0 и 1.

key = dict.keys()
values = dict.values()

Я знаю, что с помощью count () можно получить число 1 и 0

values.get('a').count(1)

Как нарисовать график категории, используя словарь списков?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

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

import matplotlib.pyplot as plt


data = {
    'a': [0,1,0,1,0,0,0,0,0],
    'b': [1,1,1,1,1,1,1,1,0],
    'c': [1,0,1,0,0,0,0,0,0]
}

keys = list(data.keys()) # ["a", "b", "c"]

Я бы использовал понимание списка, чтобы построить список с количеством:

count_zero = [data[k].count(0) for k in keys] # [7, 1, 7]
count_ones = [data[k].count(1) for k in keys] # [2, 8, 2]

И, наконец, выведите данные:

# Create the bar plot
fig, ax = plt.subplots()
ind = list(range(1, len(data) + 1)) # [1, 2, 3, ...] horizontal location of the bars

bars = plt.bar(ind, count_zero)
bars = plt.bar(ind, count_ones, bottom=count_zero)

ax.set_xticks(ind)
ax.set_xticklabels(keys) # labels: a, b, c
ax.set_ylabel('Counts')
ax.set_title('StackOverflow')

plt.show()

Результат:

enter image description here

0 голосов
/ 31 октября 2018

Как насчет этого? Требуется библиотека pandas.

import pandas as pd

dict = {'a': [0,1,0,1,0,0,0,0,0], 'b': [1,1,1,1,1,1,1,1,0], 'c': [1,0,1,0,0,0,0,0,0] }

df = pd.DataFrame(dict)

df = [df[col].value_counts().to_frame().T for col in ['a', 'b', 'c']]

df = pd.concat(df)

df.plot(kind='bar', stacked=True, rot=0)

enter image description here

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