Archive Album 使用Python分析社交网络数据 AUG,03 2014 Python简介 数据抓取 一、直接抓取数据 二、模拟浏览器抓取数据 三、基于API接口抓取数据 数据预处理 可视化 数据分析 节点属性 网络属性 传播属性 扩散深度 扩散速度 空间分布 结语 参考文献 在线社交网站为人们提供了一个构建社会关系网络和互动的平台。每一个人和组织都可以通过社交网站互动、获取信息并发出自己的声 音,因而吸引了众多的使用者。作为一个复杂的社会系统,在线社交网站真实地记录了社会网络的增长以及人类传播行为演化。通过抓取 并分析在线社交网站的数据,研究者可以迅速地把握人类社交网络行为背后所隐藏的规律、机制乃至一般性的法则。 然而在线社交网络数据的获取方法有别于线下社会数据的获取(如普查、社会调查、实验、内容分析等)、数据的规模往往非常大(称之 为“大数据”并不为过)、跨越的时间范围也相对较长(与社会调查中的横截面数据相比),常规的数据分析方法并不完全适用。例如传统 的社会调查的数据往往样本量有限,而在线社交网络中的样本量可以达到千万甚至更多。因而,研究者迫切得需要寻找新的数据获取、预 处理和分析的方法。本章的内容具体包括数据的抓取、数据预处理、数据可视化和数据分析部分。 Python简介 本章将简要介绍使用python分析社交网络数据的方法。Python是一种广泛使用的高级编程语言,具有可读性强、编写容易、类库丰富等 特点。作为一种“胶水语言”,它可以将使用其他语言编写的各种模块(尤其是C/C++)轻松地联结在一起。自从1991年推出第一个正式 版本,因其使用方便,Python社区迅速发展,越来越多的程序员开始使用Python编写程序并贡献了各种功能强大的类库。它被TIOBE编程 语言排行榜评为“2010年度编程语言”。 除了免费、功能强大、使用者众多之外,与R和MATLAB相比,Python是一门更易学、更严谨的程序设计语言。如同其它编程语言一样, Python语言的基础知识包括:类型、列表(list)和元组(tuple)、字典(dictionary)、条件、循环、异常处理等。关于这些,初阶读者 可以阅读《Beginning Python》一书(Hetland, 2005)。作为一个相对非常完善的编程语言,使用Python编写的脚本更易于理解和维护。 另外,Python中包含了丰富的类库。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV。 Python本身的科学计算类库发展也十分完善,例如NumPy、SciPy和matplotlib等。就社会网络分析而言,igraph, networkx, graph-tool, Snap.py等类库提供了丰富的网络分析工具。 读者可以根据个人电脑的操作系统安装相应的Python版本。目前最新的Python版本为3.0,但是通常使用者会选择使用更稳定的2.7版本。 虽然使用者也可以使用文本编辑器编写代码,但是使用体验不如使用好的编译器。编译器是编写程序的重要工具。目前,免费的Python编 译器有Spyder、PyCharm(免费社区版)、Ipython、Vim、 Emacs、 Eclipse(加上PyDev插件)。对于使用Windows操作系统的用户,推荐使 用Winpython。Winpython内置了Spyder为编译器,与Python(x,y)相比大小适中;免安装,下载后解压即可用;安装类库很方便,并且内 置了NumPy、SciPy等类库。 数据抓取 目前社交网站的公开数据很多,为研究者检验自己的理论模型提供了很多便利。例如斯坦福的社会网络分析项目就分享了很多相关的数据 集。社交网站为了自身的发展,往往也通过各种合作项目(例如腾讯的“犀牛鸟项目”)和竞赛(例如Facebook通过Kaggle竞赛公布部分 数据)向研究者分享数据。 但是,有时候研究者还是被迫需要自己收集数据。受限于网站本身对于信息的保护和研究者自身的编程水平,互联网数据的抓取过程依然