【AI深度学习基础】Pandas完全指南进阶篇:解锁高效数据处理高阶技能 (含完整代码)

ops/2025/3/6 9:31:02/

📚 Pandas 系列文章导航

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

🌟 前言

在入门篇中,我们掌握了 Pandas 的核心数据结构和基础操作。本篇将深入探索 高效数据处理、复杂数据建模、性能调优 等进阶技能,通过 15+ 个真实场景案例,助您成为 Pandas 高阶玩家。所有代码均基于 Pandas 2.2+ 版本优化。


📌 一、高级数据结构操作

1. 多级索引(MultiIndex)

1.1 创建与操作
# 创建多层索引 Series
index = pd.MultiIndex.from_tuples([('北京', '2023'), ('北京', '2024'), ('上海', '2023'), ('上海', '2024')],names=['城市', '年份']
)
sales = pd.Series([1200, 1500, 900, 1300], index=index)# 转换为 DataFrame
multi_df = sales.unstack(level='年份')
1.2 多层索引切片
# 使用 xs 精准定位
print(multi_df.xs('北京', level='城市'))# 跨层筛选
print(multi_df.loc[('北京', 2023), :])
1.3 索引堆叠与展开
stacked = multi_df.stack()
pivoted = stacked.unstack(level=[0,1])

应用场景:处理面板数据、金融时间序列、多维度业务报表


2. 分类数据优化

2.1 类型转换与内存优化
df['产品类别'] = df['产品类别'].astype('category')
print(df.memory_usage(deep=True))  # 内存减少约70%
2.2 自定义排序
from pandas.api.types import CategoricalDtype
custom_order = CategoricalDtype(['低', '中', '高'], ordered=True
)
df['优先级'] = df['优先级'].astype(custom_order)

性能对比:分类列上的 groupby 操作速度提升 5-10 倍


📊 二、高级数据处理技巧

1. 复杂数据清洗

1.1 正则表达式清洗
# 提取价格中的数值
df['价格'] = df['价格描述'].str.extract(r'(\d+\.?\d*)').astype(float)# 替换复杂模式
df['地址'] = df['地址'].str.replace(r'(?<=\d)\s+(?=\d)', '-', regex=True
)
1.2 跨表一致性校验
# 验证主从表一致性
master_ids = set(master_df['id'])
detail_df['valid'] = detail_df['master_id'].isin(master_ids)

2. 高级合并技巧

2.1 条件连接(非等值连接)
pd.merge_asof(prices, events,on='timestamp',by='ticker',tolerance=pd.Timedelta('2d')
)
2.2 笛卡尔积生成
from pandas import merge
merge(df1, df2, how='cross')  # Pandas 1.2+ 特性

3. 窗口函数进阶

3.1 自适应窗口
df['移动平均'] = df['销售额'].rolling(window='30D', on='日期'
).mean()
3.2 指数加权窗口
df['EWM'] = df['股价'].ewm(span=40, adjust=False
).mean()

金融场景应用:MACD 指标计算、波动率分析


⚡ 三、性能优化深度解析

1. 内存优化技巧

1.1 类型精准化
dtype_map = {'订单ID': 'int32','金额': 'float32','日期': 'category'
}
df = df.astype(dtype_map)
1.2 分块处理大文件
chunk_iter = pd.read_csv('10G_data.csv', chunksize=1e6,dtype={'id': 'int32'}
)
results = []
for chunk in chunk_iter:results.append(process(chunk))
final = pd.concat(results)

2. 计算加速方案

2.1 并行计算
import swifter  # 第三方加速库df['new_col'] = df['col'].swifter.apply(complex_func)
2.2 numexpr 加速
pd.set_option('compute.use_numexpr', True)
df.query('价格 > 100 & 销量 < 50')

性能对比:百万级数据过滤速度提升 3-5 倍


🔄 四、时间序列高级处理

1. 时区敏感处理

1.1 时区转换
df['时间'] = df['时间'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
1.2 节假日处理
from pandas.tseries.holiday import USFederalHolidayCalendar
cal = USFederalHolidayCalendar()
holidays = cal.holidays(start='2023-01-01', end='2023-12-31')

2. 重采样进阶

2.1 非均匀重采样
resampled = df.resample('10T', origin='start').asfreq()
2.2 分组重采样
df.groupby('设备ID').resample('D', on='时间戳')['温度'].mean()

🤖 五、机器学习整合

1. 特征工程自动化

1.1 时间特征提取
df['hour'] = df['timestamp'].dt.hour
df['is_weekend'] = df['timestamp'].dt.weekday >= 5
1.2 分箱处理
df['年龄分段'] = pd.cut(df['年龄'],bins=[0, 18, 35, 60, 100],labels=['未成年', '青年', '中年', '老年']
)

2. 与 Scikit-learn 深度整合

2.1 数据管道构建
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformerpreprocessor = ColumnTransformer(transformers=[('num', StandardScaler(), ['age', 'income']),('cat', OneHotEncoder(), ['gender', 'city'])]
)pipe = Pipeline([('preprocess', preprocessor),('model', RandomForestClassifier())
])

🛠️ 六、扩展功能探索

1. 地理数据处理

import geopandas as gpd
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.lon, df.lat)
)
gdf.plot(figsize=(10,6), markersize=5)

2. 大数据处理(Dask 整合)

import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=10)
result = ddf.groupby('category').size().compute()

🎯 七、实战:电商用户行为分析

1. 数据概况

• 数据集:1000 万条用户行为日志
• 字段:user_id, item_id, action_type, timestamp

2. 分析步骤

2.1 会话分割
session_gap = pd.Timedelta(minutes=30)
df['session_id'] = (df['timestamp'].diff() > session_gap).cumsum()
2.2 漏斗分析
funnel = df.pivot_table(index='session_id',columns='action_type',values='timestamp',aggfunc='count'
)
2.3 路径分析
paths = df.groupby('user_id')['action_type'].agg(lambda x: x.str.cat(sep=' -> ')
)

📈 八、性能优化终极方案

1. 代码向量化

# 避免循环
df['折扣价'] = df['原价'] * 0.8  # Good# 替代方案
for i in range(len(df)):  # Baddf.loc[i, '折扣价'] = df.loc[i, '原价'] * 0.8

2. 使用 eval 表达式

df.eval('利润 = 收入 - 成本', inplace=True)

3. 类型优化对照表

原始类型优化类型节省内存
int64int3250%
float64float3250%
objectcategory90%

🌌 九、未来:Pandas 2.0+ 新特性

1. 可空数据类型

df['评分'] = df['评分'].astype(pd.Float64Dtype())  # 支持NA值

2. 性能增强

• 更快的字符串操作
• 优化的 groupby 算法

3. 增强的 PyArrow 支持

df = pd.read_csv('data.csv', engine='pyarrow')

📝 十、总结与展望

通过本篇学习,您已掌握:
• 多层索引与分类数据优化
• 复杂数据清洗与高级合并
• 时间序列深度处理技巧
• 机器学习整合方案
• 千万级数据性能优化策略

终极预告:下一篇将探讨 Pandas 在深度学习中的创新应用,包括 GPU 加速、自动特征工程与生产级管道构建。敬请期待!


🧠 知识巩固:进阶要点思维导图

Pandas进阶
数据结构
数据处理
性能优化
扩展整合
多层索引
分类数据
内存优化
正则清洗
窗口函数
条件合并
向量化
并行计算
类型优化
地理处理
机器学习
大数据扩展

http://www.ppmy.cn/ops/163561.html

相关文章

Android14 OTA差分包升级报kPayloadTimestampError (51)

由于VF 架构&#xff0c; 所以镜像的打包时间可能存在偏差&#xff0c; 如 boot.img 和 客制化的一些镜像打包 可能会在 vendor 侧进行打包。 而 与system 侧进行merge 时&#xff0c;时间戳比较乱&#xff0c;为了解决这个问题&#xff0c;让时间戳进行统一。 使用adb方式验证…

火语言RPA--删除PDF页

【组件功能】&#xff1a;删除PDF指定页文档 配置预览 配置说明 文件路径 支持T或# 默认FLOW输入项 待删除PDF页的PDF文件完整路径。 删除页码 支持T或# 要删除的页面&#xff0c;多个用逗号分隔&#xff0c;连续删除多页用“-”连接起始结尾&#xff0c;例如&#xff1a;…

Python数据可视化——Matplotlib的基本概念和使用

Matplotlib是Python中最常用的绘图和数据可视化库之一&#xff0c;能够帮助我们将数据以图表的形式展示出来&#xff0c;使数据的规律和趋势更加直观。无论是在科学计算、工程分析&#xff0c;还是商业报告和机器学习领域&#xff0c;Matplotlib都能发挥重要作用。 Matplotlib…

服务器内存

1、cpu对内存的支持 有两个内存控制器&#xff08;IMC&#xff0c;Integrate Memory Controller&#xff09;。 每个内存控制器上都有一个 DDR PHY。DDR PHY 是连接 DDR 内存条和内存控制器的桥梁。它负在内存控制器和内存条之间做协议信号的转换。 每个 DDR PHY 有 3 个 chann…

[数据结构]设计循环队列

思路展示&#xff1a; 代码实现&#xff1a; typedef struct {int *a;int front;int rear;int k; } MyCircularQueue;bool myCircularQueueIsEmpty(MyCircularQueue* obj);bool myCircularQueueIsFull(MyCircularQueue* obj); MyCircularQueue* myCircularQueueCreate(int k) …

Adam优化器

目录 1. 核心思想 2. 数学原理 ​维护变量 ​参数更新规则 ​3. Adam 的关键改进 ​4. 优点 ​5. 缺点 ​6. 与其他优化器的对比 7. 实际应用场景 Adam&#xff08;Adaptive Moment Estimation&#xff09;​​ 是一种结合 ​动量&#xff08;Momentum&#xff09;​​…

Web Snapshot 网页截图 模块代码详解

本文将详细解析 Web Snapshot 模块的实现原理和关键代码。这个模块主要用于捕获网页完整截图&#xff0c;特别优化了对动态加载内容的处理。 1. 模块概述 snapshot.py 是一个功能完整的网页截图工具&#xff0c;它使用 Selenium 和 Chrome WebDriver 来模拟真实浏览器行为&am…

七、Redis 内存管理详解:模型、优化策略(LRU/LFU、对象共享)

Redis 内存管理详解:模型、优化策略(LRU/LFU、对象共享) Redis 以高性能和低延迟著称,但作为基于内存的数据库,内存管理是其核心问题之一。本文将深入解析 Redis 的内存模型、内存优化策略(包括 LRU/LFU 机制、对象共享等),帮助开发者提高 Redis 的存储效率和性能。 1…