前言

本文整理了 Pandas 最常用的核心操作,涵盖数据选择数值操作两大模块,所有示例均为可直接复用的实操代码,适合日常数据分析速查,也可作为新手入门 Pandas 的核心笔记。

一、环境准备与数据读取

python

运行

import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')  # 关闭警告提示

# 读取Excel数据(示例路径)
df = pd.read_excel('../data/重复值.xlsx')  # 基础数据读取
df = pd.read_excel('./data/数值排序.xlsx')  # 数值操作数据
df = pd.read_excel('./data/长宽表转换.xlsx', sheet_name='Sheet2')  # 多sheet读取

二、数据选择操作(列 / 行 / 条件筛选)

2.1 列选择(按名称 / 位置)

表格

操作类型语法示例核心说明
单列(Series)df['订单编号']返回 Series 类型,仅获取指定单列
单列(DataFrame)df[['订单编号']]双层中括号,返回 DataFrame 类型(保持表格结构)
多列df[['订单编号','客户姓名']]传入列名列表,获取指定多列
按位置选指定列df.iloc[:,[0,3]]iloc按位置索引,[:,]代表所有行,[0,3]选第 0、3 列
按位置选连续列df.iloc[:,0:3]切片(左闭右开),选第 0、1、2 列(不含第 3 列)

2.2 行选择(按标签 / 位置)

表格

操作类型语法示例核心说明
行索引重命名df.rename(index={0:'0a',1:'1b'},inplace=True)自定义行索引名称,为行选择做准备
单行(按标签)df.loc[['A1']]loc按行索引标签选择,返回 DataFrame 单行
多行(按标签)df.loc[['A1','A3']]传入标签列表,选择指定多行
单行(按位置)df.iloc[0]iloc按位置选第 0 行(返回 Series)
多行(按位置)df.iloc[[0,1],:]选第 0、1 行(所有列),axis=0可省略
行 + 列(位置)df.iloc[0:2,0:2]切片选 0-1 行 + 0-1 列(左闭右开)

2.3 条件筛选

表格

操作类型语法示例核心说明
单一等值筛选df[df['客户姓名']=='李信']筛选 “客户姓名” 等于 “李信” 的所有行
多条件筛选df[(df['唯一识别码']>1002)&(df['客户姓名']=='杨端和')]多条件用&(且)/``(或)连接,每个条件需加括号
条件 + 列选择df[(条件)][['客户姓名','注册时间']]先筛选行,再保留指定列
数值范围筛选df[df['年龄']<40]筛选年龄小于 40 的所有行

三、数值操作(替换 / 排序 / 删除 / 计算 / 转换)

3.1 数值替换

表格

替换类型语法示例核心说明
一对一替换df['年龄'].replace(240,33,inplace=True)指定列替换值,inplace=True直接修改原数据
多对一替换df.replace([245,280],35)全局替换多个值为同一个值
多替多替换df.replace({240:30,245:36})字典形式,键 = 原数值,值 = 替换后数值
缺失值替换df.replace(np.NaN,1,inplace=True)将 NaN 填充为指定值(如 1)

3.2 数值排序与排名

(1)排序

表格

排序类型语法示例核心说明
基础升序df.sort_values(by=['销售ID'])默认升序,按指定列排序
降序排序df.sort_values(by=['销售ID'],ascending=False)ascending=False设置降序
缺失值排序df.sort_values(by=['销售ID'],na_position='first')na_position='first'让 NaN 排开头(默认末尾)
多列排序df.sort_values(by=['销售ID','注册时间'],ascending=[True,False])主关键字升序,次关键字降序
(2)排名

表格

排名规则语法示例核心说明
平均值排名df['销售ID'].rank(method='average')相同值取排名平均值(如两个 1 排 1.5)
顺序排名df['销售ID'].rank(method='first')按值出现顺序排名
最小排名df['销售ID'].rank(method='min')相同值取最小排名
最大排名df['销售ID'].rank(method='max')相同值取最大排名

3.3 数据删除(行 / 列)

表格

删除类型语法示例核心说明
按列名删除df.drop(['注册时间','销售ID'],axis=1)axis=1指定列,返回新 DataFrame(需 inplace=True 修改原数据)
按列位置删除df.drop(df.columns[[2,4]],axis=1)按列的位置索引删除
简洁删列df.drop(columns=['销售ID','注册时间'])更直观的删列写法(推荐)
按行索引删除df.drop(['0a','3d'],axis=0)axis=0指定行(可省略),按行索引删除
简洁删行df.drop(index=['4e','2c'])更直观的删行写法(推荐)

3.4 数值计算与查找

表格

操作类型语法示例核心说明
频次统计df['销售ID'].value_counts()统计列中各值出现次数(如销售 ID=2 出现 3 次)
占比统计df['销售ID'].value_counts(normalize=True)返回各值占比(如销售 ID=2 占比 0.5)
唯一值获取df['销售ID'].unique()返回列去重后的唯一值(如 [1,2,3])
单列值查找df['年龄'].isin([31,23])返回布尔值,标记列中是否包含指定值
全表值查找df.isin(['A1',23])全表查找指定值,返回同维度布尔 DataFrame
区间切分(等距)pd.cut(df['年龄'],bins=[0,3,6,10])按指定端点切分区间(左开右闭,如 (0,3] 包含 1/2/3)
区间切分(分位)pd.qcut(df['年龄'],3)按分位数将数据均分为 3 组

3.5 列插入与行列转换

(1)列插入

表格

插入方式语法示例核心说明
指定位置插入df.insert(2,'商品编号',['cat'+str(i) for i in range(1,7)])在第 2 列位置插入新列
末尾新增列df['商品编号2']=['dog'+str(i)for i in range(1,7)]直接赋值新增列(最简洁)
(2)行列互换与结构转换

表格

转换类型语法示例核心说明
行列转置newdf=df.T原行→新列,原列→新行
表格转树形newdf=df.stack()将列 “压入” 行,生成多层索引 Series
树形转表格newdf.unstack()将堆叠的行 “还原” 为列,恢复表格结构
宽表转长表df.melt(id_vars=['Company','Name'],var_name='year',value_name='sale')id_vars指定不变列,var_name/value_name定义新列名
长表转宽表df.pivot_table(index=['Company','Name'],columns='year',values='sale')pivot_table聚合转换,行多→列多

3.6 批量数值处理(apply/applymap)

表格

函数类型语法示例核心说明
单列批量处理df['C1'].apply(lambda x:x*10)apply+ 匿名函数,处理单列每个元素
单行批量处理df.iloc[0].apply(lambda x:x*10)处理单行每个元素
全表批量处理df.applymap(lambda x:x*100)遍历全表每个元素(等价 Python 二重循环,效率更高)

四、核心避坑点

  1. loc标签索引(如订单编号 A1),iloc位置索引(数字),二者不可混用;
  2. 多条件筛选时,必须用&/|(而非and/or),且每个条件需用括号包裹;
  3. drop()/sort_values()等方法默认返回新 DataFrame,需加inplace=True才修改原数据;
  4. 切片操作(如0:3)均为左闭右开,实际包含起始位置到结束位置前一位;
  5. apply()用于单列 / 单行处理,applymap()用于全表处理(Pandas 2.0 + 也可用df.map())。

总结

本文覆盖 Pandas 日常分析高频操作:

  1. 数据选择:列(名称 / 位置)、行(标签 / 位置)、条件筛选的核心语法;
  2. 数值操作:替换、排序、排名、删除、计算、行列转换、批量处理的实操方法;
  3. 避坑要点:索引混用、条件连接符、方法返回值等新手易出错的细节。

可直接将本文内容发布到 CSDN 个人作品中,作为 Pandas 核心操作速查手册,后续可根据学习进度补充数据清洗、聚合分析等进阶内容。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐