内容简介
伯尼·霍根(Bernie Hogan)现为牛津互联网研究院(Oxford Internet Institute)的资深研究员。霍根的研究主要集中在运用计算工具为社会科学中的核心问题提供创新性的解决方案方面。本书是他在数据方法研究方法方面的力作。他认为并非所有数据都能被谨慎、恰当地使用,有时数据可能受到政治化、隐瞒、审查或篡改的影响。算法既可能导致错误信息的“过滤气泡”效应,又可能引发“信息回声室”现象。对这些问题的探讨往往依赖于有关社交媒体平台自身的数据,而不仅仅局限于传统调查或统计表格的分析。本书的技术核心在于如何有效地描述数据。在社会科学(乃至整个科学领域)中,最具影响力的论断往往来自于我们如何利用观察到的数据来更新对世界的预期。这些预期可能受到先前研究的启发;它们可能基于统计属性,也可能源于规范性价值的引导,并反过来加剧其所揭示问题的不公,尤其是在讨论人工智能的合法应用时,而本书通过案例对于数据伦理进行了生动地讨论。本书还填补了在涉及Python、Stata或R的论文和入门课程之间,缺乏系统探讨如何实际思考数据、如何将数据从一种形式处理并转化为另一种形式的空白。本书从实践角度切入,在教会读者掌握获取非结构化数据的核心技能的同时,旨在将这些非结构化数据转化为能够有效代表社会结构中某些重要方面的数据对象。本书的目标是在您进一步深入社会科学时,能够对数据分析的方法感到自如,它并非仅仅是一本编程教材。其初衷是作为探索社会数据科学(或类似领域,如计算社会科学)这一跨学科领域的基础性导论,特别聚焦于在线数据资源的解析与应用。它不同于传统的社会科学统计学著作,而是以Python为工具,探讨在社会科学中的数据分析应用。本书在编程过程中融入了许多社会科学概念,尤其是社会学,同时也涵盖经济学、传播学、政治学和心理学等领域的相关概念,所以也适合相关专业的学生在做数据分析时参考。
章节目录
绪论 1
一、开拓思路:社会科学中的编程思维 1
二、读者定位 5
三、选择Python 的理由 6
Python基础知识要求 7
四、Python 版本要求 9
第一部分:编程思维 10
第二部分:数据获取与转换 11
第三部分:数据解读:预期与观察 12
第四部分:社会数据科学实践:四种方法 12
五、数据科学的基础与挑战 13
六、本书的写作风格与代码规范 15
七、实践导向 16
第一部分 编程思维
第1 章 在何种尺度上来思考生活 21
1.1 社会科学的未来发展方向 21
1.2 (PO) DIKW:数据科学的潜在理论框架 22
1.3 超越界面的思考 28
1.4 固定成本、变量成本与边际成本 31
1.5 FREE 原则 36
1.6 伪代码 42
1.7 本章小结 45
1.8 延伸阅读 46
1.9 扩展与反思 47
第2 章 Series 48
2.1 Series 数据结构 48
2.2 更改Series 69
2.3 本章小结 79
2.4 扩展与反思 79
第3 章 DataFrame 81
3.1 从Series 到DataFrame 81
3.2 构建DataFrame 84
3.3 从DataFrame 中获取数据:查询、掩码与切片 88
3.4 数据修改 94
3.5 高级主题:NumPy 与NumPy 数组 109
3.6 本章小结 116
3.7 延伸阅读 117
3.8 扩展与反思 118
第二部分 数据获取与转换
第4 章 文件类型 121
4.1 将数据导入DataFrame 121
4.2 CSV 格式 124
4.3 Excel 格式 130
4.4 JSON 格式 134
4.5 HTML 和XML 格式 142
4.6 序列化 156
4.7 本章小结 157
4.8 扩展与反思 158
第5 章 数据的合并与分组 160
5.1 跨表数据合并 160
5.2 使用concat 向DataFrame 添加数据 161
5.3 合并键 169
5.4 理解连接操作 174
5.5 数据的分组与聚合 180
5.6 长格式与宽格式数据 186
5.7 使用SQL 数据库 188
5.8 本章小结 196
5.9 延伸阅读 196
5.10 扩展与反思 197
第6 章 通过编程访问网络数据 199
6.1 数据访问I:远程网页数据的获取 199
6.2 基于分页技术的网络数据收集方法 209
6.3 其他网络相关问题的考量 216
6.4 伦理问题的考虑 217
6.5 本章小结 220
6.6 延伸阅读 221
6.7 扩展与反思 222
第7 章 通过API 获取数据:以Twitter 和Reddit 为例 223
7.1 访问API:网络抽象 223
7.2 Twitter API 数据获取指南 229
7.3 使用API 封装器简化数据访问 239
7.4 数据收集管道的考量 244
4 从社会科学到数据科学
7.5 API 与认识论:数据访问对知识获取的影响 247
7.6 本章小结 250
7.7 延伸阅读 251
7.8 扩展与反思 252
第三部分 数据解读:预期与观察
第8 章 研究问题 255
8.1 引言 255
8.2 归纳、演绎与溯因的研究问题 257
8.3 避免单纯描述:科学中的预期与系统观察 261
8.4 预测与解释 262
8.5 将假设与方法联系起来 265
8.6 操作化 267
8.7 研究问题的局限性 269
8.8 本章小结 270
8.9 延伸阅读 271
8.10 扩展与反思 271
第9 章 可视化预期:统计检验与图形分析 273
9.1 引言:为什么要展示数据? 273
9.2 可视化分布 276
9.3 使用卡方检验测试均匀分布 282
9.4 使用回归分析检验均匀分布 285
9.5 比较两个分布与两个群体 299
9.6 本章小结 314
9.7 延伸阅读 315
9.8 扩展与反思 316
第四部分 社会数据科学实践:四种方法
第10 章 数据清洗 319
10.1 数据作为社会背景的形式 321
10.2 持续数据清洗示例:Stack Exchange 326
10.3 设置索引 334
10.4 处理缺失数据 335
10.5 清洗数值数据 337
10.6 清洗网络数据 339
10.7 清洗数据列表 343
10.8 时间解析 348
10.9 正则表达式 350
10.10 数据存储 355
10.11 本章小结 356
10.12 延伸阅读 357
10.13 扩展与反思 357
第11 章 自然语言处理:文本清洗、摘要与分类 358
11.1 文本编码 358
11.2 从文本到语言的转换 362
11.3 自然语言处理的简单工作流程示例 363
11.4 自然语言处理(NLP) 技术 371
11.5 本章小结 383
11.6 延伸阅读 384
11.7 扩展与反思 385
第12 章 时间序列数据:揭示周期与趋势 387
12.1 引言:时间的重要性 387
12.2 日期与datetime 模块 389
12.3 再探Movie Stack Exchange 数据 394
6 从社会科学到数据科学
12.4 pandas datetime 特征提取 397
12.5 时间周期分组方法:重采样 401
12.6 利用Pandas 中的切片与日期时间索引 404
12.7 移动窗口中的数据应用 407
12.8 本章小结 411
12.9 进一步探索 412
12.10 扩展与反思 414
第13 章 网络分析方法:构建关系结构 415
13.1 引言:表征社会结构的联系 415
13.2 创建网络图 418
13.3 添加属性 422
13.4 绘制网络图 425
13.5 网络中的子群与社区 432
13.6 基于数据创建网络 434
13.7 本章小结 447
13.8 延伸阅读 449
13.9 扩展与反思 450
第14 章 地理信息系统:空间与地点数据分析 452
14.1 引言:从空间到地点 452
14.2 空间数据的类型 453
14.3 创建自定义GeoDataFrame 462
14.4 本章小结 472
14.5 延伸阅读与拓展 473
14.6 扩展与反思 475
第15 章 结论:从数据科学到社会科学的回归与反思 477
参考文献 481
术语汇编 498