#python #pandas #matplotlib #seaborn
#python #pandas #matplotlib #сиборн
Вопрос:
У меня все еще возникают проблемы с этим
Вот как выглядят мои данные:
date positive negative neutral
0 2015-09 23 6 18
1 2016-04 709 288 704
2 2016-08 1478 692 1750
3 2016-09 1881 926 2234
4 2016-10 3196 1594 3956
в моем csv-файле у меня нет этих индексов 0-4, а только 4 столбца от «дата» до «нейтральный».
Я не знаю, как исправить мои коды, чтобы они выглядели так
Код Seaborn
sns.set(style='darkgrid', context='talk', palette='Dark2')
fig, ax = plt.subplots(figsize=(8, 8))
sns.barplot(x=df['positive'], y=df['negative'], ax=ax)
ax.set_xticklabels(['Negative', 'Neutral', 'Positive'])
ax.set_ylabel("Percentage")
plt.show()
Комментарии:
1. сделать
df.reset_index()
Ответ №1:
Для этого seaborn
вам нужно преобразовать ваши данные в длинный формат. Вы можете легко сделать это с помощью melt:
plotting_df = df.melt(id_vars="date", var_name="sign", value_name="percentage")
print(plotting_df.head())
date sign percentage
0 2015-09 positive 23
1 2016-04 positive 709
2 2016-08 positive 1478
3 2016-09 positive 1881
4 2016-10 positive 3196
Затем вы можете построить этот фрейм данных большого формата с помощью seaborn простым способом:
sns.set(style='darkgrid', context='talk', palette='Dark2')
fig, ax = plt.subplots(figsize=(8, 8))
sns.barplot(x="date", y="percentage", ax=ax, hue="sign", data=plotting_df)
Комментарии:
1. да, действительно, это тоже отличный способ!
Ответ №2:
На основе опубликованных вами данных
sns.set(style='darkgrid', context='talk', palette='Dark2')
# fig, ax = plt.subplots(figsize=(8, 8))
df.plot(x="date",y=["positive","neutral","negative"],kind="bar")
plt.xticks(rotation=-360)
# ax.set_xticklabels(['Negative', 'Neutral', 'Positive'])
# ax.set_ylabel("Percentage")
plt.show()
Комментарии:
1. Вы можете сделать это в seaborn, однако вам нужно будет изменить структуру ваших данных
2. даты должны печататься вертикально, если нет. plt.xticks(вращение = 90) продолжайте вращаться, пока не получите правильное направление @Elainayg