【问题标题】:Plotting sentiment analysis over time in python在 python 中随时间绘制情绪分析
【发布时间】:2021-04-04 09:53:36
【问题描述】:

我正在尝试绘制我的情绪分析结果随时间的变化。该代码涉及来自论坛的cmets。我的代码示例如下所示:

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() 但我不知道如何。

【问题讨论】:

    标签: python plot line analysis


    【解决方案1】:

    我的解决方案有点复杂,您可能应该稍后增强图表以适应您想要的内容(如堆叠条)。

    首先,让我们将数据帧时间戳分成日期。

    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()。这就是结果。

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 2022-11-20
      • 1970-01-01
      • 2015-02-11
      • 2019-05-06
      • 2015-10-02
      • 2013-02-02
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多