在 python 中随时间绘制情绪分析
Plotting sentiment analysis over time in python
我正在尝试绘制随时间变化的情绪分析结果。该代码涉及来自论坛的评论。我的代码示例如下所示:
Timestamp Sentiment
2021-01-28 21:37:41 Positive
2021-01-28 21:32:10 Negative
2021-01-29 21:30:35 Positive
2021-01-29 21:28:57 Neutral
2021-01-29 21:26:56 Negative
我想绘制一个折线图,其中 x 轴上只有时间戳中的日期,然后是“情绪”列的值计数的单独一行。所以总共有 3 行,每种情绪(正面、负面和中性)各一行,y 轴代表计数。我想我需要以某种方式使用 groupby() 但我不知道如何使用。
我的解决方案有点复杂,您以后可能应该增强图形以适合您的需要(例如堆积条)。
首先,让我们将您的数据帧时间戳分成日期。
import pandas as pd
import matplotlib.pyplot as plt
example = {'Timestamp':
['2021-01-28 21:37:41', '2021-01-28 21:32:10', '2021-01-29 21:30:35',
'2021-01-29 21:28:57', '2021-01-29 21:26:56'],
'Sentiment':
['Positive', 'Negative', 'Positive', 'Neutral', 'Negative']}
df = pd.DataFrame(example)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df['Date'] = df['Timestamp'].dt.date
然后,让我们按日期分组,并计算唯一值。
grouped = df.groupby(by='Date')['Sentiment'].value_counts()
输出:
Date Sentiment
2021-01-28 Negative 1
Positive 1
2021-01-29 Negative 1
Neutral 1
Positive 1
Name: Sentiment, dtype: int64
这是一个多索引系列。为了得到更好的格式,我们可以拆开多索引。
unstacked = grouped.unstack(level=1)
然后,我们可以直接在对象上绘图,unstacked.plot.bar()
。这是结果。
我正在尝试绘制随时间变化的情绪分析结果。该代码涉及来自论坛的评论。我的代码示例如下所示:
Timestamp Sentiment
2021-01-28 21:37:41 Positive
2021-01-28 21:32:10 Negative
2021-01-29 21:30:35 Positive
2021-01-29 21:28:57 Neutral
2021-01-29 21:26:56 Negative
我想绘制一个折线图,其中 x 轴上只有时间戳中的日期,然后是“情绪”列的值计数的单独一行。所以总共有 3 行,每种情绪(正面、负面和中性)各一行,y 轴代表计数。我想我需要以某种方式使用 groupby() 但我不知道如何使用。
我的解决方案有点复杂,您以后可能应该增强图形以适合您的需要(例如堆积条)。
首先,让我们将您的数据帧时间戳分成日期。
import pandas as pd
import matplotlib.pyplot as plt
example = {'Timestamp':
['2021-01-28 21:37:41', '2021-01-28 21:32:10', '2021-01-29 21:30:35',
'2021-01-29 21:28:57', '2021-01-29 21:26:56'],
'Sentiment':
['Positive', 'Negative', 'Positive', 'Neutral', 'Negative']}
df = pd.DataFrame(example)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df['Date'] = df['Timestamp'].dt.date
然后,让我们按日期分组,并计算唯一值。
grouped = df.groupby(by='Date')['Sentiment'].value_counts()
输出:
Date Sentiment
2021-01-28 Negative 1
Positive 1
2021-01-29 Negative 1
Neutral 1
Positive 1
Name: Sentiment, dtype: int64
这是一个多索引系列。为了得到更好的格式,我们可以拆开多索引。
unstacked = grouped.unstack(level=1)
然后,我们可以直接在对象上绘图,unstacked.plot.bar()
。这是结果。