楼主: 老衲梦呓
33 0

人工智能之数据分析 Pandas:第十章 知识总结 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-9-12
最后登录
2018-9-12

楼主
老衲梦呓 发表于 2025-12-11 07:00:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

人工智能之数据分析 Pandas

第十章 知识总结

前言

本文系统梳理了 Pandas 的核心知识点,内容覆盖从基础操作到进阶技巧的关键概念、高频函数与实用方法。适用于快速回顾学习内容、准备技术面试或作为日常开发中的参考手册。

一、核心数据结构

Pandas 主要围绕两种核心数据结构展开操作:

  • Series:一维带标签数组,类似于带有索引的 NumPy 数组,通常用于表示单列数据。
    Series
  • DataFrame:二维表格型结构,具有行索引(index)和列标签(columns),是实际应用中最常用的数据形式。
    DataFrame

绝大多数数据处理任务都基于这两个对象进行构建与操作。

二、数据读写(I/O)

Pandas 支持多种文件格式的读取与写入,常见如下:

格式读取方法写入方法
CSV
pd.read_csv()
df.to_csv()
Excel
pd.read_excel()
df.to_excel()
JSON
pd.read_json()
df.to_json()
SQL
pd.read_sql()
df.to_sql()
Parquet
pd.read_parquet()
df.to_parquet()

常用参数包括:

encoding
,
dtype
,
parse_dates
,
usecols
,
index_col

这些参数可控制编码、分隔符、缺失值识别、索引列设置等行为。

三、数据查看与基本信息

在开始分析前,了解数据的基本情况至关重要:

df.head() / .tail()       # 查看前/后几行数据
df.shape                  # 返回 (行数, 列数)
df.info()                 # 显示各列名称、非空数量、数据类型及内存使用
df.describe()             # 提供数值型列的统计摘要(均值、标准差、分位数等)
df.dtypes                 # 查看每列的数据类型
df.columns / df.index     # 获取列名列表与行索引对象

四、数据选择与索引

灵活选取子集是数据操作的核心能力之一:

方法说明示例
df['col']
选择单一列,返回 Series 类型
df['姓名']
df[['col1', 'col2']]
选择多个列,需使用双层括号以返回 DataFrame
.loc[row, col]
df.loc[0:2, 'A':'C']
基于标签的切片索引,包含结束位置
.iloc[row, col]
df.iloc[0:3, 0:2]
基于整数位置的索引,不包含末尾元素
df[df['age'] > 30]
.query()
通过布尔条件筛选满足要求的行
df.query('age > 30 & salary < 10000')

注意避免链式赋值问题,推荐使用 .loc.iloc 进行明确赋值:

.loc[condition, 'col'] = value

五、数据清洗(Data Cleaning)

原始数据常存在质量问题,常见的清洗任务包括:

问题类型处理方式
缺失值
isnull()
,
dropna()
,
fillna()
,
interpolate()
重复值
duplicated()
,
drop_duplicates()
异常值采用 IQR 法、3σ 原则或依据业务逻辑进行过滤
类型错误
astype()
,
pd.to_numeric()
,
pd.to_datetime()
格式混乱
.str.strip()
,
.str.lower()
,支持正则表达式替换
列名不规范
rename()
,
columns = ...

建议清洗流程顺序为:初步概览 → 处理缺失值 → 去重 → 异常检测 → 类型修正 → 数据标准化。

六、数据变换与应用

对已有字段进行加工生成新特征是数据分析的重要环节:

操作类型实现方法
列间运算
df['new'] = df['A'] * 2
条件赋值
np.where(cond, x, y)
np.select()
分箱离散化
pd.cut()
,
pd.qcut()
映射替换
map()
,
replace()
自定义函数应用
apply()
(按行/列执行),
applymap()
(逐元素,已弃用)
链式新增列推荐使用
assign()
分组内标准化
groupby().transform()

七、分组聚合(GroupBy)

分组分析是探索性数据分析的核心手段,基本语法如下:

# 单列分组并计算均值
df.groupby('部门')['工资'].mean()

# 多列多函数聚合
df.groupby('部门').agg({
    '工资': ['mean', 'max'],
    '姓名': 'count'
})

# 使用命名聚合(Pandas ≥ 0.25 推荐)
df.groupby('部门', as_index=False).agg(
    平均工资=('工资', 'mean'),
    人数=('姓名', 'size')
)

GroupBy 操作本质遵循三步模式:Split → Apply → Combine,即先拆分数据、再分别应用函数、最后合并结果。

八、数据合并与重塑

当需要整合多个数据源时,常用以下操作:

操作类型函数说明
上下拼接(纵向)
pd.concat([df1, df2])
axis=0
左右拼接(横向)
pd.concat([df1, df2], axis=1)
类似 SQL 中的连接操作
SQL 风格连接
pd.merge(df1, df2, on='key', how='left')
支持 inner/left/right/outer 四种连接方式
宽表转长表
df.melt()
也称为“逆透视”操作
长表转宽表
df.pivot()
/
pd.pivot_table()
可用于创建透视表

九、时间序列处理

针对时间相关数据,常用处理步骤包括:

# 将字符串转换为 datetime 类型
df['date'] = pd.to_datetime(df['date'])

# 提取年、月、日等时间属性
df['year'] = df['date'].dt.year

此外还可提取星期、小时、季度等信息,并支持时间索引对齐、重采样(resample)、滚动窗口计算等功能。

十、相关性与统计分析

Pandas 提供内置方法进行基础统计分析:

  • 计算列之间的皮尔逊相关系数:df.corr()
  • 获取协方差矩阵:df.cov()
  • 分组统计、累积计算、移动平均等均可直接调用相应方法完成。

十一、数据可视化(基础)

结合 Matplotlib 或 Seaborn,Pandas 可直接绘制图表:

df.plot(kind='line')      # 折线图
df.plot(kind='bar')       # 柱状图
df.plot(kind='hist')      # 直方图
df.plot(kind='scatter')   # 散点图

图形展示有助于快速理解数据分布与趋势。

十二、性能优化技巧

  • 优先使用向量化操作而非循环
  • 合理选择数据类型(如使用 category 类型节省内存)
  • 避免频繁复制数据,利用视图操作提升效率
  • 大数据集考虑使用 chunksize 分块读取 CSV 文件
  • 启用 eval()query() 加快复杂表达式计算

十三、高频函数速查表

以下为常用函数汇总(按功能分类):

  • 查看数据:head(), tail(), info(), describe()
  • 索引操作:loc, iloc, at, iat
  • 缺失处理:isna(), dropna(), fillna()
  • 去重:duplicated(), drop_duplicates()
  • 分组聚合:groupby(), agg(), transform()
  • 合并操作:concat(), merge(), join()
  • 时间处理:to_datetime(), dt.strftime(), resample()
  • 应用函数:apply(), map(), applymap()

十四、最佳实践总结

  • 始终检查数据类型是否正确
  • 清洗阶段保留原始数据副本
  • 使用链式操作提高代码可读性(配合 pipe)
  • 命名清晰,注释关键逻辑
  • 对大型数据集进行采样测试后再全量运行

学习路径建议

  1. 掌握 Series 与 DataFrame 基础操作
  2. 熟悉数据导入导出与查看方法
  3. 练习索引选择与条件筛选
  4. 深入理解 GroupBy 机制
  5. 掌握数据清洗与转换技巧
  6. 学习合并、重塑与时间序列处理
  7. 结合可视化工具输出分析结果
  8. 优化代码性能,形成良好编程习惯

后续

本章内容作为 Pandas 知识体系的总结归纳,可作为阶段性复习材料持续回顾。随着项目实践深入,建议结合真实场景不断迭代技能树。

通过 Pandas 对时间序列数据进行处理时,可以方便地提取日期中的月份和星期信息:

df['month'] = df['date'].dt.month
df['weekday'] = df['date'].dt.dayofweek

接着可对时间序列按特定频率重采样。例如,将数据以月为单位进行汇总统计:

df.set_index('date').resample('M').sum()  # 按月求和

时间序列分析是 Pandas 的核心优势之一。

相关性与统计分析

在数据分析过程中,了解变量之间的关系至关重要。可通过皮尔逊方法计算相关性矩阵:

df.corr(method='pearson')

同时获取数据的描述性统计指标,如均值、标准差及指定分位数:

df.mean(), df.std(), df.quantile(0.75)

对于分类变量,使用交叉表分析其分布情况:

pd.crosstab(df['性别'], df['是否购买'])

基础数据可视化

Pandas 提供了便捷的数据绘图功能,可用于快速探索性数据分析(EDA):

  • df.plot(kind='line') —— 绘制折线图
  • df.plot(kind='bar') —— 绘制柱状图
  • df.plot(kind='hist') —— 绘制直方图
  • df.plot(kind='box') —— 绘制箱线图
  • df.plot.scatter(x='A', y='B') —— 绘制散点图

category

虽然 Pandas 适合快速查看数据趋势,但更精细美观的图表建议结合 Seaborn 或 Plotly 实现。

性能优化技巧

为了提升处理效率,尤其是在面对大规模数据集时,应采用以下策略:

技巧 说明
选择合适的数据类型 合理设置 dtype 可有效节省内存占用
向量化操作 避免使用 for 循环,优先使用内置函数实现高效运算
避免链式赋值 使用安全的赋值方式防止 SettingWithCopyWarning 警告
分块读取大文件 利用 chunksize 参数逐步加载超大文件
使用加速库 借助 numba 或 cython 加快复杂表达式的执行速度
及时删除无用列 释放不必要的内存空间,提升运行效率
考虑替代工具 如 Dask、Modin 支持并行计算,Polars 性能更高

Int8

float32

+

np.where

.loc

read_csv(..., chunksize=10000)

eval

query

df.drop()

高频函数速查表

类别 核心函数
创建
DataFrame()
,
read_csv()
查看
head()
,
info()
,
describe()
筛选
.loc
,
.iloc
,
query()
,
isin()
排序
sort_values()
,
sort_index()
缺失值处理
isnull()
,
fillna()
,
dropna()
去重
drop_duplicates()
,
value_counts()
聚合操作
groupby().agg()
,
pivot_table()
数据合并
concat()
,
merge()
字符串操作
.str.contains()
,
.str.split()
时间处理
to_datetime()
,
.dt.year

最佳实践总结

  • 优先使用向量化操作,避免显式循环
  • 明确设定数据类型,减少内存消耗
  • 数据清洗前置,确保分析质量
  • 使用推荐的方式进行赋值,避免出现警告信息
  • 对大文件采取分块处理机制
  • 运用链式编程提高代码可读性
  • 借助可视化手段辅助理解数据结构与分布特征

.loc

df.pipe().assign().query()

学习路径建议

基础 → 数据读写 → 索引选择 → 清洗 → 聚合 → 合并 → 时间序列 → 可视化 → 性能优化

记住:Pandas 不仅要求“会用”,更要“用对”才能发挥最大效能。

掌握上述内容后,你已经具备中级以上的 Pandas 应用能力,能够胜任绝大多数常规数据分析任务。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:pandas panda 数据分析 人工智能 Das

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-21 18:18