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进行整理精简核心内容,些许不理解的配合个人笔记进行理解。