多线时间序列 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')
我正在尝试绘制 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')