如何在 pandas 数据框中以 monthly/weekly 为基础绘制日期

How to plot dates on a monthly/weekly basis in pandas dataframe

我有以下数据框:

               Date     Embedded_text                                  Partei   sentiment_prediction Sentiment
Date                    
2021-03-26  2021-03-26  AfD wirkt.\n\nSchluss mit dem #Gendergaga\nMDR...   AfD        2    Neutral
2021-03-27  2021-03-27  Im Herbst wird gewählt.\nSchluss mit den Recht...   AfD        1    Negative
2021-03-31  2021-03-31  Behördenwillkür\nFlüchtlingsheime durchgedrück...   AfD        1    Negative
2021-04-01  2021-04-01  Aus Raider wird jetzt Twix \n\nLeider kein #Ap...   AfD        2    Neutral
2021-04-01  2021-04-01  Gendern geht („*innen“)\nImpfen geht nicht.\nD...   AfD        1    Negative
... ... ... ... ... ...

数据帧的时间范围从 01.01.2021 到 01.01.2022。现在我想随着时间的推移绘制不同的东西,例如:

我已经选择“日期”作为索引。尝试绘制全年时,我得到以下输出:

df["sentiment_prediction"].plot()

如您所见,图中充满了数据点,因为该图中考虑了每一天。这就是为什么我只想绘制几个月或几周的时间以获得更有洞察力的情节。 目前,我不知道如何解决这个问题。

提前致谢!

您可以尝试在 X-axis 中使用不同的时间格式(如 MM-DD-YYYY),或者只获取每个月的平均值或中位数来绘制单个点。

only plot months or weeks

如果需要,请使用 DataFrame.resample or Series.resample to resample the frequency to M (months) or W (weeks). Just make sure the index is a true datetime type (use pd.to_datetime

重采样前:

rng = np.random.default_rng(0)
df = pd.DataFrame({'Date': pd.date_range('2021-01-01', '2021-12-31'), 'Partei': rng.choice(list('abc'), size=365), 'sentiment_prediction': rng.integers(5, size=365)})
df = df.set_index('Date')

df['sentiment_prediction'].plot()

重采样后:

# resampled weekly
df['sentiment_prediction'].resample('W').mean().plot()

# resampled monthly
df['sentiment_prediction'].resample('M').mean().plot()


grouped by "Partei"

在绘图之前使用 DataFrame.pivot_tablePartei 转换为列:

(df.pivot_table(index='Date', columns='Partei', values='sentiment_prediction')
   .resample('M').mean().plot())