当前位置: 首页 > 后端技术 > Python

王力宏事件终于有了回应,教大家用Python分析

时间:2023-03-26 19:30:49 Python

大家好,我是查理~昨晚,王力宏终于回应了。今天简单教大家如何处理数据+可视化他的微博评论。完整代码/资料在文末下载。12月15日,王力宏突然在微博宣布离婚,并称“我和静蕾的私生活很简单,不会再回应任何媒体”,结束了8年的婚姻。12月17日深夜,王力宏前妻李静蕾突然发文,表示长期受到王力宏及其家人的羞辱和冷暴力。“明星”形象岌岌可危。文章一经发表便引发热议,王力宏长期以来的“优质偶像”形象遭到质疑。不少网友纷纷在李静蕾的微博留言,“好伤心,好失望”。“王力宏在我心中的形象已经崩塌了。””。今天给大家介绍一下数据吃瓜的使用方法,我用Python编程爬取王力宏宣布离婚的微博评论,下载的csv文件包含用户名,用户id,评论创建时间,评论id,评论content等。如上图所示,原始数据中的内容非常混乱,微博评论中有大量的表情、话题、“转发微博”等,需要进行数据清洗。首先根据数据进行去重评论的唯一IDdf_1=df_1.drop_duplicates(['idstr']).iloc[:,1:]然后,按小时统计所有微博评论df_1['created_date']=pd.to_datetime(df_1['created_date'])df_1_date=df_1.groupby([pd.Grouper(key='created_date',freq='H')]).size().reset_index(name='count')得到分时数据之后,你可以使用Matplotlib绘制折线图。columns=df_date.columnsfig=plt.figure(figsize=(10,5),dpi=100)plt.fill_between(df_date['created_date'].values,y1=df_date['count_x'].values,y2=0,label='王力宏微博新增评论数/小时',alpha=0.75,facecolor="#43a9cb",linewidth=1,edgecolor='k')plt.xlabel("日期")plt.ylabel("Value")plt.legend(loc='upperright')plt.show()fig.savefig('王力宏.png')输出结果如下。15日刚发微博,瞬间引爆评论,迅速上热搜。16日和17日没有评论。直到昨晚23:00,前妻李静蕾深夜发文后,人群才蜂拥而至开团。PS:除了吃瓜群众,最快的应该是英菲尼迪了。12月16日14:00,豪华汽车品牌英菲尼迪刚刚官宣王力宏成为品牌代言人。18日凌晨1点22分,@英融尼迪中国微博发布声明称,英菲尼迪决定即日起终止与王力宏先生的合作关系。英菲尼迪只用了35个小时就与他解约。如果我们把王力宏和李静蕾的微博评论数放在一张图片里,会是什么样子呢?正好我也爬取了李静蕾的微博评论,经过同样的数据处理columns=df_date.columnsfig=plt.figure(figsize=(10,8),dpi=100)plt.fill_between(df_date['created_date'.values,y1=df_date['count_x'].values,y2=0,label='王力宏微博新评论条数/小时',alpha=0.75,facecolor="#43a9cb",linewidth=1,edgecolor='k')plt.fill_between(df_date['created_date'].values,y1=df_date['count_y'].values,y2=0,label='李静蕾微博新评论条数/小时',alpha=0.75,facecolor="#b7ba6b",linewidth=1,edgecolor='k')plt.xlabel("Date")plt.ylabel("Value")plt.legend(loc='upperleft')plt.show()输出结果如下注:相比之下,王力宏在这里的评论根本不是一个量级的,好像是“小弟”。所有的吃瓜群众都涌向了李静蕾的微博。这次我们还是要盘点一下:群众开群后都发了什么?与上篇传统的词云图不同,我打算玩点新的。在上面制作的折线面积图中,填充不同时间段的词云。很多朋友比较好奇怎么做。其实PS是把之前的折线图和生成的词云层叠加起来的。如果你要问Python能不能做层覆盖,我的回答是能但没必要。在制作词云图之前,需要将王力宏的所有微博评论分成两部分(即前妻踢锤子前后)。请注意,下面的代码使用2021-12-1723:08:00"作为边界。defget_cut_words(content_series):#读入停用词列表importjiebastop_words=[]withopen("stop_words.txt",'r',encoding='utf-8')asf:lines=f.readlines()forlineinlines:stop_words.append(line.strip())#添加关键字my_words=['分分合合','拉黑']foriinmy_words:jieba.add_word(i)#自定义禁用词my_stop_words=['quickforward','forward','Weibo']stop_words.extend(my_stop_words)#分词word_num=jieba.lcut(content_series.str.cat(sep='.'),cut_all=False)条件过滤word_num_selected=[ifori在word_numifinotinstop_wordsandlen(i)>=2]returnword_num_selectedtext1=get_cut_words(content_series=df_1[df_1["created_date"]<"2021:232:0800"]['text1'])然后准备两个掩码(取自之前获得的折线图)。词云图的代码细节大家都很熟悉了,这里只需要关注一点即可。background_color='white'#改为background_color=None,mode='RGBA',这样可以设置词云图的背景色为透明,方便图层叠加。这样,我们就可以制作出如下图所示的画面。在前妻李静蕾曝光前,王力宏的微博评论基本是这样的:“结婚是为了幸福,离婚也是如此”、“爱人分分合合”、“尊重兄弟的选择”。曝光后,王力宏的微博评论变成了这样:“重新定义简单和简单”、“心肠不好的人”、“底层”、“私生活很简单?你侮辱简单这个词”、“人设”崩溃了”。PS:愤怒的吃瓜群众还输出了很多“脏话”,我排除在词云图中。让我们换个方向,玩得开心。我决定用数据来探究:吃瓜群众最喜欢的表情是什么?我提取了10万条评论中的emoji表情,首先提取了微博评论中可以使用的所有emoji名称(这里只展示了一部分)。emoji_list=[[[小红花]],"[微笑]","[可爱]","[太开心]","[鼓掌]","[嘻嘻]","[哈哈]","[笑哭]、[眨眼]、[馋嘴]、[黑线]、[汗]、[抠鼻]、[哼]、[怒]、"[Grievance]","[Poor]","[Disappointment]","[Sadness]","[Tears]","[Allowsadness]"]用于判断是否是一个emojidefemoji_lis(string):entities=[]foriinemoji_list:如果iinstring:entities.append(i)returnentitysemoji_s=[]forindex,rowindf_1.iterrows():]]jitextes=str(row_text'extend(emoji_lis(text))c=collections.Counter(emoji_s)print(c)获取每个emoji出现的次数:同样使用Matplotlib绘制极坐标输出结果如下:匹配评论中收集的表情最后选择根据出现的次数排前8位,做成极坐标图,找出排行前8位的表情分别是:悲伤、泪水、云背、微笑、狗狗、吐槽、单身狗、吃瓜。自出道以来就被称为“优质偶像”。他家世好,才华横溢,颜值高。出道多年,他很少看到负面的东西。现在看来,优质的皮肤只是一个面具。他在千千万万的选择中选出了最好的妻子,却在她多年的忍耐中有了进步,愈发的坚韧。正如李静蕾在长文中所说,“如果你的演艺事业受到影响,那是你做出的选择造成的,而不是我。”