【AI深度学习基础】Pandas完全指南入门篇:数据处理的瑞士军刀 (含完整代码)

📚 Pandas 系列文章导航

  • 入门篇 🌱
  • 进阶篇 🚀
  • 终极篇 🌌

📌 一、引言

在大数据与 AI 驱动的时代,数据预处理和分析是深度学习与机器学习的基石。Pandas 作为 Python 生态中最强大的数据处理库,以其灵活的数据结构(如 DataFrame 和 Series)和丰富的功能(数据清洗、转换、聚合等),成为数据科学家和工程师的核心工具。

Pandas 以 Series(一维标签数组)和 DataFrame(二维表格)为核心数据结构,提供高效的数据处理能力,涵盖数据清洗(缺失值处理、去重)、筛选(loc/iloc)、聚合(groupby)、合并(merge/concat)及时间序列分析(日期解析、重采样)等关键功能。其优势在于:

  • 矢量化运算:避免循环,提升性能。
  • 内存优化category 类型减少内存占用。
  • 无缝集成生态:与 NumPy、Matplotlib 等库无缝集成。

Pandas数据处理全流程:

数据加载
CSV/Excel/SQL
数据清洗
去重/填充/异常值
数据转换
类型转换/特征工程
数据聚合
Groupby/Agg
数据合并
Concat/Merge
数据分析
统计/可视化
结果输出
CSV/图表/报告

入门需掌握基础 API(如 read_csvdescribe),并通过实战(如电商分析、时序预测)深化理解。官方文档与《Python for Data Analysis》是经典学习资源,适合快速处理结构化数据并赋能 AI 工程。


🛠️ 二、安装指南

1. 前置条件

  • Python 版本要求:Pandas 建议 Python 3.8 及以上版本。
  • 推荐环境:使用虚拟环境(如 venvconda)隔离项目依赖。

2. 安装方法

2.1 使用 pip 安装(通用方式)
# 基础安装(仅 Pandas)
pip install pandas# 国内镜像加速(解决下载慢问题)
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2 使用 Anaconda 安装(推荐数据科学用户)
# 通过 conda 安装(自动处理依赖)
conda install pandas# 或指定版本
conda install pandas=2.2.0
2.3 源码安装(高级用户)
git clone https://github.com/pandas-dev/pandas.git
cd pandas
python setup.py install

3. 验证安装

import pandas as pd
print(pd.__version__)  # 输出版本号(如 2.2.0)

4. 常见问题解决

  • 依赖冲突:使用 pip install --upgrade pandas 升级至最新版本。
  • 权限问题:在命令前添加 sudo(Linux/macOS)或以管理员身份运行终端(Windows)。
  • 缺少依赖库:安装完整数据科学生态(推荐):
    pip install pandas numpy matplotlib scikit-learn
    

5. 环境配置建议

  • IDE 支持:在 Pycharm 或 VS Code 中运行代码更高效。
  • 文档速查:本地查看文档(终端输入 python -m pandas 或访问 官网文档)。

📊 三、知识详解

1. 核心数据结构

1.1 Series
  • 一维带标签数组,支持任意数据类型,索引机制允许快速定位数据(如 pd.Series([10,20], index=['a','b']))。
  • 常用于存储时间序列、数值序列或分类数据。
1.2 DataFrame
  • 二维表格型结构,由多个 Series 组成,支持异构数据类型(如数字、字符串、日期并存)。
  • 提供类似 SQL 的操作接口(筛选、合并、分组聚合),适合处理 Excel 表格或数据库查询结果。
核心数据结构关系
多个组合
列操作
行操作
索引对齐
可视化
机器学习
Series
DataFrame
Series
Series
NumPy数组
Matplotlib
Scikit-learn

2. 核心功能与优势

2.1 数据处理能力
  • 数据清洗:通过 dropna() 删除缺失值、fillna() 填充、drop_duplicates() 去重,快速修复脏数据。
  • 数据操作
    • 筛选:loc(标签索引)、iloc(位置索引)、query()(SQL 式条件过滤)。
    • 合并:merge() 实现表连接、concat() 轴向拼接。
    • 分组聚合:groupby() 结合 agg() 计算多维度统计量(如均值、总和)。
2.2 时间序列处理
  • 内置时间解析(pd.to_datetime())、重采样(resample())、滚动窗口计算,适用于金融分析或物联网数据。
2.3 可视化与集成
  • 与 Matplotlib 无缝衔接,直接通过 df.plot() 生成柱状图、折线图等。
  • 兼容 NumPy、Scikit-learn 等库,支持数据预处理到模型训练的全流程。
2.4 性能优化
  • 向量化运算:底层基于 C 语言加速,避免 Python 循环的低效问题(如 df * 2 比循环快千倍)。
  • 内存优化:使用 category 类型减少字符串存储空间,eval() 提升表达式计算效率。

💡 四、工程实践

1. 数据结构基石:Series 与 DataFrame

(1)代码示例
# 创建 Series
import pandas as pd
price_series = pd.Series([9.9, 15.8, 4.5], name="商品价格", index=["苹果", "牛奶", "面包"])# 创建 DataFrame
product_df = pd.DataFrame({"品类": ["水果", "乳制品", "烘焙"],"库存量": [50, 20, 35],"单价": [9.9, 15.8, 4.5]
}, index=["苹果", "牛奶", "面包"])
(2)核心要点
  • Series 本质:带标签的一维数组,索引与值一一对应。
  • DataFrame 核心:二维表格结构,可视为多个 Series 的列集合。
  • 索引对齐特性是 Pandas 高效运算的基础逻辑。
(3)避坑指南

⚠️ 避免直接修改 df.values 数组,这会破坏索引对齐机制。
⚠️ 创建 DataFrame 时,字典值的长度必须一致,否则会触发 ValueError

2. 数据加载与初步探索

(1)代码示例
# 从 CSV 读取数据(自动识别日期)
sales_data = pd.read_csv("sales.csv", parse_dates=["order_date"])# 数据预览技巧
print(sales_data.head(3))          # 查看前三行
print(sales_data.describe())       # 数值列统计摘要
print(sales_data.dtypes)           # 查看列数据类型
(2)核心要点
  • 支持 CSV/Excel/SQL 等 15+ 数据源读取。
  • parse_dates 参数可将字符串自动转为 datetime 类型。
  • head() + describe() 组合快速掌握数据分布特征。
(3)避坑指南

⚠️ 读取 Excel 时需额外安装 openpyxl 库:pip install openpyxl
⚠️ 大数据文件使用 chunksize 分块读取:

for chunk in pd.read_csv("big_data.csv", chunksize=10000):process(chunk)

3. 数据清洗黄金法则

(1)代码示例
# 处理缺失值
sales_clean = sales_data.dropna(subset=["price"])  # 删除 price 列缺失行
sales_data["price"].fillna(sales_data["price"].median(), inplace=True)# IQR 法处理异常值
Q1 = sales_data["sales"].quantile(0.25)
Q3 = sales_data["sales"].quantile(0.75)
sales_data = sales_data[~((sales_data["sales"] < (Q1-1.5*(Q3-Q1))) | (sales_data["sales"] > (Q3+1.5*(Q3-Q1))))]
(2)核心要点
  • 缺失值处理三板斧:删除 (dropna)、填充 (fillna)、插值 (interpolate)。
  • 异常值检测推荐使用 IQR(四分位距法)或 3σ 原则。
  • 数据转换时优先使用 inplace=True 减少内存占用。
(3)避坑指南

⚠️ fillna(method="ffill") 向前填充时,需先按时间排序避免逻辑错误。
⚠️ 删除缺失值前务必检查 df.isna().sum(),避免误删有效数据。

4. 数据聚合与分组魔法

(1)经典代码示例
# 单维度聚合
category_sales = sales_data.groupby("category")["sales"].sum()# 多维度高级聚合
sales_stats = sales_data.groupby(["region", "year"]).agg(total_sales=("sales", "sum"),avg_price=("price", "mean"),max_quantity=("quantity", "max")
)
(2)核心要点
  • groupby 本质是 “拆分-应用-合并” 三阶段操作。
  • 聚合函数推荐具名聚合(agg + 元组)提升可读性。
  • 搭配 pd.cut 进行分箱分析可挖掘深层规律。
(3)避坑指南

⚠️ 分组键包含 NaN 时会自动创建名为 NaN 的组,建议提前处理。
⚠️ 避免在分组后直接修改数据,应使用 transformapply

5. 数据合并高阶技巧

(1)代码示例
# 横向拼接(列扩展)
combined = pd.concat([df1, df2], axis=1)# 数据库风格连接
merged_data = pd.merge(orders, customers, how="left", left_on="customer_id", right_on="id")# 索引对齐合并
joined_df = df1.join(df2, how="inner")
(2)核心要点
  • concat 适合简单堆叠,merge 适合键关联合并。
  • 合并前务必检查键列唯一性:df.duplicated().sum()
  • 多表连接推荐使用 pd.merge(ordered=True) 保持顺序。
  • 数据合并方法选择:
Yes
No
Yes
No
需要合并数据
相同结构?
concat 轴向拼接
有连接键?
merge 键连接
join 索引对齐
输出合并结果
(3)避坑指南

⚠️ 多对多连接会产生笛卡尔积,导致数据量爆炸式增长。
⚠️ 合并后出现大量 NaN 值时,检查连接键的数据类型是否一致。

6. 效率优化锦囊

  1. 类型转换:将字符串列转为 category 类型可降内存 80%。
    df["gender"] = df["gender"].astype("category")
    
  2. 矢量化运算:用 df["col1"] + df["col2"] 替代循环。
  3. 查询优化:大数据集使用 df.query("price > 100") 比布尔索引更快。

🌟 五、总结说明

Pandas 的核心价值在于将复杂的数据操作简化为高效、可读的代码。通过本文,读者可掌握:

  • 核心数据结构:Series 和 DataFrame 的使用方法。
  • 数据处理能力:清洗、筛选、聚合、合并等关键操作。
  • 性能优化技巧:类型转换、矢量化运算、查询优化。
  • 实战应用:结合真实数据集进行实战演练。

🚀 六、结语

本章完成了 Pandas 入门知识的核心讲解。下篇将深入探讨进阶主题,包括高级数据处理技巧、性能调优、以及在深度学习中的应用。敬请期待!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字万用表的使用教程

福禄克经济型数字万用表前面板按键功能介绍示意图 1. 万用表简单介绍 万用表是一种带有整流器的、可以测量交、直流电流、电压及电阻等多种电学参量的磁电式仪表。分为数字万用表&#xff0c;钳形万用表&#xff0c; &#xff08;1&#xff09;表笔分为红、黑二只。使用时黑色…

C# IComparable<T> 使用详解

总目录 前言 在C#编程中&#xff0c;IComparable<T> 是一个非常重要的接口&#xff0c;它允许我们为自定义类型提供默认的比较逻辑。这对于实现排序、搜索和其他需要基于特定规则进行比较的操作特别有用。本文将详细介绍 IComparable<T> 的使用方法、应用场景及其…

DeepSeek使用手册分享-附PDF下载连接

本次主要分享DeepSeek从技术原理到使用技巧内容&#xff0c;这里展示一些基本内容&#xff0c;后面附上详细PDF下载链接。 DeepSeek基本介绍 DeepSeek公司和模型的基本简介&#xff0c;以及DeepSeek高性能低成本获得业界的高度认可的原因。 DeepSeek技术路线解析 DeepSeek V3…

Hugging Face 推出 FastRTC:实时语音视频应用开发变得得心应手

估值超过 40 亿美元的 AI 初创公司 Hugging Face 推出了 FastRTC&#xff0c;这是一个开源 Python 库&#xff0c;旨在消除开发者在构建实时音频和视频 AI 应用时的主要障碍。 "在 Python 中正确构建实时 WebRTC 和 Websocket 应用一直都很困难&#xff0c;"FastRTC…

for循环相关(循环的过程中对数据进行删除会踩坑)

# 错误方式&#xff0c; 有坑&#xff0c;结果不是你想要的。 user_list ["刘的话", "范德彪", "刘华强", 刘尼古拉斯赵四, "宋小宝", "刘能"] for item in user_list: if item.startswith("刘"): …

Qt显示一个hello world

一、显示思路 思路一&#xff1a;通过图形化方式&#xff0c;界面上创建出一个控件显示。 思路二&#xff1a;通过编写C代码在界面上创建控件显示。 二、思路一实现 点开 Froms 的 widget.ui&#xff0c;拖拽 label 控件&#xff0c;显示 hello world 即可。 qmake 基于 .…

复合机器人为 CNC 毛坯件上下料注入 “智能强心针”

在竞争日益激烈的 CNC 加工行业&#xff0c;如何提升生产效率、保证产品质量、实现智能化生产成为众多企业亟待解决的问题。富唯智能凭借其先进的复合机器人技术&#xff0c;成功为多家 CNC 加工企业提供了毛坯件上下料的优质解决方案&#xff0c;有效提升了生产效能&#xff0…

电商业务数据测试用例参考

1. 数据采集层测试 用例编号测试目标测试场景预期结果TC-001验证用户行为日志采集完整性模拟用户浏览、点击、加购行为Kafka Topic中日志记录数与模拟量一致TC-002验证无效数据过滤规则发送爬虫请求&#xff08;高频IP&#xff09;清洗后数据中无该IP的日志记录 2. 数据处理层…

Spring Cloud Gateway 网关的使用

在之前的学习中&#xff0c;所有的微服务接口都是对外开放的&#xff0c;这就意味着用户可以直接访问&#xff0c;为了保证对外服务的安全性&#xff0c;服务端实现的微服务接口都带有一定的权限校验机制&#xff0c;但是由于使用了微服务&#xff0c;就需要每一个服务都进行一…

webstorm的Live Edit插件配合chrome扩展程序JetBrains IDE Support实现实时预览html效果

前言 我们平时在前端网页修改好代码要点击刷新再去看修改的效果&#xff0c;这样比较麻烦&#xff0c;那么很多软件都提供了实时预览的功能&#xff0c;我们一边编辑代码一边可以看到效果。下面说的是webstorm。 1 Live Edit 首先我们需要在webstorm的settings里安装插件Live …

map的operator[]的实现

map的operator[]的实现 operator[]里包含插入操作&#xff0c;所以我们先看一下首先看一下map的insert函数 返回值是一个pair类型。正常的常见的insert&#xff0c;插入成功返回true&#xff0c;失败返回false 这里设计的insert不单单返回布尔值&#xff0c;而是返回一个pair…

定时器的编码器接口模式

选择编码器接口模式的方法是&#xff1a;如果计数器只在TI2的边沿计数&#xff0c;则置TIMx_SMCR寄存器中的SMS001&#xff0c;如果只在TI1边沿计数&#xff0c;则置SMS010&#xff0c;如果计数器同时在TI1和TI2边沿计数&#xff0c;则置SMS 011 明确一点&#xff0c;计数器…

Openshift配置默认调度

配置默认调度选择角色为worker的机器运行pod。 编辑scheduler oc edit schedulers.config.openshift.iospec:defaultNodeSelector: node-role.kubernetes.io/worker ## 添加这一段如果pod需要运行在非worker主机&#xff0c;需要配置pod所在的项目添加注解 openshift.io/node…

突破光学成像局限:全视野光学血管造影技术新进展

全视野光学血管造影&#xff08;FFOA&#xff09;作为一种实时、无创的成像技术&#xff0c;能够提取生物血液微循环信息&#xff0c;为深入探究生物组织的功能和病理变化提供关键数据。然而&#xff0c;传统FFOA成像方法受到光学镜头景深&#xff08;DOF&#xff09;的限制&am…

OpenHarmony 进阶——HDF 驱动框架的原理小结

文章大纲 引言一、HDF的驱动加载&#xff08;驱动安装&#xff09;方式1、动态加载&#xff08;主要是uhdf&#xff09;2、静态加载(主要是khdf)2.1、驱动入口实现2.1.1、Bind接口2.1.2、Init接口2.1.3、Release接口 2.2、HDF_INIT 驱动入口符号2.3、获取驱动列表2.4、获取设备…

大模型应用:多轮对话(prompt工程)

概述 在与大型语言模型&#xff08;如ChatGPT&#xff09;交互的过程中&#xff0c;我们常常体验到与智能助手进行连贯多轮对话的便利性。那么&#xff0c;当我们开启一个新的聊天时&#xff0c;系统是如何管理聊天上下文的呢&#xff1f; 一、初始上下文的建立 1. 创建新会…

如何为JAR设置定时重启?

AI越来越火了&#xff0c;我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站 前面我们说过了如何将jar交由Systemctl管理&#xff0c;下面我们…

神码AC-AP无线部署

神码AC-AP无线部署: 1.设置基础网络 交换机设置 service dhcp ! ip dhcp pool ap (AP用地址) network-address 10.1.1.0 255.255.255.0 default-router 10.1.1.254 option 43 hex 010401010101 &#xff08;AC IP地址16进制&#…

【Redis】常用命令汇总

Redis 作为高性能的键值存储数据库&#xff0c;提供了丰富的命令集&#xff0c;主要涵盖 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo&#xff08;地理位置&#xff09;、HyperLogLog&#xff08;基数统计&#xff09;、Bitmap&a…

Redis - 高可用实现方案解析:主从复制与哨兵监控

文章目录 Pre概述Redis 高可用实现方案一、主从复制机制1.1 全量同步流程1.2 增量同步&#xff08;PSYNC&#xff09;流程 二、哨兵监控机制2.1 故障转移时序流程 三、方案对比与选型建议四、生产环境实践建议 Pre Redis-入门到精通 Redis进阶系列 Redis进阶 - Redis主从工作…