前些天在微博看到新浪财经的《中国年轻人正带领国家走向危机?》 一文, 立马就被标题震惊到了, 文章内容大家可自行阅读, 在此不做评价.
但正所谓:"人在家中坐, 锅从天上来", 面对如此耸人听闻的言论, 我更好奇的是评论区里大家的反应是怎样的, 舆论会是如何. 于是拿出键盘, 简单爬虫测试了下, 发现能很便捷的爬取到评论数据后, 就决定开启这个项目, 并看看能分析和挖掘出什么信息, 而且刚之前完成了当你点开这首《八月》的歌: 9400 余条评论的分析与挖掘》 https://zhuanlan.zhihu.com/p/41516392 这个小项目, 数据和代码开源在 GitHub: https://github.com/DesertsX/gulius-projects (jupyter notebook 里涉及的内容也很多, 之后会进行调整并拆分开来), 正好也是评论数据的挖掘, 所以部分代码和经验可以迁移过来, perfect.
此外, 介绍并安利下 gulius-procjects https://github.com/DesertsX/gulius-projects 这个项目, 创建的初衷是开源自己完成过的小项目, 主要是爬虫, 数据分析与挖掘, 可视化等用 Python 的全套实现, 尽量用 Excel 等手动辅助, 借此磨练下代码能力, 或者准确地说是提升下 pandas 的熟练程度(目前两个项目下来, 进步神速); 另外将一些 "野生" 的数据分析, 挖掘, 可视化的套路与模板整合起来, 作为 "武器库" 方便日后迁移与应用.
虽然在知乎专栏《Data Analysis & Viz》 https://zhuanlan.zhihu.com/c_122608198 也更新过不少相关文章, 但完全用 Python 实现的几乎没有, 虽说不必转牛角尖的追求代码实现, 聊斋云 "黄狸黑狸, 得鼠者雄", 各种工具能用来达到目的就是好的, 但熟练掌握以 pandas 为核心的数据科学的技术, 也能为日常随心所欲 (没有为所欲为) 的完成些项目, 或后续数据挖掘, 机器学习里数据清洗, 数据预处理, 特征工程等提供技术保障, 因此何乐而不为呢. 配图来源: Pandas Python For Data Science
以上扯了这么多, 其实也是因为本文先不展开本次针对新浪财经文章评论挖掘的细节, 只是作为个引子以及全局性的带大家过一遍已经完成的内容, 并且之后会开启 "手把手教你完成一个数据科学小项目" 的系列文章(真的是膨胀了,"数据科学" 四个字都敢用起来了), 并以本项目为例, 从爬虫, 数据提取与准备, 数据异常发现与清洗, 分析与可视化等等, 全部涉及, 感兴趣的朋友学完还是应该能学到些东西的.
接下来就是走一遍将涉及的, 已经完成的内容. 首先是爬虫入口, 也就是评论区加载评论的地方, 本次爬虫真的很简单, 虽然 url 里有看两个似随机的参 jsvar=loader_1533711754393_51961031, 但稍有经验的应该能立马破解, 会抓包的朋友可以去试着爬下数据, 不会的也不要急, 下一篇文章就会涉及:
根据一定的数据存储和信息提取步骤完成前面数据准备的过程, 另外本次也发现爬虫拿到的数据里有每个人评论时设备的 ip 地址与城市信息, 于是又写了个爬虫, 调用 ip 查询的网站进行查询, 并将结果一并存入数据中:
不过因为当时正好 "科学上网", 所以看到自己的 ip 和地理位置也并不是真实的情况, 也注意到了爬取到的数据里有很多海外定位, 无法确定是真实的, 还是 "科学上网" 的烟雾弹:
数据准备的差不多后, 开始看看文章评论数的变化情况, 用 pyecharts 绘制了每小时评论数的柱状图和评论数逐小时累积的曲线图的组合图, 并发现了数据中异常情况的存在, 于是 "一朝回到解放前", 需要从头排雷:
不过代码都在, 重新运行一遍, 爬一遍数据, 并根据排查结果, 删除重复数据, 按照时间顺行排序后, 卷土重来, 组合图就正常多了, 美滋滋:
接下来把地理位置, 首先就要根据原始的, 杂乱的位置信息分别提取出相应的省份与城市, 这一过程也是值得好好讲讲的, 大概采取了 "分而治之" 的思想(知识点, 考点, 逃...):
总而言之, 是拿到了满意的数据格式, 轻松绘制评论区人员的省份分布统计图:
当然更好的方式是画到中国地图上啦!
同样的, 城市分布情况, 也如法炮制下:
地图的效果更加的璀璨美观:
当然, 虽说尽量不用外部工具, 但最后还是用了下 BDP 来结合时间数据和地理数据, 实现超级酷炫的效果:
文章评论的动态热力图, 直观酷炫, 但其实实现方式很简单, 且看后续文章的介绍哈, 卖个关子:
最后是不能免俗的词云图, 看看大家频繁提到的词语都有哪些:
以及 Top20 emoji 的使用情况, 不过网页上看不到每个表情的具体样子, 还需再看看有什么途径可以像开头网易云音乐歌曲评论里的 emoji 一样对应上:
以上先粗浅的过了下本项目的大概内容, 可能还会补充. 接下来 "手把手教你完成一个数据科学小项目" 的系列文章, 将全面涉及本项目各从爬虫, 数据提取与准备, 数据异常发现与清洗, 分析与可视化等等的细节, 并将代码统一开源在 GitHub: https://github.com/DesertsX/gulius-projects , 感兴趣的朋友可以先行 star 哈.
来源: http://www.jianshu.com/p/cd9ce03ab3f3