当前位置:   article > 正文

微博数据舆情分析项目_content = sample['内容'].tolist() # 将内容分词后保存到列表 cont

content = sample['内容'].tolist() # 将内容分词后保存到列表 content_seg_list

这份微博舆情数据集是2020年1月1日至2020年4月15日期间中国网民关于Covid-19大流行病的微博帖子,这些帖子包含了用户对疫情的讨论、感受、信息分享等内容。它可以帮助我们了解在Covid-19大流行期间微博用户的观点、情绪和行为。通过分析这些数据,我们可以揭示公众对于疫情的关注点、情感态度以及对应措施的反馈。此外,通过观察用户的地理位置等信息,我们还可以研究不同人群之间的观点差异和舆情传播模式。

1.可视化

  1. import pandas as pd
  2. sample = pd.read_csv('sample.csv', encoding='utf-8')
  3. print(sample.columns.values)
  4. # 【转发数】【评论数】【点赞数】缺失值填充
  5. sample.loc[sample['转发数'].isnull(), '转发数'] = 0
  6. sample.loc[sample['评论数'].isnull(), '评论数'] = 0
  7. sample.loc[sample['点赞数'].isnull(), '点赞数'] = 0
  8. #用地理位置列填充实时地理位置列
  9. sample['实时地理位置'].fillna(sample['地理位置'],inplace=True)
  10. #查看实时地理位置列是否还有空值
  11. print(sample['实时地理位置'].isna().sum())
  12. # 统一实时地理位置名称
  13. for i in range(len(sample)):
  14. if sample.iloc[i, 8] in ['北京','天津','上海','重庆']:
  15. sample.iloc[i, 8] += '市'
  16. elif sample.iloc[i, 8] in ['香港','澳门']:
  17. sample.iloc[i, 8] += '特别行政区'
  18. elif sample.iloc[i, 8] in ['西藏','内蒙古']:
  19. sample.iloc[i, 8] += '自治区'
  20. elif sample.iloc[i, 8] == '新疆':
  21. sample.iloc[i, 8] += '维吾尔自治区'
  22. elif sample.iloc[i, 8] == '广西':
  23. sample.iloc[i, 8] += '壮族自治区'
  24. elif sample.iloc[i, 8] == '宁夏':
  25. sample.iloc[i, 8] += '回族自治区'
  26. elif sample.iloc[i, 8] != '海外' and sample.iloc[i, 8] != '其它':
  27. sample.iloc[i, 8] += '省'
  28. print(sample['实时地理位置'].head())
  29. import re
  30. import jieba
  31. #用微博内容列填充内容列缺失值
  32. sample['内容'].fillna(sample['微博内容'],inplace=True)
  33. #再用原微博列填充内容列缺失值
  34. sample['内容'].fillna(sample['原微博(如果这条微博为转发)'],inplace=True)
  35. #删除含有空值的列
  36. sample.dropna(axis=0,subset=['内容'],inplace=True)
  37. #查看内容列是否还有空值
  38. print(sample['内容'].isnull().sum())
  39. # 重置索引
  40. sample.reindex()
  41. import jieba,re
  42. # 读取停用词表
  43. def read_stopwords(file='hit_stopwords.txt'):
  44. with open(file,'r', encoding='utf-8') as f:
  45. stopwords = f.read().split('\n')
  46. return stopwords
  47. # 数据清洗
  48. def data_cleaning(content_list):
  49. # 建立数据清洗后的列表
  50. content_seg_list = []
  51. # 初始化特殊字符、标点、数字、字母等
  52. symbols = '-\\n~%≥℃|/【】↓#~_「♂!?\',、:;。《》()()·—.…,0123456789abcdefghijklnmopqrstuvwxyz'
  53. # 初始化停用词表
  54. stopwords =read_stopwords(file='hit_stopwords.txt')
  55. # 遍历文本列表
  56. for content in content_list:
  57. # 获取“展开全文-收起全文”内文本
  58. if '展开全文' in content and '收起全文' in content:
  59. begin = content.find('展开全文')
  60. end = content.find('收起全文')
  61. content = content[begin: end]
  62. # 去除用户名
  63. if '@' in content:
  64. content = re.sub('@.* ', ' ', content)
  65. # 统一转换为小写
  66. content = content.lower()
  67. # 去除停用词
  68. for con in content:
  69. # 包含symbols则替换为空格
  70. if con in symbols:
  71. content = content.replace(con, ' ')
  72. # 分词
  73. con_list = jieba.cut(content, cut_all=False)
  74. result_list = []
  75. # 去停用词
  76. for con in con_list:
  77. if con not in stopwords and con!='\n' and con!='\u3000' and con!=' ':
  78. result_list.append(con)
  79. content_seg_list.append(result_list)
  80. return content_seg_list
  81. # 将微博内容转换为列表
  82. content = sample['内容'].tolist()
  83. # 将内容分词后保存到列表
  84. content_seg_list = data_cleaning(content)
  85. sample['content_seg']=content_seg_list
  86. from pyecharts.charts import WordCloud
  87. from pyecharts import options as opts
  88. from pyecharts.globals import SymbolType
  89. from collections import Counter
  90. # 获取词语
  91. word_list = []
  92. for seg in content_seg_list:
  93. word_list += seg
  94. # 统计词频,取频率最高的100个词语
  95. word_dict = Counter(word_list).most_common(100)
  96. wordcloud = WordCloud().add(series_name="新冠疫情微博文本词云图",
  97. data_pair = word_dict, # 添加数据
  98. word_gap = 7, # 字间隙
  99. word_size_range = [15, 60], # 调整字体大小范围
  100. shape = 'circle' # 设置形状为椭圆
  101. )
  102. wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="新冠疫情微博文本词云图", # 设置图标题
  103. title_textstyle_opts=opts.TextStyleOpts(font_size=20)),
  104. tooltip_opts=opts.TooltipOpts(is_show=True))
  105. wordcloud.render()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/410787
推荐阅读
相关标签
  

闽ICP备14008679号