【大数据可视化分析】股吧帖子情感倾向及用户参与行为

本文基于2008-2020年中国上市公司股吧数据,通过多种图表进行深度分析,揭示股吧用户参与度、情感倾向及公司热度变化。股吧综合参数与用户参与度呈正相关,正向情感主导。公司热度排行榜中科技公司逐渐升温,京东方A、苏宁易购等公司备受关注。分析表明,股吧讨论热度波动大,中性帖子占比最高,正面帖子量多于负面。
摘要由CSDN通过智能技术生成

目录

1. 报告摘要

摘要:本文研究的数据来源于2008-2020中国上市公司股吧评论数据库,其中包括有帖子总量、帖子情感属性、阅读量、评论量等字段。基于此数据库,本文利用pandas、matplotlib、pyecharts等常见数据分析python库对这部分数据进行深入分析、挖掘,并对挖掘到得规则进行可视化分析,以期从中挖掘出上市公司股吧评论数据库中有价值的规则。
本文以时间跨度和公司跨度两个维度上进行分析,从2008-2020年所有数据分析再到个别年份数据分析、从整个股吧数据分析再到个别公司股吧数据分析等,这过程中本文挖掘出众多规则,并将其进行可视化处理,建立了并列直方图、箱型图、饼图、3D直方图、3D散点图、漏斗图、水滴图等多达15种图表,28张图表。分析这些图标,本文发现股吧每年变化情况较大,股吧中正向情绪占据主导地位,股吧的种种现象与我们的生活联系紧密。
关键词:股吧评论,帖子情感倾向,可视化分析

2. 报告正文

2.1 2008-2020年股吧总体分析

(1) 2008-2020年股吧综合参数(折线图)

1.	def get_line(file_path):  
2.	    filelist = os.listdir(file_path)  
3.	    x_data, Readnum, Tpostnum, Commentnum, Pospostnum, Negpostnum,        
4.	     Neupostnum  = []  
5.	    for file in filelist:  # 遍历所有数据文件  
6.	        olddir = os.path.join(file_path, file)  # 文件相对路径  
7.	        print(olddir)  
8.	        filename = os.path.splitext(file)[0]  
9.	        filetype = os.path.splitext(file)[1]  
10.	        if filetype == '.csv':  
11.	            df = pd.read_csv(olddir)  
12.	            x_data.append(filename)  
13.	            Readnum.append(df.Readnum.sum())  
14.	            Tpostnum.append(int(df.Tpostnum.sum()))  
15.	            Commentnum.append(int(df.Commentnum.sum()))  
16.	            Pospostnum.append(int(df.Pospostnum.sum()))  
17.	            Negpostnum.append(int(df.Negpostnum.sum()))  
18.	            Neupostnum.append(int(df.Neupostnum.sum()))  
19.	    line = Line()  
20.	    line.add_xaxis(list(x_data))  
21.	    line.add_yaxis('Readnum', Readnum)  
22.	    line.add_yaxis('Tpostnum', Tpostnum)  
23.	    line.add_yaxis('Commentnum', Commentnum)  
24.	    line.add_yaxis('Pospostnum', Pospostnum)  
25.	    line.add_yaxis('Neupostnum', Neupostnum)  
26.	    line.set_global_opts(title_opts=opts.TitleOpts(title='2008-2020年年度数据折线图', pos_top='-10%'))  
27.	     Return line

在这里插入图片描述
按年份将阅读量、帖子总量、正面帖子、负面帖子、中性帖子、评论数等参数进行求和,绘制出多条折线复合图。
通过上图可以看出,股吧各项指标有着一定的相关性,总体呈正相关,同时通过正面评论总数线总处在负面评论总数的折线之上,可以见得股吧的整体舆情还是呈正面的,特别在2016年正面帖子总数总体远高于负面帖子总数,可以推测2016年股市整体走势较为良好;此外,股吧的帖子总量从2015年开始剧减,直至2018年才开始回升,可以推测股市在这段时间出现了一些较大的变动,导致股民对于股市的讨论热情减退。

(2) 2008-2020年股吧用户参与度(折线图)

1.	#  帖子参与度计算,由阅读量/评论数体现  
2.	def participateline(data_path):  
3.	    #  用data_path获取csv文件  
4.	    filelist = os.listdir(data_path)  
5.	    Participate, Readnum, Commentnum, x_data  = []  
6.	    for file in filelist:  # 遍历所有数据文件  
7.	        olddir = os.path.join(data_path, file)  # 文件相对路径  
8.	        filename = os.path.splitext(file)[0]  
9.	        filetype = os.path.splitext(file)[1]  
10.	        if filetype == '.csv':  
11.	            x_data.append(filename)  
12.	            df = pd.read_csv(olddir)  
13.	            particpate.append(int(int(df.Readnum.sum())/int(df.Commentnum.sum())))  
14.	            Readnum.append(int(df.Readnum.sum()))  
15.	            Commentnum.append(int(df.Commentnum.sum()))  
16.	    line = Line()  
17.	    line.add_xaxis(list(x_data))  
18.	    line.add_yaxis('参与度(阅读数/评论数)', particpate)  
19.	    line.add_yaxis('Readnum', Readnum)  
20.	    line.add_yaxis('Commentnum', Commentnum)  
21.	    line.set_global_opts(title_opts=opts.TitleOpts(title='2008-2020年年度数据折线图', pos_top='-10%'))  
22.	    return line  

在这里插入图片描述
本图以(阅读数/评论数)作为股吧用户对当前信息讨论得参与度以年为时间刻度进行绘制,希望得出股吧用户在不同年份参与股市情况讨论的热情程度。
由上图可以看出2016年以前,尤其在2012年—2016年,股吧每年阅读量与评论数之比在高速增长,结合之前的总体阅读量走势,可以看出股吧在2016年以前的讨论热度是在上升的,股民对于股市的变化较为上心。但在2018年后,讨论参与度急剧下降,可能出现某种情况致使股民对于股市的热情减退。

(3) 2008-2020年股吧热度排行榜(以阅读量为指标)

1.	# 递归文件夹  
2.	for rank_by in attr:  
3.	    for year_dir in os.listdir(zrr_dir_path):  
4.	        if re.match(r'^\d*$', year_dir):  
5.	            df = pd.read_csv(zrr_dir_path + os.sep + year_dir + os.sep + year_dir + '-hot.csv') 
6.	            df.groupby('Coname')[rank_by].sum().sort_values(ascending=False).head(10).plot(kind= 'bar', y='发帖数', x = '公司名称')  
7.	            plt.xticks(rotation=20)  
8.	            if not os.path.exists('每年排名前十的公司-柱状图'+os.sep+rank_by):  
9.	                os.makedirs('每年排名前十的公司-柱状图'+os.sep+rank_by)  
10.	            plt.xlabel("公司名称")  
11.	            plt.ylabel(attr_map[rank_by])  
12.	            plt.title("%s年%s排名前十公司"%(year_dir, attr_map[rank_by]))  
13.	            plt.savefig('每年排名前十的公司-柱状图'+os.sep+rank_by+os.sep+year_dir+'.jpg', dpi = 600, bbox_inches = 'tight')  

在这里插入图片描述
以阅读数的高低为公司热度评判标准,可以得到每一年热度排名前十的公司排行榜。分析上图,可以得到以下结论:
 对比不同年份的排行榜,可发现不同年份上榜公司变化较大;
 对比不同年份的排行榜,可发现2010年前传统行业(如:金融业、重工业、房地产业)的公司比较热度较高,而2011年后科技公司等信息行业上榜数量逐渐增多,科技公司的热度逐渐攀升;
 除了2009年外,每年股吧热度排行榜前三与其他公司热度差距较大;
综上分析可得,每年热度排行榜变化大,2010年前主要是传统行业的公司热度较高,2011年后新型行业公司上榜数量增加,可以看出新兴行业公司股票在2011年后股民得关注度上升,可预见未来新兴行业公司的热度将持续上升,而传统行业股票仍然是股民心中的中流砥柱。

(4) 2008-2020年上榜次数频率统计(横向柱状图&饼图)

1.	rank_company = [] # 每年上榜公司  
2.	for year_dir in os.listdir(zrr_dir_path):  
3.	    if re.match(r'^\d*$', year_dir):  
4.	        df = pd.read_csv(zrr_dir_path + os.sep + year_dir + os.sep + year_dir + '-hot.csv')  
5.	        rank_company.extend(list(df.groupby('Coname')["Readnum"].sum().sort_values(ascending=False).head(10).index))  
6.	count_series = pd.Series(rank_company).value_counts() # 统计上榜次数  
7.	count_series[count_series > 1].plot(kind='barh', title='近十年上榜公司次数统计(大于一次)') # 统计上榜大于一次数  
8.	tmp = count_series.value_counts()  
9.	pie = Pie(init_opts = opts.InitOpts(theme = ThemeType.LIGHT))  
10.	items = ['上榜' + str(i) + '次公司数量' for i in count_series.value_counts().index]  
11.	c = ( Pie()  
12.	    .add("", [list(z) for z in zip(items, [int(i) for i in tmp.values])])  
13.	    .set_global_opts(title_opts=opts.TitleOpts(title=<
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huang Zenan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值