资讯详情

使用 Python 与 Pandas 处理数据:Data Science for Beginners 实践指南

📅 2026/9/11 11:29:29 | 华诺云谱 👁 阅读
使用 Python 与 Pandas 处理数据:Data Science for Beginners 实践指南
使用 Python 与 Pandas 处理数据Data Science for Beginners 实践指南【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners本篇指南围绕 Data-Science-For-Beginners 课程第 7 课展开系统讲解如何使用 Python 与 Pandas 处理表格数据、文本与图像三类常见数据形态。你将掌握 Series、DataFrame、时间序列重采样、条件过滤、分组聚合与可视化等核心技能并通过 COVID-19 疫情建模与科研论文分析两个实战案例学会从原始数据到洞察的完整处理流程。为什么用 Python 处理数据数据库擅长存储与查询但最灵活的数据处理方式是编写程序直接操作数据。虽然 SQL 在许多场景下更高效但当需要复杂的多步数据变换、统计洞察与可视化时SQL 往往力不从心。数据科学家通常在这几种语言中选择Python通用编程语言语法简洁、对初学者友好拥有大量解决实际问题的扩展库如从 ZIP 压缩包中提取数据、将图片转为灰度图等除数据科学外也常用于 Web 开发。R为统计数据处理而生的传统工具箱拥有庞大的 CRAN 库集合但并非通用语言很少用于数据科学之外的领域。Julia专为数据科学设计的语言追求比 Python 更好的性能适合科学实验。本课聚焦用 Python 完成数据处理的常见任务默认读者已具备语言基础。数据可以呈现为三种形态——表格数据tabular、文本text与图像images本课将逐一介绍处理它们的思路。表格数据与 Pandas 核心库处理表格数据时最常用的两个库是Pandas操作DataFrame可类比关系型数据库中的表支持命名列可对行、列和整个数据框执行各类运算。Numpy操作tensor即多维数组数组元素类型一致结构比 DataFrame 简单但提供更多数学运算且开销更低。此外还应了解Matplotlib数据可视化与绘图和SciPy额外科学计算函数概率统计部分已接触过。程序开头通常这样导入import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import ... # 按需导入具体子包配套的入门 notebooknotebook.ipynb包含上述库的基础演示可直接运行体验。Series带索引的值序列Series是值的有序序列与列表或 Numpy 数组类似核心区别在于它带有索引index对 Series 做运算如相加时会按索引对齐。索引可以是最简单的整数行号从列表或数组创建时的默认值也可以是日期区间这样的复杂结构。以冰淇淋店销量分析为例生成某时间段内的每日销量序列start_date Jan 1, 2020 end_date Mar 31, 2020 idx pd.date_range(start_date, end_date) print(fLength of index is {len(idx)}) items_sold pd.Series(np.random.randint(25, 50, sizelen(idx)), indexidx) items_sold.plot()假设每周为朋友聚会额外取 10 包冰淇淋可构造按周索引的另一个序列additional_items pd.Series(10, indexpd.date_range(start_date, end_date, freqW))两序列相加得到总数total_items items_sold.add(additional_items, fill_value0) total_items.plot()注意这里不能直接写total_items additional_items否则会在结果中产生大量NaNNot a Number。原因在于周序列在某些索引点上没有值而任何数与NaN相加仍为NaN因此加法时需指定fill_value参数。notebook 中专门演示了这两种写法的差异。时间序列还可以按不同时间间隔重采样resample。例如按月计算平均销量monthly total_items.resample(1M).mean() ax monthly.plot(kindbar)DataFrame共享索引的 Series 集合DataFrame 本质上是具有相同索引的一组 Series 的集合。将多个 Series 组合即可创建数据框a pd.Series(range(1, 10)) b pd.Series([I, like, to, play, games, and, will, not, change], indexrange(0, 9)) df pd.DataFrame([a, b])这会生成一张横向的表格第 0 行为数值 19第 1 行为字符串序列。也可以用字典把 Series 作为列并指定列名df pd.DataFrame({ A: a, B: b })AB01I12like23to.........上述列式布局还可以通过对前一张表转置得到df pd.DataFrame([a,b]).T.rename(columns{0:A, 1:B})。其中.T表示转置行、列互换rename用于将列重命名为与前例一致。DataFrame 上最常用的操作包括列选择。df[A]返回单个列一个 Seriesdf[[B,A]]返回若干列组成的新 DataFrame。按条件过滤行。只保留A列大于 5 的行写作df[df[A]5]。过滤原理表达式df[A]5会返回一个布尔 Series标记原始序列每个元素是否满足条件当布尔 Series 作为索引使用时返回 DataFrame 中对应行的子集。因此不能直接写df[df[A]5 and df[A]7]Python 的and不适用于 Series必须使用布尔 Series 的运算并加上括号df[(df[A]5) (df[A]7)]。创建可计算的新列。可以用直观的表达式新增列例如计算 A 列相对其均值的偏差df[DivA] df[A] - df[A].mean()其本质是先计算出一个 Series再把它赋给左侧的新列名。因此任何与 Series 不兼容的运算都是错误的例如df[ADescr] Low if df[A] 5 else Hi不可行df[LenB] len(df[B])虽然语法正确但会把整个序列的长度赋给每一行结果并非本意。需要逐元素计算的复杂表达式应使用apply函数df[LenB] df[B].apply(lambda x: len(x)) # 或直接 df[LenB] df[B].apply(len)上述操作完成后会得到包含DivA、LenB的新表DivA为A相对均值的偏差-4.04.0LenB为各字符串长度。按序号选择行。使用ilocdf.iloc[:5]取前 5 行。分组聚合。groupby常用于得到类似 Excel 透视表的结果。例如按LenB分组、计算每组A列的均值df.groupby(byLenB)[[A, DivA]].mean()需要同时得到组内元素个数与均值时可使用更复杂的aggregatedf.groupby(byLenB) \ .aggregate({ DivA: len, A: lambda x: x.mean() }) \ .rename(columns{ DivA: Count, A: Mean})LenBCountMean111.000000213.000000325.000000436.333333626.000000读取数据数据通常以文本文件或 Excel 表的形式存在Pandas 提供了从磁盘加载数据的简单方式df pd.read_csv(file.csv)挑战部分会展示更多加载数据的例子包括直接从外部网站抓取数据。打印与绘图探索数据是数据科学家的日常因此可视化能力至关重要。DataFrame 较大时常用df.head()打印前几行确认操作是否正确——在 Jupyter Notebook 中会以美观的表格形式呈现。plot函数可通过kind参数支持多种图形类型折线、柱状、散点等更复杂的图形则直接使用底层matplotlib库。数据可视化细节将在后续专门课程中展开。实战挑战一COVID-19 传播分析本课第一个实战是用 COVID-19 疫情数据建模病毒传播。数据来自约翰霍普金斯大学 CSSE 团队仓库中的本地副本位于 data/COVID/包含time_series_covid19_confirmed_global.csv、time_series_covid19_deaths_global.csv、time_series_covid19_recovered_global.csvnotebook 中演示了既可从网络加载也可改用本地data/COVID/目录。请完整阅读并运行 notebook-covidspread.ipynb其分析链条如下加载数据用pd.read_csv读取各国每日累计感染人数。数据为宽表每行是一个国家/地区每列是一个日期。国家聚合先用groupby(Country/Region).sum()把各省份数据合并为国家级数据使 DataFrame 以国家为索引随后用.loc取单国序列。计算每日新增df[ninfected] df[infected].diff()由累计值差分得到每日新增感染数。估算有效再生数 Rₜ取 8 天滑动窗口用前 4 天与后 4 天新增数的比值近似估计传播能力即Rₜ (Iₜ₋₇Iₜ₋₆Iₜ₋₅Iₜ₋₄) / (Iₜ₋₃Iₜ₋₂Iₜ₋₁Iₜ)代码为df[Rt] df[ninfected].rolling(8).apply(lambda x: x[4:].sum()/x[:4].sum())并可用fillna(methodpad)处理除零产生的inf。可视化趋势对新增病例再做diff()与rolling(7).mean()平滑观察疫情拐点。配套的作业 assignment.md 提供了进一步深化练习在同一张图或并排子图中比较 5~6 个国家的 Rₜ 曲线、考察死亡/治愈人数与感染人数的相关性、通过感染率与死亡率的时间错位推断典型病程、计算并观察致死率随时间的变化可能需要按病程天数平移时间序列。处理非结构化数据虽然数据常以表格形态出现但有时需要处理文本或图像等结构化程度较低的数据。此时首先要从原始数据中抽取结构化信息常见做法包括从文本中抽取关键词并统计其出现频次使用神经网络从图片中提取物体信息从视频摄像头画面中获取人物情绪信息。实战挑战二COVID-19 论文分析第二个挑战延续疫情主题聚焦科研论文的文本处理。CORD-19 数据集收录了写作时7000 多篇 COVID 相关论文提供元数据与摘要约一半还有全文。仓库并未附带该数据集需自行从数据源下载metadata.csvKaggle 注册后下载或从数据发布站点获取含全文的完整版本数据集体量约 1 GB下载耗时较长。请阅读并运行 notebook-papers.ipynb它演示了如何读取metadata.csv并利用abstract摘要、title标题等文本列展开分析包括用关键词匹配统计某药物/诊断在摘要中的出现次数构建药物-诊断共现矩阵等。对应作业 assignment.md 中的进阶任务包括为不同药物构建共现矩阵并用热力图可视化作为挑战目标用弦图chord diagram可视化药物共现关系使用正则表达式从摘要中抽取药物剂量如take 400mg of chloroquine daily中的400mg并建立药物-剂量对照 DataFrame注意只考虑紧邻药名的数值。图像数据与云端视觉服务近年出现了非常强大的 AI 模型帮助我们理解图像许多任务可通过预训练神经网络或云服务解决例如图像分类将图片归入预定义类别可使用 Custom Vision 服务训练自定义分类器物体检测识别图中的各类物体Computer Vision 服务可检测常见物体也可训练 Custom Vision 模型识别特定目标人脸检测包含年龄、性别与情绪识别可通过 Face API 实现。这些云服务均可用 Python SDK 调用从而轻松嵌入数据探索工作流。课程还列举了两个图像数据探索案例其一分析 Instagram 照片先用视觉服务提取图片信息再构建可解释模型研究什么让照片获得更多点赞其二利用人脸情绪识别分析活动照片尝试理解什么让人们快乐。结论与延伸学习无论面对结构化还是非结构化数据Python 都能完成与数据处理、理解相关的全部环节这也是大多数数据科学家将其作为首选工具的原因。若你在数据科学之路上走得更远深入学习 Python 是值得的投资。本课的配套资源还包括配套入门 notebooknotebook.ipynbCOVID 传播挑战notebook-covidspread.ipynb 及本地数据 data/COVID/论文分析挑战notebook-papers.ipynb作业与评分标准assignment.md课程上一讲关系型数据库05-relational-databases下一讲数据准备08-data-preparation课外深化可阅读 Wes McKinney 所著《Python for Data Analysis》Pandas 官方十小时入门教程与可视化文档亦值得通读。本课由 Dmitry Soshnikov 撰写属于 Data-Science-For-Beginners 课程使用数据单元的第 7 课。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。