恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Data-Science-For-Beginners 数据处理实战:用 Python 与 Pandas 驾驭表格、文本与图像

  • 首页
  • 资讯中心
  • /
  • Data-Science-For-Beginners 数据处理实战:用 Python 与 Pandas 驾驭表格、文本与图像

相关资讯

Mailsoftly 自动化实战:用 Rube MCP 在 Codex 中驱动 Composio Mailsoftly Toolkit 2026/9/15 18:31:18
[Project Name] Status Update - [Date] 2026/9/15 18:31:18
如何用 Openship 的 Git URL 方式直接部署公开 GitHub 仓库(无需连接账号) 2026/9/15 18:31:18

最新资讯

Moonshine 客户端 API 重设计实战指南:从差异化方言到统一的 Construct-Configure-Load 模式
C盘爆红?从临时文件到微信缓存的清理与优化指南
Effect 项目 CLI 布尔标志语义修复:`Flag.optional` 省略返回 `Option.none()` 与规范 `--no-<flag>` 取反详解
轻量化牙齿AI检测系统:YOLOv5v6.2+PySide6落地实践
基于MobileNet V2的水果识别实战:从选型到部署全流程
优化 Windows 出错了?optimizerDuck 的 4 层安全防护

今日推荐

GDPR下大数据架构重构与隐私保护实践
多组学数据平台架构设计与优化实践
企业主数据管理系统架构设计与实施全解析

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Data-Science-For-Beginners 数据处理实战:用 Python 与 Pandas 驾驭表格、文本与图像

发布时间:2026/9/15 18:31:18
Data-Science-For-Beginners 数据处理实战:用 Python 与 Pandas 驾驭表格、文本与图像 Data-Science-For-Beginners 数据处理实战用 Python 与 Pandas 驾驭表格、文本与图像【免费下载链接】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 开源课程第 07 课《Working with Data: Python and the Pandas Library》的深度技术指南。全文以该课 README 为骨架并结合仓库内三个可运行的 Jupyter Notebooknotebook.ipynb、notebook-covidspread.ipynb、notebook-papers.ipynb逐行展开。读完本文你将掌握 Pandas 的 Series/DataFrame 核心操作、时间序列重采样、布尔过滤与分组聚合并能够独立复现COVID-19 传播建模与COVID 学术论文文本挖掘两大数据科学实战流程。为什么数据科学家用 Python 处理数据数据库能用 SQL 非常高效地存储和查询数据但最灵活的数据处理方式是编写自己的程序来操作数据。当需要复杂变换、洞察分布与相关性时SQL 往往力不从心。数据处理可以用任何语言编程但以下三种语言在数据领域格外突出Python通用编程语言因简洁常被视为最适合初学者。它拥有大量库可解决诸如从 ZIP 归档中提取数据、把图片转为灰度等实际问题除数据科学外也广泛用于 Web 开发。R以统计数据处理为核心的传统工具箱拥有庞大的 CRAN 库仓库适合数据处理但它不是通用语言很少用于数据科学之外。Julia专为数据科学而设计目标是在性能上优于 Python适合科学实验。本课聚焦 Python 的简单数据处理并假定读者具备 Python 基础。数据有三种常见形态表格数据tabular data、文本text与图像images。课程刻意只展示少量代表性示例帮助你理解可能做什么并知道遇到问题时该去哪里找答案。数据科学核心库与标准导入方式处理表格数据最常用的两个 Python 库是Pandas操作所谓的DataFrame——类似于关系型数据库中的表。可以给列命名并对行、列及整个 DataFrame 执行多种操作。NumPy用于操作tensor张量即多维数组array。数组元素底层类型一致比 DataFrame 更简单但提供更多数学运算、开销更小。此外还需要了解Matplotlib数据可视化与绘图库。SciPy提供更多科学计算函数概率与统计章节已用过。在任何 Python 程序的开始通常会这样导入这些库这也是三个 Notebook 的统一导入方式见 notebook.ipynb 首个代码单元import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import ... # 按需指定具体子包Pandas 围绕几个基础概念展开下面逐一深入。Series带索引的序列与时间序列Series是一系列值的序列类似列表或 NumPy 数组。核心区别是 Series 拥有索引index在对 Series 做运算如相加时索引会被考虑进去。索引可以简单到整数行号从列表或数组创建 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()其中pd.date_range按天生成日期索引np.random.randint(25,50,sizelen(idx))为每天生成 25~49 之间的随机整数销量。在 notebook.ipynb 中该区间扩展为 2020 全年长度 366并用items_sold.plot(figsize(10,3))输出折线图现在假设每周举办一次朋友聚会需要额外带 10 盒冰淇淋。可以创建一个按周索引的新 Series 来表达additional_items pd.Series(10,indexpd.date_range(start_date,end_date,freqW))把两个 Series 相加即得到总数。关键注意不要直接写total_items items_sold additional_items因为周索引与日索引并不对齐缺失索引点会被视为缺失值NaN而任何数 NaN NaN结果序列中会充满NaNnotebook.ipynb 的第 39 号单元输出明确演示了这一现象。必须通过add方法显式指定填充值total_items items_sold.add(additional_items,fill_value0) total_items.plot()重采样按不同时间间隔聚合时间序列可以按不同时间间隔重采样resample。例如计算月均销量monthly total_items.resample(1M).mean() ax monthly.plot(kindbar)在 Notebook 中还可进一步把 x 轴刻度格式化为%b-%Y如 Jan-2020并旋转 45°得到更易读的月度柱状图。DataFrame同索引 Series 的集合DataFrame 本质上是具有相同索引的一组 Series 的集合。可以把几个 Series 组合成 DataFramea 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/1列索引 0~8第一行是数字 1~9第二行是文本串。也可以把 Series 作为列用字典指定列名df pd.DataFrame({ A : a, B : b })得到如下 9 行 2 列的表格AB01I12like23to34use45Python56and67Pandas78very89much同样的布局也可以通过转置上表得到df pd.DataFrame([a,b]).T.rename(columns{ 0 : A, 1 : B })这里.T表示转置行列互换rename用来把列名改成与上一例一致。核心操作一列选择与布尔过滤列选择df[A]返回一个 Seriesdf[[B,A]]返回一个新的 DataFrame列子集。按条件过滤行例如只保留列A大于 5 的行写作df[df[A]5]。其工作原理是df[A]5会生成一个布尔 Series对原序列每个元素标记True/False当布尔 Series 用作索引时就返回 DataFrame 中满足条件的行子集。因此不能直接写任意 Python 布尔表达式例如df[df[A]5 and df[A]7]是错误的必须对布尔 Series 使用专门的运算并注意括号必不可少df[(df[A]5) (df[A]7)]核心操作二新增计算列与 apply可以非常直观地创建可计算列例如计算A偏离其均值的差值df[DivA] df[A]-df[A].mean()实际发生的是先算出右侧的 Series再把它赋给左侧新列名。因此不能使用与 Series 不兼容的运算例如以下代码是错误的# Wrong code - df[ADescr] Low if df[A] 5 else Hi df[LenB] len(df[B]) # - Wrong result第二行虽然语法正确但结果错误它把整个 SeriesB的长度赋给了列中所有值而不是每个元素的长度。需要计算这类复杂表达式时应使用apply函数df[LenB] df[B].apply(lambda x : len(x)) # or df[LenB] df[B].apply(len)上述操作完成后DataFrame 变为ABDivALenB01I-4.0112like-3.0423to-2.0234use-1.0345Python0.0656and1.0367Pandas2.0678very3.0489much4.04核心操作三iloc 行选择与 groupby 分组聚合按行号选择用iloc结构例如取前 5 行df.iloc[:5]。**分组grouping**常用来得到类似 Excel 透视表pivot table的结果。例如对每个LenB值计算A列与DivA列的均值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加载数据与可视化探索前面展示了如何从 Python 对象构造 Series 与 DataFrame但真实数据通常以文本文件或 Excel 表格形式存在。Pandas 提供了极简的磁盘加载方式读 CSV 只需一行df pd.read_csv(file.csv)在挑战章节还会看到从外部网站加载数据的更多示例如 COVID 时间序列与 CORD-19 论文元数据。数据科学家经常需要探索数据因此可视化与快速预览至关重要。DataFrame 很大时通常先调用df.head()打印前几行确认操作是否正确在 Jupyter Notebook 中它会以美观的表格形式输出。此外plot函数可通过kind参数支持多种图表类型折线、柱状等更复杂的图形则可直接使用底层matplotlib库——本课程后续会有专门的章节详细讲解数据可视化。实战挑战一分析 COVID-19 传播R_t 建模本课第一个挑战是建模 COVID-19 的流行病传播数据来自约翰斯·霍普金斯大学系统科学与工程中心CSSE维护的 COVID-19 数据集。请打开 notebook-covidspread.ipynb 从头读到尾并尝试运行各单元与末尾留白的小挑战。该 Notebook 完整演示了一条可复现的分析链路全部基于上文学到的 Pandas 技巧加载数据默认用pd.read_csv从网上读取三份时间序列若网络不可用可取消注释改用仓库内置数据副本data/COVID/目录下的 time_series_covid19_confirmed_global.csv、time_series_covid19_deaths_global.csv 与 time_series_covid19_recovered_global.csv。预处理数据按国家/省份 日期列组织。先用infected.groupby(Country/Region).sum()把省份累加为国家级数据再通过.loc[US]按国家取数并用drop(columns[Lat,Long,Province/State])去掉非日期元数据列。构建帧自定义mkframe(country)把感染/康复/死亡三列合并成一个按日期索引的 DataFrame。差分与平滑用df[infected].diff()计算每日新增感染再用df[ninfected].rolling(window7).mean()做 7 天滑动平均消除周内报告波动。计算 R_t基本再生数用 8 天窗口估计再生数核心一行是df[Rt] df[ninfected].rolling(8).apply(lambda x: x[4:].sum()/x[:4].sum())后 4 天新增之和除以前 4 天之和。遇到除零产生的inf与缺失的NaN需用replace(np.inf,np.nan)与fillna(methodpad)清洗后再绘图还可以用ax.axhline(1,...)画出 R_t1 的参考线——当 R_t 大于 1 时疫情倾向于扩散。挑战作业比较 5~6 个国家的 R_t 曲线观察死亡/康复与感染人数的相关性通过视觉关联感染率与死亡率推断典型病程长度计算致死率fatality rate及其随时间的变化可能需要按病程天数平移时间序列后再计算。非结构化数据从文本与图像中提取结构化信息数据常以表格形态出现但有时必须处理结构化程度较低的数据文本、图像。此时要把前述处理技术用起来就需要先从原始数据中**提取extract**结构化信息。典型例子包括从文本中提取关键词并统计出现频率用神经网络提取图片中物体的信息从视频摄像头画面中获取人物情绪信息。实战挑战二分析 COVID 学术论文文本挖掘第二个挑战继续 COVID 主题处理相关科学论文。CORD-19 数据集收录了 7000 余篇写作当时COVID 论文提供元数据与摘要约半数还提供全文。注意仓库不包含该数据集副本需要先自行获取metadata.csv文件Kaggle 注册后下载或从无注册的镜像站下载包含全文的完整版。请打开 notebook-papers.ipynb 通读并执行其核心流程是加载元数据pd.read_csv(...)读取metadata.csvNotebook 也给出了从云端 zip 压缩包直读的方式并把publish_time转为datetime后绘制直方图观察发表时间分布有趣的是最早可追溯到 1880 年。结构化提取手工列出候选药物清单如hydroxychloroquine、chloroquine、tocilizumab、remdesivir、azithromycin等与诊断词清单如covid、sars、pneumonia、diabetes等逐篇在摘要中检索这些术语并计数形成新列。注意查找子串时要在词前加空格否则chloroquine会错误命中hydroxychloroquine内部同时要强制把abstract列转为str以避免报错。趋势分析按月groupby汇总药物出现次数并绘图可以看到羟氯喹先升后降、法匹拉韦稳步上升等趋势还可使用plot.area()堆叠面积图并按行归一化得到各类药物占比的百分比面积图。药物-诊断共现矩阵用 NumPy 二维数组构建共现频次矩阵再用plt.imshow(..., interpolationnearest, cmaphot)绘制热力图更进一步可改用 Plotly 的Sankey 图把药物与诊断作为左右两侧节点、共现次数作为流量可视化治疗策略。处理图像数据近年来强大的 AI 模型让机器看懂图像成为现实大量任务可以用预训练神经网络或云服务完成典型包括图像分类Image Classification把图像归入预定义类别可用 Custom Vision 等服务快速训练自己的分类器。物体检测Object Detection识别图像中的不同物体Computer Vision 可检测常见物体Custom Vision 则可训练识别特定目标。人脸检测Face Detection包括年龄、性别与情绪识别可通过 Face API 完成。这些云服务均可用 Python SDK 调用因而能无缝嵌入数据探索工作流。仓库课程提供了两类图像数据探索范式其一从社交图片中尽可能提取视觉特征计算机视觉再用 AutoML 构建可解释模型研究什么因素让图片获得更多点赞其二用 Face API 从活动照片中提取人物情绪探索是什么让人感到快乐。课后作业与自学资源本课对应作业详见 assignment.md分为两大板块COVID-19 传播建模在同一图或并排子图上对比 5~6 个国家的 R_t 曲线分析死亡数/康复数与感染数的相关性通过感染率与死亡率曲线的视觉关联寻找病程长短的异常点可能需要查看多个国家计算致死率及其时间演化可考虑按病程天数平移时间序列。COVID 论文分析为不同药物构建共现矩阵观察哪些药物常在摘要中一同出现用热力图可视化该矩阵进阶目标是用弦图chord diagram可借助chord库可视化药物共现另一进阶目标是用正则表达式从文本如 take 400mg of chloroquine daily中提取不同药物的剂量并构建药物→剂量的 DataFrame注意只取紧邻药名的数值。自学资源方面课程推荐 Wes McKinney 所著《Python for Data Analysis》一书、Pandas 官方10 minutes to Pandas教程与 Pandas 可视化文档以及两门 Python 入门路径龟图与分形趣味学 Python、Microsoft Learn 上的 Python 第一步。全部资料对应英文原版 README 见 translations/en/2-Working-With-Data/07-python/README.md。小结无论你的数据是结构化的表格还是文本与图像这类非结构化数据Python 都能覆盖从处理到理解的几乎全部步骤。它大概是最灵活的数据处理方式这也是绝大多数数据科学家将其作为主力工具的原因。如果你认真对待数据科学之旅深入学习 Python 几乎必然是一项值得的投资。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号