原标题:Python数据分析实战案例:统计分析微信朋友圈数据(附实操视频)
本文内容将通过一个具体实例讲解将朋友圈数据导出为JSON文件的方法,并介绍使用Python统计分析JSON数据的过程。
注:本文中涉及的实例文件为《Python数据分析从入门到精通》随书资源文件
0
1
将朋友圈数据导出到JSON 文件
使用开源工具WeChatMomentExport导出微信朋友圈数据,WeChatMomentExport的源码地址和使用教程请参考https://github.com/Chion82/WeChatMomentExport
如图1所示。
图1.使用WeChatMomentExport 导出数据
使用WeChatMomentExport可导出如下所示的分类信息,每一个分类信息都保存到对应的JSON文件中。
发朋友圈数量排名。
朋友圈点赞数排名。
被点赞数排名。
发评论数量排名。
朋友圈收到评论数量排名。
被无视概率排名(评论被回复数/写评论数,条件为 写评论数>=15)。
发投票/问卷调查类广告数排名。
0
2
统计处理JSON 文件中的朋友圈数据?
使用WeChatMomentExport导出数据后,接着使用Python统计分析朋友圈的各类信息。实例文件wechat_moment_stat.py的功能是分别统计处理7个JSON文件中的数据,然后输出显示统计结果。文件wechat_moment_stat.py的具体实现流程如下所示。
通过函数get_user获取每个朋友圈用户的详细信息,具体实现代码如下所示。
def get_user(user_name):
foruser_info in result:
ifuser_info['user'] == user_name:
returnuser_info
user_info= {
'user': user_name,
'moments': [],
'post_comments': [],
'replied_comments': [],
'received_comments': [],
'post_likes': 0,
'received_likes': 0,
'spam_counts': 0,
}
result.append(user_info)
returnuser_info
编写函数is_spam提取朋友圈留言中的信息,具体实现代码如下所示。
def is_spam(moment_text):
if (' 投' in moment_text and ' 谢' in moment_text):
returnTrue
if (' 投票' in moment_text):
returnTrue
if (' 问卷' in moment_text):
returnTrue
if (' 填' in moment_text and ' 谢' in moment_text):
returnTrue
returnFalse
编写函数handle_moment处理留言信息,具体实现代码如下所示。
defhandle_moment(moment):
user_info= get_user(moment['author'])
user_info['moments'].append(moment)
user_info['received_likes']= user_info['received_likes'] + len(moment
['likes'])
user_info['received_comments'].extend(moment['comments'])
if(is_spam(moment['content'])):
user_info['spam_counts']= user_info['spam_counts'] + 1
forcomment_info in moment['comments']:
comment_user= get_user(comment_info['author'])
comment_user['post_comments'].append(comment_info)
if(comment_info['to_user'] != ''):
replied_user= get_user(comment_info['to_user'])
replied_user['replied_comments'].append(comment_info)
forlike_info in moment['likes']:
like_user= get_user(like_info)
like_user['post_likes']= like_user['post_likes'] + 1
排序处理7类信息,具体实现代码如下所示。
for moment_info in origin_data:
handle_moment(moment_info)
f = open('user_output.json', 'w')
f.write(json.dumps(result))
f.close
post_moment_rank = sorted(result, key=lambdauser_info: len(user_info
['moments']), reverse=True)
post_like_rank = sorted(result, key=lambda user_info:user_info['post_
likes'], reverse= True)
received_like_rank = sorted(result, key=lambdauser_info: user_info
['received_likes'], reverse=True)
post_comment_rank = sorted(result, key=lambdauser_info: len(user_info
['post_comments']), reverse=True)
received_comment_rank = sorted(result, key=lambdauser_info: len(user_info
['received_ comments']), reverse=True)
no_reply_rank = sorted(result, key=lambdauser_info: ((float(len(user_
info['replied_comments']))/len(user_info['post_comments'])) if len(user_info
['post_comments'])>0 else 999))
spam_rank = sorted(result, key=lambda user_info:user_info['spam_counts'],
reverse=True)
f = open('post_moment_rank.json', 'w')
f.write(json.dumps(post_moment_rank))
f.close
打印输出发送朋友圈信息最多的前5位数据,具体实现代码如下所示。
print(' 前5 位点赞数量最多:')
temp_list = []
for i in range(5):
temp_list.append(post_like_rank[i]['user']+ '(%d 赞)' % post_like_
rank[i]['post_likes'])
print(', '.join(temp_list))
f = open('received_like_rank.json', 'w')
f.write(json.dumps(received_like_rank))
f.close
打印输出前5位获得最多赞的用户信息,具体实现代码如下所示。
print(' 前5 位获得最多赞:')
temp_list = []
for i in range(5):
temp_list.append(received_like_rank[i]['user']+ '(%d 赞)' % received_
like_rank[i] ['received_likes'])
print(', '.join(temp_list))
f = open('post_comment_rank.json', 'w')
f.write(json.dumps(post_comment_rank))
f.close
打印输出前5位评论数量最多的用户信息,具体实现代码如下所示。
print(' 前5 位评论数量最多:')
temp_list = []
for i in range(5):
temp_list.append(post_comment_rank[i]['user']+ '(%d 评论)' % len(post_
comment_rank[i]['post_comments']))
print(', '.join(temp_list))
f = open('received_comment_rank.json', 'w')
f.write(json.dumps(received_comment_rank))
f.close
打印输出前5位朋友圈评论最多的用户信息,具体实现代码如下所示。
print(' 前5 位朋友圈评论最多:')
temp_list = []
for i in range(5):
temp_list.append(received_comment_rank[i]['user']+ '(%d 评论)' % len
(post_comment_rank[i]['received_comments']))
print(', '.join(temp_list))
f = open('no_reply_rank.json', 'w')
f.write(json.dumps(no_reply_rank))
f.close
f = open('spam_rank.json', 'w')
f.write(json.dumps(spam_rank))
f.close
打印输出收到评论回复数/写评论数前5名且发出评论数>=15用户的信息,具体实现代码如下所示。
print('================================')
print(' 前5 名(收到评论回复数/ 写评论数且发出评论数>=15 ):')
temp_list = []
for user_info in no_reply_rank:
iflen(user_info['post_comments']) < 15:
continue
if (len(temp_list) > 5):
break
temp_list.append(user_info['user']+ ('( 收到评论回复%d, 写评论%d)' % (len
(user_info['replied_comments']), len(user_info['post_comments']))))
print(', '.join(temp_list))
执行后打印输出朋友圈的统计结果如下所示。
前5 位发最多朋友圈:
Joe (69 条), xxx (62 条), 嬴子夜。(58 条), xxx(46 条), psh(40 条)
前5 位点赞数量最多:
Saruman(33 赞), xxx (28 赞),ChiaChia.Ý(27 赞), ❄ ️Max ❄ (27 赞), 郭含阳(23 赞)
前5 位获得最多赞:
陈思君(38 赞), 404(32 赞), (29 赞), Justin Tan(27 赞), 杨宗炜(26 赞)
前5 位评论数量最多:
杨宗炜(110 评论), 404(95 评论), Saruman(94 评论), MATTHEW °Д°(77 评论), Joe (57 评论)
前5 位朋友圈评论最多:
杨宗炜(209 评论), 404(130 评论), Joe (37 评论), MATTHEW °Д°(68 评论), ❄ ️Max❄ (69 评论)
================================
收到评论回复数/ 写评论数且发出评论数>=15 :
Joe ( 收到评论回复13, 写评论57), jjy( 收到评论回复4, 写评论16), Saruman( 收到评论回复30, 写评论94), 玺玺玺( 收到评论回复7, 写评论21), ChiaChia.Ý( 收到评论回复6, 写评论15), 郭含阳( 收到评论回复14, 写评论33)
毫无疑问,Python 是当下最火的编程语言之一。对于许多未曾涉足计算机编程领域 的「小白」来说,深入地掌握 Python 看似是一件十分困难的事。其实,只要掌握科学的学习方法并制定合理的学习计划再加上坚持不懈的努力,你就可以通过学习Python,走进编程的殿堂。
那么,作为 「小白」,在刚刚接触Python数据分析的时候,需要注意什么,需要从哪些知识学起呢?为了帮助大家更好地解决这些问题我们将面向广大Python学习者开放一个全新的视频直播课程——Python开发从入门到精通系列课程。
本课程分为三讲:包含基础知识、Web开发、数据分析三大板块。
本周四(7月16日)
20:00—21:00
本系列课程的第二讲
《小白如何学习Python数据分析》
将从就业前景、应用领域、数据存储方式、数据可视化、实例演示等几方面入手,帮助读者快速找到Python数据分析学习方法。
从你开始学习编程的那一刻起,就注定了以后所要走的路:从编程学习者开始,依次经历实习生、程序员、软件工程师、架构师、CTO等职位的磨砺;当你站在职位顶峰的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码、寻找并解决Bug、不停测试程序和修改项目的经历;不可否认的是,只要你在自己的程序开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到应用的收获。
本节课程聚焦当下热门编程语言Python,从就业前景、应用领域、数据存储方式、数据可视化、实例演示几方面入手,帮助读者找到Python数据分析学习路径。
开放时间:2020年7月16日20:00
主讲老师:管西京
机械工业出版社天猫旗舰店
管西京
管西京,山东大学计算机硕士,精通Python、Java、C#、C语言、C++等主流编程语言,擅长底层技术和应用程序的结合运用,具有丰富的Python数据分析、运维自动化和云计算开发经验。现就职于浪潮信息研发中心,负责浪潮云的开发和维护工作。
相关著作:
★小白如何学习Python数据分析
1) Python数据分析相关人才的 就业前景
2) Python数据分析技能应用领域
3) 数据存储方式
4) 数据可视化
5) 实例演示
“Python”注意,一定要发送“Python”
点击图片可进入直播回看链接文章返回搜狐,查看更多
责任编辑: