[Python3] Как использовать Seaborn / Matplotlib для построения графика фрейма данных pandas

#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