微博数据舆情分析项目

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

1.可视化

import pandas as pd

sample = pd.read_csv('sample.csv', encoding='utf-8')
print(sample.columns.values)

# 【转发数】【评论数】【点赞数】缺失值填充
sample.loc[sample['转发数'].isnull(), '转发数'] = 0
sample.loc[sample['评论数'].isnull(), '评论数'] = 0
sample.loc[sample['点赞数'].isnull(), '点赞数'] = 0


#用地理位置列填充实时地理位置列
sample['实时地理位置'].fillna(sample['地理位置'],inplace=True)
#查看实时地理位置列是否还有空值
print(sample['实时地理位置'].isna().sum())

# 统一实时地理位置名称
for i in range(len(sample)):
    if sample.iloc[i, 8] in ['北京','天津','上海','重庆']:
        sample.iloc[i, 8] += '市'
    elif sample.iloc[i, 8] in ['香港','澳门']:
        sample.iloc[i, 8] += '特别行政区'
    elif sample.iloc[i, 8] in ['西藏','内蒙古']:
        sample.iloc[i, 8] += '自治区'
    elif sample.iloc[i, 8] == '新疆':
        sample.iloc[i, 8] += '维吾尔自治区'
    elif sample.iloc[i, 8] == '广西':
        sample.iloc[i, 8] += '壮族自治区'
    elif sample.iloc[i, 8] == '宁夏':
        sample.iloc[i, 8] += '回族自治区'
    elif sample.iloc[i, 8] != '海外' and sample.iloc[i, 8] != '其它':
         sample.iloc[i, 8] += '省'
print(sample['实时地理位置'].head())

import re
import jieba

#用微博内容列填充内容列缺失值
sample['内容'].fillna(sample['微博内容'],inplace=True)
#再用原微博列填充内容列缺失值
sample['内容'].fillna(sample['原微博(如果这条微博为转发)'],inplace=True)
#删除含有空值的列
sample.dropna(axis=0,subset=['内容'],inplace=True)
#查看内容列是否还有空值
print(sample['内容'].isnull().sum())
# 重置索引
sample.reindex() 

import jieba,re

# 读取停用词表
def read_stopwords(file='hit_stopwords.txt'):
    with open(file,'r', encoding='utf-8') as f:
        stopwords = f.read().split('\n')  
    return stopwords


# 数据清洗
def data_cleaning(content_list):
    # 建立数据清洗后的列表
    content_seg_list = []

    # 初始化特殊字符、标点、数字、字母等
    symbols = '-\\n~%≥℃|/【】↓#~_「♂!?\',、:;。《》()()·—.…,0123456789abcdefghijklnmopqrstuvwxyz'
    # 初始化停用词表
    stopwords =read_stopwords(file='hit_stopwords.txt')
   
    # 遍历文本列表
    for content in content_list:
        # 获取“展开全文-收起全文”内文本
        if '展开全文' in content and '收起全文' in content:
            begin = content.find('展开全文')
            end = content.find('收起全文')
            content = content[begin: end]
        # 去除用户名
        if '@' in content:
            content =  re.sub('@.* ', ' ', content) 
        # 统一转换为小写
        content = content.lower()
        # 去除停用词
        for con in content:
            # 包含symbols则替换为空格
            if con in symbols:
                content = content.replace(con, ' ')
        # 分词
        con_list = jieba.cut(content, cut_all=False)
        result_list = []
        # 去停用词
        for con in con_list:
            if con not in stopwords and con!='\n' and con!='\u3000' and con!=' ':
                result_list.append(con)
        content_seg_list.append(result_list)
    
    return content_seg_list


# 将微博内容转换为列表
content = sample['内容'].tolist()
# 将内容分词后保存到列表
content_seg_list = data_cleaning(content)   
sample['content_seg']=content_seg_list

from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.globals import SymbolType
from collections import Counter

# 获取词语
word_list = []
for seg in content_seg_list:
    word_list += seg
# 统计词频,取频率最高的100个词语
word_dict = Counter(word_list).most_common(100)

wordcloud = WordCloud().add(series_name="新冠疫情微博文本词云图", 
                            data_pair = word_dict,  # 添加数据 
                            word_gap = 7,  # 字间隙
                            word_size_range = [15, 60],  # 调整字体大小范围
                            shape = 'circle' # 设置形状为椭圆
                           )
wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="新冠疫情微博文本词云图", # 设置图标题
                                                    title_textstyle_opts=opts.TextStyleOpts(font_size=20)),
                          tooltip_opts=opts.TooltipOpts(is_show=True))

wordcloud.render()

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 微博舆情分析是指通过采集和分析微博平台上的大量数据,识别和分析其中的舆情信息。Python作为一种强大的编程语言,被广泛应用于微博舆情分析中。 首先,Python具有丰富的数据采集和处理工具,例如BeautifulSoup、Scrapy等,可以帮助我们抓取大量的微博数据。通过这些工具,我们可以设置关键词、时间范围等条件来获取特定的微博内容。 其次,Python具有各种文本处理和数据挖掘库,如NLTK、Scikit-learn等。这些库提供了丰富的文本分析和机器学习算法,可以对微博数据进行处理和分析。例如,我们可以使用NLTK库进行分词、去除停用词等预处理步骤,然后使用Scikit-learn库构建文本分类模型,识别微博中的情感倾向。 另外,Python还可以通过可视化库如Matplotlib、Seaborn等,将分析结果以图表等形式展示出来,更直观地呈现微博舆情信息。我们可以绘制舆情的时间趋势图、热词词云图等,帮助用户更好地理解和分析微博舆情。 总而言之,Python作为一种强大的编程语言,提供了丰富的数据处理、文本分析和可视化工具,可以帮助我们进行微博舆情分析。使用Python进行微博舆情分析,可以实现数据的采集、处理、分析和可视化等多个环节,为用户提供全面、准确的微博舆情信息。 ### 回答2: 微博舆情分析是利用Python编程语言进行分析微博上发布的内容、用户行为和情感倾向的一种方法。Python是一种功能强大且易于学习的编程语言,它拥有许多用于文本分析、数据处理和机器学习的库和工具。 首先,利用Python的爬虫技术,我们可以获取到微博上的数据。可以使用第三方库如BeautifulSoup或者Scrapy来解析HTML页面并提取我们所需的信息,如微博内容、发布用户和评论。 接着,Python的文本分析库如NLTK和jieba可以帮助我们对微博内容进行分词处理,将文本分割成单个词语以便后续处理。同时,我们可以使用Python的正则表达式模块对微博文本进行过滤和清洗。 在微博舆情分析中,情感分析是一个重要的环节。Python的情感分析库如TextBlob和VADER可以帮助我们判断微博文本的情感倾向,即是积极的、消极的还是中性的。这可以帮助我们了解大众对于某个话题的态度。 此外,Python还拥有许多统计分析和机器学习的库和工具,如pandas和scikit-learn。这些库可以帮助我们对微博数据进行统计分析、聚类和分类,从而发现微博中的热门话题、关联用户和事件等。 最后,利用可视化库如matplotlib和seaborn,我们可以使用Python生成图表和图像,将微博数据的分析结果以更直观的方式展示出来。这样可以帮助我们更好地理解微博舆情的变化和趋势。 总的来说,Python为微博舆情分析提供了丰富的工具和库,它的简单易用和强大的功能使得我们能够更轻松地处理和分析微博数据,从而更好地了解大众的反应和情感倾向。 ### 回答3: 微博舆情分析是指利用Python编程语言进行对微博上的用户发布的内容进行情感分析和主题分析的过程。Python是一种流行的编程语言,具有强大的数据处理和自然语言处理能力,因此非常适合用于微博舆情分析。 首先,Python提供了丰富的数据处理库,如NumPy、Pandas和Matplotlib等。这些库可以帮助我们对微博数据进行清洗和整理,并将其转换为适合分析的格式。同时,Python还提供了易于使用的机器学习库,如Scikit-Learn和TensorFlow等,可以用于训练情感分析模型和主题分类模型。 其次,Python还拥有许多强大的自然语言处理库,如NLTK和SpaCy等。这些库可以帮助我们对微博文本进行分词、词性标注、命名实体识别等处理,为后续的情感分析和主题分析提供基础。 在微博舆情分析中,我们可以利用Python进行情感分析,通过建立情感分类模型对微博文本进行情感倾向的判断,判断微博是正面、负面还是中性。同时,我们还可以使用Python进行主题分析,通过聚类或主题模型等技术,将微博文本聚类或分类到不同的主题中,以了解用户在微博上讨论的热点话题。 在实际应用中,我们可以使用Python编写脚本,自动化地从微博上获取数据并进行分析,将分析结果可视化展示。此外,Python还可以与其他技术和算法结合,如社交网络分析、时间序列分析等,进一步挖掘微博舆情中的有价值的信息。 总之,在微博舆情分析中,Python作为一种强大的编程语言,可以帮助我们高效地进行数据处理、自然语言处理和机器学习等任务,从而实现对微博舆情的深入分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值