应浙江大学心理系研博会邀请,笔者于24日晚做了一场关于利用Python进行数据分析的讲座,现将分享的材料稍作整理,希望能帮助更多的在科研等活动中需要此类工具的同学。
工具链与流程
从全景视角来看数据分析,我们需要关心的只有两个部分:1. 有哪些工具可以使用?2. 整体的流程是怎么样的?
一般地,数据分析需要的工具可以分为几类:
- 解释器:python3.5 + , python2已经停止维护了,所以不推荐, 官网链接。
- 环境管理工具: Anaconda 已经包含大部分数据科学相关的三方库,无需再手动安装,官网链接。
- 编辑器: Jupyter Notebook, 可以将公式、分析、代码、结果等结合在一个文档中,非常方便梳理思路和展示成果,支持部署在本地或远程服务器中,通过浏览器访问,更加轻便, 官网链接。
- 第三方库:
- NumPy:提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库,官方文档。
- Pandas: 基于NumPy的一种工具,为了解决数据分析任务而创建,可以处理不规整的数据。Pandas 纳入了一些标准的数据模型,提供了高效操作百万级别数据集所需的工具。官方文档。
- SciPy: 一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。官方文档
- Scikit-Learn: 集成了众多的机器学习模型,主要分为六个部分,分类、回归、聚类、数据降维、模型选择、数据预处理。官方文档。
- statsmodels: 用于拟合多种统计模型,执行统计测试。statsmodels包含更多的“经典”频率学派统计方法,而贝叶斯方法和机器学习模型可在其他库中找到。官方文档。
- Matplotlib(Seaborn): 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形, 可以通过几行代码生成各种统计图表。Seaborn在Matplotlib基础上构建,能够提供更好的视觉效果。Matplotlib官方文档,Seaborn官方文档。
数据分析的流程可以概括为四个大步骤:
- 数据采集
- 内部数据
- 开源数据
- 爬虫爬取
- 购买数据
- 数据预处理: 看似最不起眼的步骤,往往消耗最多的时间。
- 数据导入
- 数据检查
- 数据清洗
- 数据规约
- 数据变换
- 数据聚合
- 数据分析(部分方法):重点在于理解理论背后的思想,至于编程工作往往只需调用一下API即可。
- 假设检验
- 方差分析
- 相关分析
- 回归分析
- 据类分析
- 因子分析
- 时间序列分析
数据或结果可视化
图表:柱状图、折线图、散点图等等。(详细类型及适用范围见下图,图片来源知乎)
工具:Python、Excel或其他BI工具均可。
学习资料分享
授人以鱼不如授人以渔,这一节分享关于Python基础和数据分析的相关资料,包含视频、博客、书籍等。一般地,对初学者来说,以视频课程学习为先,第一是因为视频可以较为完整的呈现编程的过程,而文字资料不太容易面面俱到,且视频课程往往有讨论区和课后作业,能够给学生提供良性的反馈,事半功倍;当初步入门的时候,视频学习的效率是不如书籍或博客的,文字资料可以快速定位至感兴趣的章节进行重点学习,而视频较为困难;当开始着手项目时,就更适合挑选大而全的资料作为一个字典,有问题时再查询。不同阶段适合使用不同的资料,无需持一种非此即彼的态度。
Python资料
对于没有Python基础的同学来说,那就必须先搞定语言基础,下面列举一些质量有保证的资料:
- 视频课程,有作业和讨论区,能够及时得到反馈,最适合小白的方式。
- Coursera: Python for Everybody specialization (University of Michigan, Charles Severance) 注:coursera有些课程需要注册费,但也可以写申请信免费上课,如果确实经济上力有不逮,可以走这个通道。
- Coursera: Introduction to Scripting in Python Specialization (Rice University)
- Datacamp: Data Analyst Track
- 中国大学MOOC Python程序语言设计
- Python 官方文档
- 系列博客:
- 问题解决(不止适用于python, 编程世界的大部分疑难解决方案都在其中):
- stackoverflow: 一般的编程问题(bug)都可以找到答案,重点是合理的描述问题。
- Geeksforgeeks: 更综合一点的博客,更多的是给出一个具体的问题的解决方案。
- Github repo的issue区:遇到少见的报错,如果前面几种方式都无法解决,可以看看官方库中的issue是否对此有说明,有可能并不是你的问题。
- math stackexchange: 数学问题解答社区,比较适合数据科学。
- 搜索引擎: google为上,baidu为下。常备一些常用的搜索引擎技巧,如指定特定网站搜索、指定文件类型搜索等。
数据分析学习资料
其中公开课和书籍是帮助建立起数据分析的完整图景,代码示例可以尝试这修改来验证自己的想法,各类库的文档和cheating sheet主要用来检索合适的API。
公开课
书籍:
代码(和上书对应):
各类库的官方文档(部分):
Pandas: https://www.pypandas/
Numpy: https://www.numpy.org/
Matplotlib: https://matplotlib.org/
Cheating sheets, 下图为Pandas的部分API及使用范例,更多sheet详见以下repo。
更多编程学习内容可以关注公众号”CodingSirTutor”, 回复“心理系讲座”获取讲座ppt及案例代码文件。