微信登录

python - Pandas教程

数据分析
2008年发布
350功能
版本2.2.2
使用费用:free
开发语言:python、C、Cython

环境配置

架构

  • x86
  • x64
  • arm64

支持系统

  • Windows
  • Linux
  • macOS
  • unix

包类型

  • whl
  • tar.gz
  • zip

软件特点

  • 高效数据清洗
  • 结构化数据处理
  • 缺失值处理
  • 数据分组聚合
  • 时间序列分析
  • 数据合并拼接
  • 支持多种数据格式读写
  • 向量化运算

详细信息

开发者:

Wes McKinney 及 Pandas 开发团队

安装大小:

85MB

运行速度:

1200QPS

依赖包:

NumPypython-dateutilpytzcython

Windows安装路径:

C:\Program Files\Python312\Lib\site-packages\pandas

Mac安装路径:

/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/pandas

Linux安装路径:

/usr/local/lib/python3.12/site-packages/pandas

Windows配置文件路径:

C:\Users\用户名\.pandas\config

Mac配置文件路径:

~/.pandas/config

Linux配置文件路径:

~/.pandas/config

输入速度:

180MB/s

输出速度:

150MB/s

GUI 软件名:

PyCharmVS CodeJupyter NotebookSpyderDataSpell

功能列表:

DataFrame 数据结构操作Series 序列处理数据筛选与切片数据排序与排名缺失值检测与填充重复值处理数据透视表制作数据分组统计时间序列重采样CSV/Excel/JSON 数据读写数据合并与连接数据离散化与分箱

必会要点

1掌握 Pandas 中 Series 和 DataFrame 核心数据结构
2熟练使用 read_csv/read_excel 读写各类数据文件
3掌握数据筛选(loc/iloc/ 布尔索引)与切片操作
4熟悉缺失值(isnull/dropna/fillna)处理方法
5掌握数据去重(drop_duplicates)与重复值处理
6熟练使用 groupby 进行数据分组聚合分析
7了解 merge/concat/join 实现数据合并与拼接
8掌握数据排序(sort_values/sort_index)方法
9熟悉时间序列(to_datetime/resample)处理
10掌握数据透视表(pivot_table)制作与使用
11了解 apply/map/applymap 实现自定义函数应用
12掌握数据类型转换(astype/infer_objects)方法
13熟悉数据离散化(cut/qcut)与分箱操作
14掌握行列转换(melt/pivot)与数据重塑
15了解 value_counts/crosstab 进行频次与交叉分析
16掌握数据替换(replace)与重命名(rename)
17熟悉数据抽样(sample)与随机数生成
18掌握 describe/info 查看数据基本统计信息
19了解 Pandas 与 NumPy 的协同使用技巧
20掌握数据导出(to_csv/to_excel)与格式配置
21熟悉 Pandas 性能优化(向量化 / 避免循环)方法
22掌握多索引(MultiIndex)数据结构操作
23了解 Pandas 与 Matplotlib 结合实现数据可视化
24掌握数据过滤(query)与条件筛选进阶用法
25熟悉 Pandas 的内存优化(astype/categorical)技巧

与其他语言对比

1. Pandas 数据处理比 NumPy 更贴合业务场景
2. Pandas 运算速度比 NumPy 稍慢
3. Pandas 易用性比 SQL 高 数据查询比 SQL 繁琐
4. Pandas 开源免费 比 MATLAB 成本更低
5. Pandas 专业绘图比 MATLAB 功能弱
6. Pandas 数据清洗比 Excel 效率高百倍
7. Pandas 交互操作比 Excel 灵活性差
8. Pandas 语法简洁度比 R 语言更高
9. Pandas 统计分析功能比 R 语言稍弱
10. Pandas 跨平台性比 SPSS 更优
11. Pandas 专业统计建模比 SPSS 弱
12. Pandas 开发自由度比 Stata 更高
13. Pandas 计量分析功能比 Stata 差
14. Pandas 数据量支持比 Excel 大千万级
15. Pandas 可视化比 Tableau 操作更复杂
16. Pandas 定制化分析比 Tableau 更强
17. Pandas 学习门槛比 Power BI 低
18. Pandas 可视化报表比 Power BI 差
19. Pandas 代码复用比 SAS 更易实现
20. Pandas 企业级分析比 SAS 生态弱
21. Pandas 轻量性比 Spark 更易上手
22. Pandas 分布式计算比 Spark 差很多
23. Pandas 本地处理比 Hadoop 更便捷
24. Pandas 大数据处理比 Hadoop 能力弱
25. Pandas 语法直观性比 Julia 更高
26. Pandas 运算性能比 Julia 慢不少
27. Pandas 生态丰富度比 Go 语言高
28. Pandas 并发处理比 Go 语言弱
29. Pandas 数据操作比 C++ 更简单
30. Pandas 执行效率比 C++ 低很多
31. Pandas 上手速度比 Java 快数倍
32. Pandas 工程化部署比 Java 难
33. Pandas 数据分析比 JavaScript 强
34. Pandas 前端交互比 JavaScript 弱
35. Pandas 数据结构化比 PHP 更优
36. Pandas 网页开发比 PHP 完全不适用
37. Pandas 科学计算比 Perl 更易用
38. Pandas 文本处理比 Perl 功能弱
39. Pandas 数据操作比 Kotlin 更专业
40. Pandas 移动端开发比 Kotlin 无优势

🐼 概述与安装

什么是Pandas?

Pandas是基于NumPy的数据分析库,提供高效的DataFrame结构(表格型数据)和Series结构(一维列数据),支持数据清洗、转换、统计和可视化。广泛应用于金融、科学、机器学习等领域。

安装与环境配置

  • Anaconda安装:推荐使用Anaconda,内置Pandas及Jupyter Notebook。
  • Jupyter Notebook使用:通过交互式环境编写代码(参考链接)。
  • 打印优化:设置pd.set_option()避免数据截断(配置方法)。

📊 Pandas核心数据结构

Series

类似一维数组,可通过pd.Series()创建,支持自定义索引和数据类型。

  1. import pandas as pd
  2. s = pd.Series([1, 3, 5], name="列名")
  3. ### DataFrame
  4. 二维表格数据,基础操作包括:
  5. - **创建空DataFrame**:`df = pd.DataFrame()`([方法详解](https://bookchips.com/chip/6850eb130b9569655f1202eb))。
  6. - **数据类型转换**:`df.astype("float64")`修改列类型([类型操作](https://bookchips.com/chip/6850eb130b9569655f1202c8))。
  7. - **列重命名**:`df.rename(columns={"旧列名": "新列名"})`([重命名技巧](https://bookchips.com/chip/6850eb130b9569655f1202b5))。

📁 Pandas数据导入与导出

读取数据

  • 从CSV/Excel/SQL读取
    1. pd.read_csv("data.csv") # [CSV文件读取](https://bookchips.com/chip/6850eb130b9569655f1202bd)
    2. pd.read_excel("data.xlsx") # [Excel文件读取](https://bookchips.com/chip/6850eb130b9569655f1202da)
  • 从JSON/HTML粘贴板读取
    pd.read_json()解析JSON字符串,pd.read_clipboard()获取粘贴板内容(更多方法)。

导出数据

  • 保存为CSV/Excel/SQL
    1. df.to_csv("output.csv") # [导出CSV](https://bookchips.com/chip/6850eb130b9569655f1202b9)
    2. df.to_excel("output.xlsx") # [导出Excel](https://bookchips.com/chip/6850eb130b9569655f1202d7)

🔧 Pandas数据清洗与转换

数据处理技巧

  • 处理空值df.dropna()删除空值行,df.fillna(0)填充默认值(空值处理)。
  • 数据去重df.drop_duplicates()移除重复行(去重方法)。
  • 字段拆分与合并
    • df.explode("列名")拆分列表字段为多行(拆分示例)。
    • pd.concat([df1, df2])合并多张表格(合并策略)。

复杂转换

  • 行转列/列转行pd.melt()pd.pivot()实现行列转换(转换方法)。
  • 自定义函数df.apply(lambda x: x*2)应用函数到每列(apply使用)。

🔍 Pandas数据选择与运算

数据筛选

  • 按条件筛选df[df["列A"] > 10]选择列A大于10的行。
  • 索引与切片df.loc[]按标签选择,df.iloc[]按位置选择(筛选技巧)。

统计与聚合

  • 分组统计df.groupby("列名").mean()计算分组平均值(分组详解)。
  • 聚合运算df.agg(["sum", "max"])一次性计算多个统计量(聚合方法)。

📈 Pandas进阶功能

数据可视化

整合Matplotlib绘制图表:

  1. import matplotlib.pyplot as plt
  2. df.plot(kind="line")
  3. plt.xlabel("X轴") # [Matplotlib配置](https://bookchips.com/chip/6850eb130b9569655f1202c3)

性能优化

  • 向量化操作:避免循环,优先使用内置函数(如df["列"] * 2)。
  • 高效合并pd.merge()替代逐行拼接(合并优化)。

通过本教程,您将掌握Pandas的核心操作,快速完成从数据清洗到分析的全流程。更多细节可参考链接中的扩展内容!

Pandas基础概念:Pandas是Python的数据分析库,核心数据结构为Series和DataFrame。参考教程
安装与环境配置:推荐使用Anaconda安装Pandas,集成Jupyter Notebook便捷开发。参考指南
Series数据结构:一维标签数组,可通过pd.Series(data)创建,支持整数、字符串等索引。示例
DataFrame创建:二维表格结构,常用pd.DataFrame(data)或字典生成,列名可自定义。创建方法
读取CSV文件pd.read_csv('file.csv')快速加载数据,支持编码、分隔符等参数。详细用法
导入Excel数据:使用pd.read_excel('file.xlsx')导入,需指定表名或索引。操作指南
处理空DataFrame:用df = pd.DataFrame()创建空表格,后续动态添加行列。技巧
查看数据类型df.dtypes显示每列类型,如int64、datetime64等。数据属性
重命名列名:直接赋值df.columns = ['新列名']df.rename(columns={'旧列名':'新列名'})改名方法
删除列或行df.drop(columns=['列名'])df.drop(index=[0,1])删除指定列/行。操作详解

新增列数据df['新列'] = 值直接添加列,或基于现有列计算。实例参考
条件筛选数据df[df['列名'] > 10]选取满足条件的行,支持多条件组合。筛选技巧
随机抽样数据df.sample(n=3)随机选取指定行数,适用于数据探索。随机方法
数据排序df.sort_values(by='列名', ascending=False)按某列降序排序。排序教程
数据去重df.drop_duplicates(subset=['列名'])删除重复值,保留唯一记录。去重策略
处理缺失值df.dropna()删除含空值的行,或用df.fillna(0)填充默认值。处理方案
数据转换函数df['列'].apply(func)对整列应用自定义函数,实现复杂逻辑。函数应用
拆分列表字段df.explode('列名')将列表类型字段拆分为多行,展开数据。拆解方法
合并多列数据df['合并列'] = df['列1'].astype(str) + df['列2']实现列拼接。合并技巧
设置索引列df.set_index('列名')将某列设为索引,便于时间序列处理。索引管理

数据分组聚合df.groupby('列名').sum()按列分组并计算总和,支持多种统计方法。分组教程
多表合并pd.concat([df1, df2])纵向堆叠数据,或df1.merge(df2)横向关联。合并策略
数据透视表pd.pivot_table(df, values='数值列', index='分组列')生成汇总视图。透视方法
行列转换pd.melt(df)将宽表转换为长表,适合可视化分析。转换指南
数据类型转换df['列'].astype('int')强制转换列类型,处理数值计算错误。类型调整
字符串处理df['列'].str.replace('旧值','新值')替换文本内容,支持正则表达式。字符串操作
时间格式转换pd.to_datetime(df['日期列'])将字符串转为时间类型,便于时间序列分析。时间处理
描述性统计df.describe()快速查看数值列的均值、分位数、标准差等。统计摘要
导出为CSVdf.to_csv('file.csv', index=False)保存结果,避免额外索引列。导出指南
导出到Exceldf.to_excel('file.xlsx', sheet_name='Sheet1')指定表名保存数据。Excel导出

链式操作优化:使用df.query('条件').groupby().agg()组合多个步骤,提升代码可读性。方法参考
内存优化技巧df.memory_usage()查看内存占用,降低数值类型节省空间。内存管理
定位最大/最小值df.nlargest(5, '列名')df.nsmallest(5, '列名')快速查找极值。极值查询
跨文件合并数据pd.read_sql('SELECT * FROM table', con)从数据库加载数据。SQL集成
JSON数据解析pd.read_json('data.json')读取JSON文件,自动转换为表格结构。JSON处理
应用自定义函数:结合lambda函数,如df.apply(lambda x: x*2)快速处理数据。高阶应用
数据切片选择df.loc[行标签, 列标签]按名称选择,df.iloc[行索引, 列索引]按位置选择。索引选择
数据追加写入df.to_csv('file.csv', mode='a')以追加模式写入,避免覆盖原文件。文件追加
异常值处理:结合标准差或分位数过滤异常数据,如df[(df['列'] > lower) & (df['列'] < upper)]数据清洗

跨平台数据交换:使用df.to_clipboard()复制数据到剪贴板,方便与其他软件交互。剪贴板操作
HTML表格抓取pd.read_html(url)直接解析网页中的表格数据,适用于数据采集。网页抓取
数据持久化存储df.to_pickle('file.pkl')保存为二进制文件,读写速度更快。存储优化
代码性能优化:避免循环操作,优先使用向量化计算或apply()提升效率。性能提升
与Matplotlib集成df.plot(x='列1', y='列2')快速生成折线图、柱状图等。可视化教程
数据集概览df.info()显示行列数、数据类型及内存使用情况,快速诊断数据。概览方法
处理嵌套JSON:结合json_normalize()展开多层嵌套结构,便于分析复杂数据。嵌套处理
动态更新数据:利用inplace=True参数直接在原数据上修改,减少内存占用。原地操作
多进程加速:结合swifter库加速apply()函数,提升大数据处理速度。扩展技巧
实战案例演练:通过完整数据分析项目,巩固文件读取、清洗、分析和可视化全流程。综合提升


以上教程覆盖Pandas核心功能,结合链接中的具体示例可快速掌握各场景应用技巧!

Pandas安装与配置

Anaconda环境安装

通过Anaconda管理Python环境可快速安装pandas库,支持跨平台运行。详细步骤

Jupyter Notebook交互

使用Jupyter Notebook进行数据探索时,可实时查看DataFrame内容。配置方法


Pandas核心数据结构

Series类型

pd.Series()创建一维带标签数组,支持向量化运算。创建示例

DataFrame类型

二维表格结构pd.DataFrame()支持行列索引,可存储混合数据类型。初始化方法


Pandas数据导入与导出

读取结构化数据

Pandas导出多维数据

支持导出为CSV/Excel/JSON等格式,如df.to_csv()/其他格式


Pandas数据预处理

类型转换

  • astype('float64')强制转换列类型
  • df.dtypes查看数据类型/技巧

缺失值处理

  • df.fillna(0)填充空值
  • df.dropna()删除含空行/进阶方法

Pandas数据操作技巧

行列级操作

数据选择

  • df.loc[]基于标签选择
  • df.iloc[]基于位置索引/高级筛选

Pandas数据分析进阶

聚合计算

  • df.groupby('列名').mean()分组统计
  • df.agg(['sum','max'])多维度聚合/完整指南

数据透视

  • pd.pivot_table()创建透视表
  • pd.melt()宽表转长表/转换案例

提示:更多高级方法如时间序列处理、性能优化等,参考数据分析提升专题

  1. # Pandas教程:实用技巧与示例
  2. ## 安装与环境配置
  3. ### Anaconda与Jupyter Notebook
  4. 推荐使用**[Anaconda安装Pandas](https://bookchips.com/chip/6850eb130b9569655f1202bf)**快速配置环境,结合**[Jupyter Notebook](https://bookchips.com/chip/6850eb130b9569655f1202c0)**交互式编程提升效率。
  5. ---
  6. ## 核心数据结构
  7. ### Series:一维数据容器
  8. ```python
  9. import pandas as pd
  10. s = pd.Series([3, 5, 7], name="示例列")

DataFrame:二维表格型数据

通过字典创建DataFrame:

  1. data = {"Name": ["Alice", "Bob"], "Age": [25, 30]}
  2. df = pd.DataFrame(data)

创建DataFrame的5种方法


Pandas数据导入与导出

读取数据

  1. # 从CSV读取
  2. df = pd.read_csv("data.csv", encoding='utf-8')
  3. # 从Excel读取
  4. df = pd.read_excel("data.xlsx")

支持格式包括:CSVJSONSQL

导出数据

  1. df.to_csv("output.csv", index=False)
  2. df.to_excel("output.xlsx")

更多输出格式:HTML数据库


Pandas数据清洗与转换

空值处理

  1. df.dropna() # 删除空值行
  2. df.fillna(0) # 空值填充为0

类型转换

  1. df["列名"] = df["列名"].astype("int64")

数据类型详解

数据变形

  1. # 字典列转多列
  2. df = pd.json_normalize(df["dict_column"])
  3. # 列表列拆分行
  4. df = df.explode("list_column")

explode方法应用


Pandas数据筛选与计算

条件过滤

  1. filtered = df[df["Age"] > 25]

聚合计算

  1. df.groupby("City")["Sales"].sum()

快速统计

  1. print(df.describe()) # 数值型字段概览

Pandas高级操作

数据合并

  1. pd.concat([df1, df2]) # 纵向堆叠
  2. pd.merge(df1, df2, on="key") # 横向连接

合并操作专题

可视化集成

  1. df.plot(kind="bar", x="Category")

需配合Matplotlib配置使用


Pandas扩展学习

(注:本文示例基于Pandas 1.3+版本,教程完整代码集可参考站内详细版教程