Корректировка данных в словаре, а затем их построение - PullRequest
0 голосов
/ 01 октября 2018

У меня есть

x = collections.Counter(df.f.values.tolist())
if 'nan' in x:
    del x['nan']
plt.bar(range(len(x)), x.values(), align='center')
plt.xticks(range(len(x)), list(x.keys()))

plt.show()

enter image description here

У меня вопрос, как я могу удалить наны из созданного словаря и как я могу это сделать?изменить порядок гистограммы, чтобы перейти с 1-5?Первые 3 наночастицы - это пустые места в данных (преднамеренные с момента опроса), а последняя - заголовок столбца.Я попытался вручную изменить часть диапазона plt.bar на 1-5, но, похоже, он не работает.

1 Ответ

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

Вы можете использовать .value_counts на pandas.Series, чтобы просто узнать, сколько раз встречается каждое значение.Это упрощает создание барплота.

По умолчанию value_counts будет игнорировать значения NaN, поэтому мы позаботимся об этом, и, используя .sort_index(), мы сможем гарантировать, что значения отображаются в порядке.Кажется, нам нужно использовать .to_frame(), чтобы он отображал только один цвет для столбца (он выбирает один цвет на строку для Series).

Пример данных

import pandas as pd
import numpy as np
# Get your plot settings
import seaborn as sns
sns.set()

np.random.seed(123)
df = pd.DataFrame({'f': np.random.randint(1,6,100)})
df = df.append(pd.DataFrame({'f': np.repeat(np.NaN,1000)}))

Код

df.f.value_counts().to_frame().sort_index().plot(kind='bar', legend=False)

enter image description here

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