Python学习笔记·第25天:Pandas高级技巧——用最通俗的话讲懂重采样、多索引和数据合并
一、重采样
一句话理解:把数据的时间粒度变粗。
你有一份每天的交易记录,老板问你:“每周总共卖了多少钱?”
你就用重采样,把每天的数据自动汇总成每周的。
# 每7天营业总额df.resample('7D',on='日期').sum()['交易额']比喻:就像你记账,本来是每天记一笔,月底想看每周花了多少钱,就把7天的账加在一起看。重采样就是帮你自动做这件事。
常用频率:
'7D'→ 每7天'M'→ 每月'W'→ 每周'H'→ 每小时
二、多索引
一句话理解:给表格加多层标签,定位更精准。
# 按姓名和柜台分组df.groupby(by=['姓名','柜台']).sum()# 查看周七在化妆品柜台的交易数据df.loc[('周七','化妆品')]比喻:就像快递地址,有省、市、区三级。你要找一个包裹,不是用“湖南省”一个标签,而是用“湖南省-长沙市-开福区”三个标签一起定位。多索引就是给数据加多级标签,想查多细就多细。
三、标准差
一句话理解:看数据“稳不稳定”。
df.std()# 标准差df.std()**2# 方差比喻:两个员工这个月的销售业绩:
| 员工 | 每天销售额 | 标准差 |
|---|---|---|
| 张三 | 1000, 1100, 1050, 980, 1020 | 小(稳定) |
| 李四 | 2000, 200, 800, 1500, 300 | 大(过山车) |
张三的标准差小,说明他每天表现稳定。李四的标准差大,说明他今天可能卖2000,明天只卖200,发挥不稳定。
一句话:标准差越小,数据越稳定;标准差越大,数据越像过山车。
四、协方差
一句话理解:看两组数据是“同穿一条裤子”还是“你进我退”。
df.cov()# 协方差矩阵比喻:两个人一起散步:
- 协方差为正:你往前走,我也往前走(步调一致,正相关)
- 协方差为负:你往前走,我往后退(一个赚一个赔,负相关)
- 协方差为零:你走你的,我走我的(互相独立,没啥关系)
股市里理解:买了两只股票。协方差为正,说明它俩同涨同跌;协方差为负,说明一只涨的时候另一只跌,正好对冲风险。
五、dt接口和str接口
一句话理解:Pandas内置的“瑞士军刀”。
# dt接口:处理日期pd.to_datetime(df['日期']).dt.weekday_name# 自动转成“周一、周二...”pd.to_datetime(df['日期']).dt.quarter# 自动转成“第1季度、第2季度...”# str接口:处理文字df['日期'].str.extract(r'(\d{4}-\d{2})')# 从日期里提取“2026-06”df['日期'].str.endswith('6')# 判断日期是不是以6结尾比喻:就像Excel里的“文本处理”和“日期处理”菜单。你要提取年月日、判断是否包含某个字符,不需要写for循环,直接用这些接口一行搞定。
六、数据合并
一句话理解:把多个表格拼在一起。
按行拼接(加长):
pd.concat([表1,表2,表3])比喻:你有1月、2月、3月的销售表,结构一模一样。用concat把三张表上下堆叠,变成一张更长的总表。
按列关联(加宽):
pd.merge(员工表,工资表,on='工号')比喻:你有一张“员工信息表”(工号、姓名、部门)和一张“工资表”(工号、基本工资、绩效)。两张表都有“工号”这一列,用merge按工号关联,变成一张既有员工信息又有工资的大表。
今日核心总结(一张表记住)
| 知识点 | 一句话 | 什么时候用 |
|---|---|---|
| 重采样 | 把数据从细变粗 | 想把每天的数据汇总成每周/每月 |
| 多索引 | 给数据加多层标签 | 想按多个维度精确定位数据 |
| 标准差 | 看数据稳不稳定 | 想比较两组数据的波动程度 |
| 协方差 | 看两组数据是不是同步 | 想分析两只股票/两个指标的关系 |
| dt接口 | 自动处理日期 | 想把日期转成周几、第几季度 |
| str接口 | 自动处理文字 | 想提取、判断、替换字符串 |
| concat | 表格上下堆叠 | 多张结构相同的表合并 |
| merge | 表格左右关联 | 两张有关联的表按某列合并 |
注:已经使用DeepSeek进行整理精简核心内容,些许不理解的配合个人笔记进行理解。
