如何利用情感分数绘制情感极性图表?
如何利用情感分数绘制情感极性图表?
嗨!我看到你已经成功用TextBlob算出了情感分数,但卡在可视化这一步了——别担心,咱们一步步来搞定它。
首先得提个小细节:你当前的Sentiment_score列存的是元组类型(包含极性polarity和主观性subjectivity两个值),直接绘图会有问题,所以第一步要把这两个值拆分成单独的列,方便后续可视化。
步骤1:拆分情感分数元组
先把元组拆成两列,用pandas的apply(pd.Series)就能轻松搞定:
import pandas as pd # 如果还没导入的话记得加这句 # 拆分Sentiment_score为极性和主观性列 dataframe_3[['Polarity', 'Subjectivity']] = dataframe_3['Sentiment_score'].apply(pd.Series)
拆分后你就能看到Polarity(范围-1到1,负值=负面,0=中性,正值=正面)和Subjectivity(范围0到1,值越高越主观)两个单独的列了。
步骤2:选择合适的图表类型并绘图
接下来根据你的需求选不同的图表,我给你几个常用的示例:
示例1:单条样本的情感极性柱状图(对应你打印的前20条数据)
如果想直观看到每条表情对应的极性分数,用柱状图最合适:
import matplotlib.pyplot as plt # 取前20条数据绘图 sample_data = dataframe_3.loc[0:19, ['extracted_emojis', 'Polarity']] plt.figure(figsize=(12, 6)) # 设置图表大小 plt.bar(sample_data['extracted_emojis'], sample_data['Polarity'], color='skyblue') plt.title('前20条表情的情感极性') plt.xlabel('表情') plt.ylabel('极性分数 (-1=负面,0=中性,1=正面)') plt.xticks(rotation=45) # 旋转x轴标签避免重叠 plt.tight_layout() # 自动调整布局 plt.show()
示例2:整体情感极性的分布直方图
如果想了解所有数据的极性分布(比如大部分是正面还是负面),直方图是不错的选择:
plt.figure(figsize=(8, 5)) plt.hist(dataframe_3['Polarity'], bins=20, color='salmon', edgecolor='black') plt.title('情感极性整体分布') plt.xlabel('极性分数') plt.ylabel('样本数量') plt.axvline(x=0, color='red', linestyle='--', label='中性线') # 加一条中性参考线 plt.legend() plt.show()
示例3:情感极性的箱线图(看集中趋势)
如果想快速看出极性的中位数、四分位数和异常值,用箱线图更清晰:
import seaborn as sns # 需要先安装seaborn:pip install seaborn plt.figure(figsize=(8, 5)) sns.boxplot(x=dataframe_3['Polarity'], color='lightgreen') plt.title('情感极性分布箱线图') plt.xlabel('极性分数') plt.show()
小提醒
- 记得先安装需要的库:如果没装matplotlib或seaborn,用
pip install matplotlib seaborn就行。 - 你也可以根据需求调整图表的颜色、大小、标题这些细节,让图表更贴合你的展示场景。
备注:内容来源于stack exchange,提问作者Seundede Godswill Ejueyitchie
相关产品推荐
相关产品推荐

