Python学习笔记·第22天:Pandas实战——读取Excel、筛选数据与统计分析
·
一、读取Excel文件
1.1 read_excel() 常用参数
import pandas as pd
# 基本读取
df = pd.read_excel(r"C:\python\超市营业额.xlsx")
# 常用参数组合
df = pd.read_excel(
r"C:\python\超市营业额.xlsx", # 文件路径
usecols=['工号','姓名','时段','交易额'], # 只读取指定列
skiprows=[1,3,5], # 跳过第1、3、5行
index_col=1 # 指定某列作为行索引
)
大白话理解参数:
| 参数 | 作用 | 大白话 |
|---|---|---|
usecols |
指定读取哪些列 | “我只要这几列,其他的别给我” |
skiprows |
跳过指定行 | “第1行是空行、第3行是废话,跳过” |
index_col |
用某列做行索引 | “用姓名这一列当行标签” |
二、查看数据
# 输出前10行
print(df[:10])
# 查看前5行
print(df.head())
# 查看后5行
print(df.tail())
三、数据筛选(核心!)
3.1 行切片(取指定范围的行)
# 取第5到第10行(左闭右开)
print(df[5:11])
3.2 iloc:用数字位置做索引
# 取索引为5的那一行
print(df.iloc[5])
# 取第3、5、10行
print(df.iloc[[3, 5, 10]])
# 取第3、5、10行,只取第0、1、4列
print(df.iloc[[3, 5, 10], [0, 1, 4]])
大白话:iloc 像Excel的行号列号,用数字定位。df.iloc[行号, 列号]。
3.3 loc:用标签文本做索引
# 取索引标签为3、5、10的行,只取"姓名"和"交易额"列
print(df.loc[[3, 5, 10], ['姓名', '交易额']])
大白话:loc 用自定义的标签名定位,更直观。
3.4 at:快速取单个值
# 取行下标为3、列名为"姓名"的那个值
print(df.at[3, '姓名'])
iloc、loc、at 对比:
| 方法 | 索引方式 | 适用场景 |
|---|---|---|
iloc |
数字位置 | 知道行列号 |
loc |
标签名称 | 知道行列名 |
at |
标签名称 | 只取一个值,速度最快 |
3.5 条件筛选(重点!)
# 筛选交易额大于1700的数据
print(df[df['交易额'] > 1700])
# 筛选下午班的数据
print(df[df['时段'] == '14:00-21:00'])
# 多条件组合:张三 且 下午班
print(df[(df['姓名'] == '张三') & (df['时段'] == '14:00-21:00')])
# 筛选指定多个值:张三和李四
print(df[df['姓名'].isin(['张三', '李四'])])
# 筛选交易额在800-850之间的数据
print(df[df['交易额'].between(800, 850)])
关键记忆点:
- 组合条件用
&(且)和|(或),不能用and和or - 每个条件必须用括号括起来
isin()判断是否在指定列表中between()判断是否在数值区间内
四、统计计算
# 交易总额
print(df['交易额'].sum())
# 下午班的交易总额
print(df[df['时段'] == '14:00-21:00']['交易额'].sum())
# 日用品柜台销售总额
print(df[df['柜台'] == '日用品']['交易额'].sum())
# 张三和李四二人销售总额
print(df[df['姓名'].isin(['张三', '李四'])]['交易额'].sum())
大白话:先用条件筛选出想要的数据行,再取['交易额']这一列,最后用.sum()求和。思路就是:筛选 → 取列 → 计算。
今日核心总结
-
读取Excel:
pd.read_excel(),常用参数usecols(选列)、skiprows(跳行)、index_col(索引列)。 -
三种索引方式:
iloc:用数字位置(像Excel的A1、B2)loc:用标签名称(像Excel的列名)at:快速取单个值
-
条件筛选套路:
- 单条件:
df[df['列名'] > 值] - 多条件:
df[(条件1) & (条件2)] - 指定多个值:
df[df['列名'].isin([值1, 值2])] - 数值区间:
df[df['列名'].between(最小值, 最大值)]
- 单条件:
-
统计计算套路:
筛选 → 取列 → 计算,如df[条件]['列名'].sum()
注:已经使用DeepSeek进行整理精简核心内容,些许不理解的配合个人笔记进行理解。
这两天工作太忙了,休息休息,明天继续,今天只学了一节,进度还是有点慢。
更多推荐


所有评论(0)