Skip to content

Latest commit

 

History

History
109 lines (82 loc) · 8.76 KB

File metadata and controls

109 lines (82 loc) · 8.76 KB

Python 数据分析课程(零基础)/ Python for Data Analysis — A Course from Zero

Release License: MIT Python Jupyter Language

面向 编程零基础初学者(尤其适合经济学/社会科学方向)的 5 周 Python 课程,终点是 能独立做数据处理 + 理解并跑 OLS 回归 + 完成一份真实数据可复现分析报告。 A 5-week Python course for complete beginners (great for economics/social-science learners), ending at data wrangling + OLS regressions + a reproducible real-world data report.

作者 / Author: PENG

当前版本 / Version: v1.0 稳定版 / stable — 全部版本见 Releases


课程概览 / Overview

  • 对象 / Audience: 编程零基础的初学者(经济学/社科背景友好)/ beginners with zero coding (economics-friendly)
  • 时长 / Duration: 5 周 · 15 节 · 每节 60 分钟(周一/三/五)/ 5 weeks, 15 sessions, 60 min each (Mon/Wed/Fri)
  • 每节结构 / Per session: 20 分钟理论 + 20 分钟演示 + 20 分钟课堂练习 / 20-min theory + 20-min demo + 20-min practice
  • 课后 / After class: 每节一份约 30 分钟作业,附答案 / one ~30-min homework per session, with answers
  • 语言 / Language: 中英双语对照 / bilingual (Chinese + English)
  • 环境 / Environment: Anaconda + Jupyter Notebook(见 SETUP_GUIDE.md)

进度表 / Schedule

周 Week 节 Session 主题 / Topic Notebook
1 1 环境、变量与数据类型 / Setup, variables & types week1/session1_lecture.ipynb
1 2 列表与循环 / Lists & loops week1/session2_lecture.ipynb
1 3 字典、条件与函数 / Dicts, conditionals & functions week1/session3_lecture.ipynb
2 4 NumPy 向量化数组 / NumPy arrays week2/session4_lecture.ipynb
2 5 pandas 入门:Series 与 DataFrame / Intro to pandas week2/session5_lecture.ipynb
2 6 pandas 索引与筛选 / Indexing & filtering week2/session6_lecture.ipynb
3 7 读写真实数据 / Reading real data week3/session7_lecture.ipynb
3 8 数据清洗 / Data cleaning week3/session8_lecture.ipynb
3 9 matplotlib 可视化 / Visualization week3/session9_lecture.ipynb
4 10 分组聚合与描述统计 / Group-by & stats week4/session10_lecture.ipynb
4 11 一元 OLS 回归 / Simple OLS week4/session11_lecture.ipynb · 互动演示 / demo
4 12 多元 OLS、虚拟变量与综合实战 / Multiple OLS, dummies & capstone week4/session12_lecture.ipynb
5 13 项目启动:提出问题、获取与理解数据 / Project kickoff: question, data & cleaning week5/session13_lecture.ipynb
5 14 探索性数据分析与可视化讲故事 / EDA & visual storytelling week5/session14_lecture.ipynb
5 15 建模与可复现报告(结课项目)/ Modeling & reproducible report (capstone) week5/session15_lecture.ipynb

第 5 周是 真实数据实战周:用 gapminder(全球各国 1952–2007 预期寿命/人口/人均 GDP)完成一个完整的可复现分析项目。 Week 5 is a real-world project week on gapminder.

详细逐节计划见 SYLLABUS.md。/ Full plan in SYLLABUS.md.


目录结构 / Project Structure

python-course/
├── README.md            # 本文件 / this file
├── SYLLABUS.md          # 详细课程大纲(逐节计划)/ detailed syllabus
├── SETUP_GUIDE.md       # Anaconda 安装与排障 / setup & troubleshooting
├── data/                # 课程数据集 / datasets (tips.csv, macrodata.csv, gapminder.csv, ex1/ex2, ex1.xlsx)
│                        #   └─ gapminder_demo_errors.csv = 故意含缺失值的版本,用于课堂演示"脏数据/清洗" / a deliberately broken copy for teaching data-cleaning
├── week1/ … week5/      # 每节 3 个 notebook / 3 notebooks per session
│   ├── sessionN_lecture.ipynb    # 讲师演示版(理论+演示+课堂练习,逐格运行即出结果)
│   ├── sessionN_homework.ipynb   # 课后作业题面(空待填)
│   └── sessionN_answers.ipynb    # 课后作业答案(完整可运行)
├── REFERENCES.md        # 参考资料清单(第三方仓库链接,不随本仓库分发)/ reference links
└── build/               # 生成 notebook 的脚本 / scripts that build the notebooks

每个 lecture notebook 内部分三段:Part 1 理论 → Part 2 演示 → Part 3 课堂练习(练习答案附在 notebook 末尾,供讲师用)。


互动演示 / Interactive demo

第 11 节讲 OLS 原理时配套一个网页演示:https://ols.pengrubin.com(无需安装,浏览器直接打开)。学生亲手拖动一条直线,看残差平方和 Σe² 怎么变;按「Fit OLS」看直线滑到最优位置——这就是"最小二乘"。网页上「OLS best」一栏的数字与 smf.ols("tip ~ total_bill", data=df).fit().summary() 的输出一致。 / Session 11 comes with an interactive page, https://ols.pengrubin.com: drag a line, watch Σe² change, press "Fit OLS" and see the line slide to the optimum. Its "OLS best" column matches the statsmodels summary.

使用建议 / How to Use

  1. 先装环境:照着 SETUP_GUIDE.md 装好 Anaconda,创建 pycourse 环境。 Install Anaconda first; create the pycourse environment.
  2. 课前:打开当节的 sessionN_lecture.ipynb,跟着老师一格一格运行(Shift+Enter)。 Before class, open the lecture notebook and run cells along with the instructor.
  3. 课堂练习:在 lecture 的 Part 3 自己动手填代码,遇到卡壳看末尾的参考答案。 Do Part 3 exercises yourself; peek at the solutions at the end if stuck.
  4. 课后:独立完成 sessionN_homework.ipynb(约 30 分钟),先自己做,再 对照 sessionN_answers.ipynb 检查。 After class, do the homework on your own first, then check against the answers.
  5. 第 4 周:第 12 节作业是综合小项目,独立走完"读数→清洗→画图→回归→解读"。 Week 4 ends with a full-pipeline mini-project.
  6. 第 5 周:用真实的 gapminder 数据做一个完整的 可复现分析项目,第 15 节的结课作业是独立产出一份双语分析报告;讲义最后还点了 逻辑回归等可继续深入的方向。 Week 5 is a real-world reproducible project on gapminder; the final capstone is your own bilingual report, and the last lecture points to next topics (logistic regression, causal inference, …).

启动方式:在终端 conda activate pycourse,再 cd 到本目录,运行 jupyter notebook。 Notebook 用相对路径 ../data/... 读数据,所以请 在各 weekN 目录下 打开对应 notebook。


结课目标 / Learning Outcome

完成后,你应能独立:用 pandas 读取/清洗/分组数据,用 matplotlib 画图,用 statsmodels 跑一元与多元 OLS(含虚拟变量),并正确解读 系数、R²、p 值。 By the end, you can load/clean/group data with pandas, plot with matplotlib, run simple & multiple OLS (with dummies) in statsmodels, and correctly read coefficients, R², and p-values.


许可证 / License

本项目采用 MIT License 授权,版权所有 © 2026 PENG。你可以自由使用、修改、分发本课程材料(包括用于教学),只需保留原始版权声明。完整条款见 LICENSE。

Licensed under the MIT License, Copyright © 2026 PENG. You are free to use, modify, and distribute these course materials (including for teaching) provided the original copyright notice is retained. See LICENSE for the full text.