多线时间序列 pandas

Multi line time series pandas

我正在尝试绘制 python 中 pandas 的多线图。我需要三行(正面、负面、中性)及其在一段时间内出现的次数。在 x 轴上我将有时间,在 y 轴上我将有出现的次数,并且我将在一张图中有三行。如果没有出现,那么它将自动为零(例如,在 etable 中没有出现“负”,因此在图中该点将为零)。我附上了我需要转换成图形的 table。

d = datapandas.groupby(["date","classification"]).size()

最左边的列是分类在日期内出现的次数。我找不到任何简单的方法来绘制这种图表。

您只需 unstack classification 索引并绘制图表:

d.unstack('classification').fillna(0).plot()

注意:您可以使用 value_counts:

来避免 groupby
d = datapandas.value_counts(['date', 'classification'])

您可以尝试使用 pivot 重新排列您的数据,然后调用 plot() 这是默认的 kind='line'。要填充缺失值,您可以调用 fillna(0).

如果您先调用 MultiIndex reset_index('classification')

df.pivot(columns='classification', values='value').fillna(0).plot()

这是一个完整的最小示例:

from io import StringIO
import pandas as pd
t = '''date classification value
2021-12-24 neutral 3
2021-12-24 positiv 2
2021-12-25 neutral 1
2021-12-25 positiv 3
2021-12-26 neutral 1
2021-12-26 negative 2
'''
df = pd.read_csv(StringIO(t), sep='\s', parse_dates=[0], index_col=0)
df.pivot(columns='classification', values='value').fillna(0).plot(kind='line')