Py学习  »  Python

书籍推荐:用Python实现可复现的数据科学

连享会 • 4 月前 • 112 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:连享会:结构模型·2025 现场班
嘉宾:谭用,南京财经大学
时间:2025 年 6 月 7-8 日
地点:天津大学 (卫津路校区西门)
咨询:王老师 18903405450(微信)

   

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

作者:高瑜 (格罗宁根大学)
邮箱:gaoyuashley@163.com

编者按:本文主要摘译自下文,特此致谢!
Source:Reproducible Data Science with Python by Valentin Danchev. -Link-.

  • Title:书籍推荐:用Python实现可复现的数据科学
  • Keywords:数据科学,数据分析,数据可视化,Python,书籍

1. 简介

本推文为大家介绍 Dr. Valentin Danchev 的新书 《Reproducible Data Science with Python》。

作者任职于伦敦玛丽女王大学商学院,他在数据分析领域拥有丰富的研究经验,且注重研究结果的可复现性,因此他撰写的该教材具有完备的可运行的代码及相应的数据库。

此外,作者在本书的 GitHub 上精心整理了一系列资源,涵盖从书籍和文章到简短的视频讲座,以及编程和数据分析教程。这些资源旨在帮助读者更全面地掌握 Python,并能够将其灵活应用于实际项目中。

1.1 书籍介绍

本书采用与 COVID-19 疫情相关的实际社会数据集,提供了一个全面的入门指南,内容涉及开放、可重复且符合伦理标准的数据分析。书中涵盖了实用的 Python 编程技巧、现代开源计算工具以及数据科学技术。

书中探讨的主题广泛,包括开放且可重复的研究流程、数据清理技术、探索性数据分析、数据可视化方法、模式发现 (例如聚类分析)、预测模型与机器学习、因果推断以及网络分析等。

通过这本教材,读者将能够以一种易于理解的方式学习到实用的数据科学技能。这些技能包括数据整理、聚类分析、重采样技术以及对各种数据源进行可视化处理。此外,教材还深入讲解了机器学习技术的应用,例如使用交叉验证来降低模型过拟合的风险;在因果推断方面,书中介绍了如何利用因果图识别并控制潜在的混杂因素;在网络分析部分,教材涵盖了社区检测方法,帮助读者发现紧密联系的社群。

1.2 什么是可重复的数据科学 (Reproducible Data Science)?

在典型的数据科学生命周期中,我们将从一个研究问题开始,然后选择数据集,预处理数据,执行描述性分析以探索数据的基本特征,然后对数据进行建模以预测结果或建立因果关系。在整个数据科学生命周期中,研究过程的透明度和计算可重复性至关重要。本书通过解决五类任务,使用编程从不同的数据集中得出结论。

  1. 数据预处理——使用数据清理、数据整理和数据转换技术准备数据以供分析。

  2. 描述性统计分析——使用探索性数据分析、可视化和自动发现技术发现数据中的模式。

  3. 预测——通过运用从简单回归到 (监督) 机器学习的技术,利用我们已知的结果信息对未知结果做出明智的猜测。

  4. 因果数据分析——通过应用因果图、反事实和因果推断技术研究因果问题。

  5. 统计推断——使用重采样方法和相关技术量化我们的确定性程度,以确定我们在数据中发现的内容是否适用于不同的场景。

1.3 适合人群

这本教材非常适合社会科学、公共卫生及相关领域的学生及研究人员,特别对想要通过多样化的数据集研究现实问题,但缺乏数据科学知识和编程技能的读者大有裨益。书中将从基本原理开始,讲授数据分析所需的编程技能。读者只需掌握基本的代数和描述性统计即可,不需要编程基础。

2. 分章节内容介绍

作者在引言部分介绍了关于这本教科书的大纲、学习目标、学习资源、数据集的使用,并讲解了如何最大程度的利用开放学习资源等。

本书涵盖十个章节,每个章节都提供了范例数据和 Python 代码,以及书稿的 Jupyter Notebook 原始文件。各章提要如下:

  • About the textbook
  • End-to-End Data Science Project
  • Python Data Science on the Cloud
  • Open Reproducible Data Science Workflow
  • Data Design and Data Wrangling
  • Data Exploration and Data Visualisation
  • Pattern Discovery using Unsupervised Learning
  • Prediction using Supervised Learning
  • What Causes What? Introduction to Causal inference
  • Network Analysis
  • Data Ethics

2.1 科学项目的完整流程 (END-TO-END DATA SCIENCE PROJECT)

第一章深入剖析了一个完整的数据科学项目流程,其围绕的研究问题是“英国在新冠疫情期间三次封锁期间的人员流动性差异”。通过对这一具体案例的探讨,读者将学习并掌握数据科学生命周期中的各个关键阶段。这包括从最初的研究问题提出、选择合适的计算工具,到获取数据时需遵循的道德规范,再到数据处理和分析,直至最终如何利用分析结果为决策制定和政策建议提供科学依据。

本章使用了 Colab 计算笔记本和 Python 开源工具,引导读者进行探索性数据分析和数据可视化,分析大量与 COVID-19 相关的实际移动数据。通过这些分析,读者能够更好地理解公共卫生政策相关的研究问题,并学会使用数据科学的方法来解决这些现实世界中的挑战。

2.2 云端使用Python进行数据科学的工作流程 (PYTHON DATA SCIENCE ON THE CLOUD)

第二章详细介绍了本书使用的编程工具——Jupyter 笔记本和 Colab 环境,Jupyter 笔记本是一个开源网络应用程序,允许创建和共享包含实时代码、方程式、可视化效果和叙述文本的文档。Colab是一个免费环境,可在 Google Cloud 上运行 Jupyter 笔记本,无需安装或设置。无需登录 Google 即可查看公开共享的笔记本。

作者提供了学习相关内容的丰富资源,列举部分常用网站如下:

Jupyter Notebook

Jupyter Notebook 教程

开始使用 Google Colab

2.3 开放可重复的工作流程 (OPEN REPRODUCIBLE WORKFLOW)

第三章介绍了本书的讨论的基础——开放可重复的工作流程,向读者介绍了什么是计算可重复性以及它为什么重要,如何在 Jupyter/Colab Notebooks 中打开可重现的工作流程,以及可重现工作流程的规则和研究报告等。

在整个教材中,作者多次强调了可重复研究工作流程的重要性,并提供了若干实用规则来确保研究的可复现性。这些规则包括详细注释代码以解释每一步的目的和实现方法;利用单元格划分来清晰地界定不同步骤,使整个过程更加透明和易于理解。此外,特别强调了记录软件依赖项的重要性,例如明确指出所使用的关键库(如 pandas)及其版本号等信息。这是因为精确记录软件环境对于保证计算结果的可复现性至关重要。

在未来重现数据分析,不仅需要复用数据和代码,还需要复用所使用的所有模块、库及其各自的版本。记录这些依赖项是一个良好的实践,这样其他人都能重新创建支撑你分析的环境。

2.4 数据设计和数据整理 (DATA DESIGN & DATA WRANGLING)

“数据整理”是收集、加载、转换和准备数据以供探索和分析的繁琐工作,据估计,数据科学家将 50% - 80% 的时间花在数据整理上。因此,第四章主要介绍了什么是数据,数据是如何产生的以及如何用 pandas 库进行数据的整理 (加载、选择和转换等)。

2.5 数据探索与可视化 (DATA EXPLORE & VISUALISATION)

本章对探索性数据分析 (Exploratory Data Analysis,简称 EDA) 进行研究。它是一种数据分析方法,使用一系列简单的定量技术 (如均值、标准差等描述性统计方法) 和可视化工具,以“开放的心态”探索数据的特征,而不急于对数据进行特定的统计假设或模型分析。EDA 通常是在数据建模之前进行的。

本章内容选用的是 COVID-19 的数据集,探索了人口流动变化的六个相关问题并进行可视化。在本章实验中,读者将学会使用 Python 库 pandas 进行数据分析,使用 SciPyNumPy 进行描述性统计和简单建模,并引入 Seaborn 库进行数据可视化。Seaborn 是基于 matplotlib 构建的 Python 数据可视化库,能够绘制出既美观又有信息量的统计图形。

2.6 使用无监督学习进行模式发现 (PATTERN DISCOVERY USING UNSUPERVISED LEARNING)

第六章介绍了社科领域中机器学习的关键概念,重点放在机器学习的一个重要分支——无监督学习,包括聚类和降维技术。

本章重点使用 Scikit-learn,即 Python 中的机器学习库进行实际数据分析。研究目标是使用两种流行的无监督学习技术将具有相似流动趋势的英国的县进行分组:k均值聚类和主成分分析 (PCA)。

2.7 使用监督学习进行预测 (PREDICTION USING SUPERVISED LEARNING)

第七章重点放在机器学习的另一个重要分支——监督学习,本章介绍了如何通过数据进行学习来完成预测任务,重点讲解了监督学习的基本概念以及常见的机器学习任务,如回归 (用于连续变量预测) 和分类 (二进制分类) 。

读者将学习如何构建简单的预测模型并评估其效果,理解模型过拟合问题及其避免策略,包括将数据分为训练集和测试集,以及使用交叉验证来评估模型的泛化能力。

此外,本章还介绍了常见的监督学习算法,如 k-最近邻 (K-NN) 和逻辑回归 (Logistic Regression),帮助读者掌握通过数据进行有效预测的核心技术。

2.8 因果推断 (CAUSAL INFERENCE)

观测数据之间有可能存在虚假的相关性,这些变量在模型中似乎是相关的,但实际上没有因果关系。因此许多模型可能会在数据中发现一些有趣的关联,这些关联看上去在统计上显著但缺乏实际意义。

如果我们的目标是实施可能在社会中引入变化的新政策或干预措施,我们需要了解问题背后的因果结构——究竟是什么导致了什么。

本章介绍了因果推断的基础知识,重点探讨了如何通过观察数据和大数据来识别因果关系,而不仅仅是相关性。通过引入因果图 (DAGs),帮助读者直观地理解不同变量之间的因果结构。

此外,这一章还解释了如何通过分析政策或干预措施 (例如居家办公政策) 对结果 (例如新冠病例数) 的影响,并将其与反事实问题进行比较,从而得出有意义的因果推断结果。

2.9 网络分析 (NETWORK ANALYSIS)

网络是一组节点 (也称为顶点) 和它们之间的一组边 (也称为链接)。在网络中,节点代表个人 (或其他实体,包括国家、组织和网页),链接代表各种社会纽带,包括友谊、亲属关系、熟人关系或超链接。

网络分析的核心理念是,节点在网络中的位置会影响其社会影响力和表现。不同的节点位置和关系模式可能导致不同的社会结果。

本章介绍了网络分析的基础,重点研究实体之间的关系,而非个体属性。与传统的表格数据不同,网络数据关注节点 (实体) 和它们之间的链接 (关系)。

在本次实验中,读者首先通过一个小型玩具网络学习基本概念和诊断方法,随后分析《星球大战 IV:新希望》中的角色社交网络,应用网络分析的理论和方法。

2.10 数据伦理 (DATA ETHICS)

本章深入介绍了数据伦理方面的挑战、原则及框架,并具体讨论了如何检测和处理数据科学模型中的偏差与不公平性。围绕“2020年英格兰 A-level 成绩评估争议”这一案例,本章系统地探讨了在数据科学中应对偏见和确保公平性所必需的工具和方法。

3. 总结

《Reproducible Data Science with Python》是一本兼具理论和实践的教材,能够帮助社会科学、公共卫生及相关领域的学生和研究人员掌握数据科学的核心技能。

全书围绕数据科学的可重复性与透明性展开,采用了与 COVID-19 疫情相关的实际数据集,系统介绍了从数据预处理、探索性数据分析到机器学习、因果推断、网络分析等各个环节。

本书通过使用 Python 和 Jupyter/Colab 等开源工具,并使用了公开数据集方便练习,同时提供了大量的相关资源供研究使用,因此读者无需复杂的编程基础,即可快速上手,并运用所学知识解决现实问题。

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh python, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:文本分析-爬虫
    • 修博文, 2024, 爬取政府工作报告文本-Python, 连享会 No.1354.
  • 专题:Stata命令
    • 刘欣妍, 2022, Stata与Python等价命令, 连享会 No.955.
  • 专题:Python-R-Matlab
    • 初虹, 2022, Python爬虫1:小白系列之requests和json, 连享会 No.887.
    • 初虹, 2022, Python爬虫2:小白系列之requests和lxml, 连享会 No.888.
    • 吴浩然, 2024, 数据爬取:美国证监会EDGAR系统数据获取及Python实现, 连享会 No.1329.
    • 周豪波, 2020, Python 调用 API 爬取百度 POI 数据小贴士——坐标转换、数据清洗与 ArcGIS 可视化, 连享会 No.20.
    • 周豪波, 2020, Python 调用 API 进行逆地理编码, 连享会 No.59.
    • 孔亦泽, 2023, 分享:公开数据库 及 数据格式转换-R-Stata-Python, 连享会 No.1272.
    • 孙斯嘉, 2020, Python 调用 API 爬取百度 POI 数据, 连享会 No.60.
    • 孙斯嘉, 2020, Python 调用 API 进行地理编码, 连享会 No.62.
    • 左从江, 2020, Python: 批量爬取下载中国知网(CNKI) PDF论文, 连享会 No.54.
    • 张春雷, 2022, Stata+Python:导入超大Excel文档的新思路-以国泰安为例, 连享会 No.1021.
    • 张洪洋, 2023, Python:文本数据增强, 连享会 No.1240.
    • 张翠燕, 2020, Python+Wind:用 Pyautogui 轻松下载 Wind 数据, 连享会 No.257.
    • 李青塬, 2022, Stata+Python:同花顺里爬取创历史新高的股票, 连享会 No.957.
    • 李青塬, 2022, Stata+Python:爬取创历史新高股票列表, 连享会 No.894.
    • 杨晓军, 2022, Stata-Python交互-10:Stata17 新特性之PyStata的配置与应用, 连享会 No.996.
    • 梁海, 2020, Python:爬取东方财富股吧评论进行情感分析, 连享会 No.440.
    • 梁淑珍, 2022, Python:Jaccard 相似度和距离, 连享会 No.1043.
    • 梁淑珍, 2022, Python:文本分析必备—搜狗词库, 连享会 No.1078.
    • 梁淑珍, 2022, Python:计算管理层讨论与分析的余弦相似度, 连享会 No.995.
    • 王俊, 2020, Python+Stata:批量制作个性化结业证书, 连享会 No.236.
    • 王卓, 2022, Python文本分析:将词转换为向量-Word2Vec, 连享会 No.1134.
    • 王卓, 2023, Python:从随机实验到双重机器学习, 连享会 No.1204.
    • 王卓, 2022, Python:绘制动态地图-pyecharts, 连享会 No.922.
    • 王文韬, 2020, Python爬虫: 《经济研究》研究热点和主题分析, 连享会 No.88.
    • 王颖, 2022, Python爬取静态网站:以历史天气为例, 连享会 No.921.
    • 王颖, 2022, Python:多进程、多线程及其爬虫应用, 连享会 No.935.
    • 王颖, 2022, Python:爬取动态网站, 连享会 No.932.
  • 专题:其它
    • 田原, 2020, ES 期望损失: Stata 及 Python 实现, 连享会 No.182.
    • 田原, 2020, VaR 风险价值: Stata 及 Python 实现, 连享会 No.179.
    • 田原, 2020, 支持向量机:Stata 和 Python 实现, 连享会 No.149.
    • 秦利宾, 2020, Python:爬取上市公司公告-Wind-CSMAR, 连享会 No.131.
    • 秦利宾, 2021, Python:爬取巨潮网公告, 连享会 No.646.
  • 专题:Stata入门
    • 秦利宾, 2020, Stata 与 Jupyter Notebook 关联的两种方法, 连享会 No.136.
    • 秦利宾, 许梦洁, 2021, Python+Stata:如何获取中国气象历史数据, 连享会 No.793.
    • 范思妤, 2023, Python:基于selenium爬取科创板审核问询, 连享会 No.1172.
    • 许梦洁, 2020, Python: 6 小时爬完上交所和深交所的年报问询函, 连享会 No.104.
    • 许梦洁, 2020, Python: 使用正则表达式从文本中定位并提取想要的内容, 连享会 No.91.
    • 许梦洁, 2020, Python: 如何优雅地管理微信数据库?, 连享会 No.90.
    • 许梦洁, 2021, Python爬虫:从SEC-EDGAR爬取股东治理数据-Shareholder-Activism, 连享会 No.744.
    • 许梦洁, 2021, Python爬虫:爬取华尔街日报的全部历史文章并翻译, 连享会 No.743.
    • 许梦洁, 2020, Python:拆分文件让百万级数据运行速度提高135倍, 连享会 No.301.
    • 许梦洁, 2020, 使用 Jupyter Notebook 配置 Stata\Python\Julia\R, 连享会 No.84.
  • 专题:Stata教程
    • 连享会, 2021, Stata-Python交互-1:二者配合的基本设定, 连享会 No.551.
    • 连享会, 2021, Stata-Python交互-2:在Stata中调用Python的三种方式, 连享会 No.552.
    • 连享会, 2021, Stata-Python交互-3:如何安装Python宏包, 连享会 No.553.
    • 连享会, 2021, Stata-Python交互-4:如何调用Python宏包, 连享会 No.554.
    • 连享会, 2021, Stata-Python交互-5:边际效应三维立体图示, 连享会 No.555.
    • 连享会, 2021, Stata-Python交互-6:调用APIs和JSON数据, 连享会 No.556.
    • 连享会, 2021, Stata-Python交互-7:在Stata中实现机器学习-支持向量机, 连享会 No.557.
    • 连享会, 2021, Stata-Python交互-8:将Stata数据导入Python, 连享会 No.558.
    • 连享会, 2021, Stata-Python交互-9:将python数据导入Stata, 连享会 No.559.
    • 连享会, 2021, 司继春:Python学习建议和资源, 连享会 No.563.
  • 专题:Stata程序
    • 连玉君, 2020, Stata程序:是否有类似-Python-中的-zip()-函数, 连享会 No.347.
  • 专题:工具软件
    • 连玉君, 2024, 从基础到 AI 助手:Python 用户最爱的 VScode 插件清单, 连享会 No.1489.
    • 连玉君, 2024, 递归算法:快速排序的 R、Stata 和 Python 实现, 连享会 No.1480.
    • 郭李鹏, 2020, Stata交互:Python-与-Stata-对比, 连享会 No.303.
    • 陈卓然, 2023, Python金融分析系列-1:日期和时间变量的处理和转换, 连享会 No.1294.
    • 陈卓然, 2023, Python金融分析系列-2:数据可视化, 连享会 No.1295.
    • 陈卓然, 2023, Python金融分析系列-3:金融时间序列, 连享会 No.1298.
    • 陈卓然, 2023, Python金融分析系列-4:数学工具-近似、凸优化、积分和符号运算, 连享会 No.1300.
    • 陈卓然, 2023, Python:爬虫雅虎财经数据-selenium, 连享会 No.1306.
    • 韩少真, 展金永, 2020, 珠联璧合 II:Jupyter Notebook 与 Matlab 之融合, 连享会 No.116.
    • 高瑜, 2024, 新书推荐:可复现数据科学及 Python 应用, 连享会 No.1485.
  • 专题:Markdown-LaTeX
    • 黄晨晨, 2023, Stata:利用Stata生成动态文档-Quarto, 连享会 No.1304.  

   

连享会微信小店上线啦!

Note:扫一扫进入“连享会微信小店”,你想学的课程在这里······

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/180301
 
112 次点击