你是不是经常遇到这样的场景?
Excel表格打开卡成PPT,几十万行数据一动就死机;
领导甩给你一堆CSV文件,让你“汇总一下各部门的销售额”;
网上爬下来的数据乱七八糟,缺斤少两还有错别字……
这时候要是你会用 Pandas,简直像开了挂!这个Python里的“数据处理瑞士军刀”,能让几小时的手工活变成几分钟的代码操作。今天就带你彻底搞懂Pandas,从安装到实战,包教包会!
一、为啥要用Pandas?Excel不香吗?
先别急着反驳:“我用Excel透视表也能搞定啊!” 但你试试这几个场景:
数据量太大:Excel最多支持104万行,超过这个数直接罢工;Pandas轻松处理百万级数据。
重复性操作:每天要从10个CSV文件里提取同一列数据?Excel手动复制粘贴累到吐血;Pandas写段循环代码,一键搞定。
复杂计算:比如“计算每个城市每月销售额环比增长率”“筛选同时满足3个条件的数据”——Excel公式写得头晕眼花,Pandas一行代码解决。
一句话:Pandas是给数据“批量做手术”的工具,尤其适合程序员、数据分析师、运营同学日常搬砖。
二、5分钟上手Pandas:安装+核心概念
1. 安装:一行命令的事儿
打开终端(Windows叫“命令提示符”),输入:
pip install pandas
如果网速慢,国内用户可以用清华镜像加速:
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 核心概念:DataFrame和Series
Pandas有两个“灵魂”:
Series:可以理解为一列数据,比如“姓名”列、“年龄”列,自带索引(类似Excel的行号)。
DataFrame:可以理解为一张完整的表格,包含多列Series,既有行索引也有列名(类似Excel的工作表)。
举个栗子:
假设我们有个学生成绩表:
姓名 语文 数学 英语
小明 85 92 78
小红 90 88 95
小刚 76 95 82
在Pandas里,这就是一个 DataFrame,其中“姓名”列是一个 Series(索引是0、1、2),整个表格也是一个DataFrame(索引默认是0、1、2,列名是“姓名”“语文”等)。
三、Pandas必学操作:从读数据到存结果
1. 读数据:告别“另存为CSV”
Pandas支持几乎所有常见格式:CSV、Excel、JSON、SQL数据库……最常用的就是读CSV和Excel。
读csv文件:
import pandas as pd # 惯例:导入pandas并简写为pd
# 读取当前文件夹下的“成绩.csv”文件
df = pd.read_csv("成绩.csv") print(df) # 打印表格看看长啥样
读Excel文件(需要先安装
"openpyxl"库):
pip install openpyxl # 第一次用Excel需要装这个 df = pd.read_excel("成绩.xlsx", sheet_name="Sheet1") # 指定sheet页
2. 看数据:先瞅瞅“长啥样”
拿到数据别急着算,先看看基本信息:
df.head(3) # 显示前3行(默认5行)
df.tail(2) # 显示后2行
df.shape # 输出 (行数, 列数),比如 (3, 4)
df.info() # 查看每列数据类型(数字/字符串/日期)、是否有缺失值
df.describe() # 对数字列做统计(均值、最大值、最小值等)
比如上面的成绩表,
"df.describe()"会输出语文、数学、英语的平均分、最高分等。
3. 改数据:增删改查一条龙
新增一列(比如计算总分):
df["总分"] = df["语文"] + df["数学"] + df["英语"]
删除一列(比如删除“姓名”列):
df = df.drop(columns=["姓名"]) # 注意:drop默认返回新表格,原表格不变,所以要赋值回去
修改数据(比如把小明的数学成绩改成95):
df.loc[df["姓名"] == "小明", "数学"] = 95 # loc按标签查找,“姓名=小明”的行,“数学”列
筛选数据(比如筛选数学成绩>90的学生):
high_math = df[df["数学"] > 90]
print(high_math[["姓名", "数学"]]) # 只看姓名和数学成绩
4. 存数据:一键导出Excel/CSV
处理完数据,导出给别人看:
df.to_csv("处理后的成绩.csv", index=False) # index=False表示不保存行索引
df.to_excel("处理后的成绩.xlsx", sheet_name="成绩单", index=False)
四、进阶技巧:让数据处理效率翻倍
1. 批量处理:循环?不存在的!
很多人习惯用for循环遍历数据,但在Pandas里,向量化操作(对整个列进行计算)比循环快100倍!
比如计算每个学生的平均分(不用循环):
df["平均分"] = (df["语文"] + df["数学"] + df["英语"]) / 3
或者用内置函数:
df["平均分"] = df[["语文", "数学", "英语"]].mean(axis=1) # axis=1表示按行计算
2. 分组统计:透视表的平替
想知道“每个班级的平均分”?用
"groupby"分组:
# 假设新增“班级”列:小明和小红是1班,小刚是2班
df["班级"] = ["1班", "1班", "2班"]
# 按班级分组,计算各科平均分
class_avg = df.groupby("班级")[["语文", "数学", "英语"]].mean() print(class_avg)
输出结果:
语文 数学 英语
班级
1班 87.5 90.0 86.5
2班 76.0 95.0 82.0
3. 处理缺失值:别让空值毁了分析
现实数据总会有缺失(比如某学生没考英语),Pandas用
"NaN"(Not a Number)表示空值。
检查缺失值:
df.isnull().sum() # 统计每列有多少空值 填充缺失值(比如用平均分填充英语成绩):
df["英语"] = df["英语"].fillna(df["英语"].mean()) # 用该列平均值填充
删除含缺失值的行:
df = df.dropna() # 直接删,谨慎用!
4. 合并表格:VLOOKUP的终结者
比如有两个表:
"学生信息表":姓名、班级
"成绩表":姓名、语文、数学
想把两个表合并成“带班级的成绩表”,用
"merge":
# 假设已读入两个表:info_df(学生信息)和 score_df(成绩)
merged_df = pd.merge(score_df, info_df, on="姓名", how="left") # 按“姓名”列合并,保留所有成绩
五、避坑指南:新手常犯的3个错误
1. 忘记
"inplace=True"很多方法(如
"drop"、
"fillna")默认返回新表格,原表格不变。如果想直接修改原表格,要加
"inplace=True":
df.drop(columns=["姓名"], inplace=True) # 直接删除原表格的“姓名”列
2. 混淆
"loc"和
"iloc"
"loc":按标签(行名/列名)取数据,比如
"df.loc[0, "语文"]"(第0行“语文”列)。
"iloc":按位置(行号/列号)取数据,比如
"df.iloc[0, 1]"(第0行第1列,即“语文”列)。新手建议优先用
"loc",更直观。
3. 数据没排序就取Top N想取“数学成绩前2名”,别直接
"df.head(2)",要先排序:
top2 = df.sort_values(by="数学", ascending=False).head(2) # ascending=False降序排列
六、实战案例:用Pandas分析销售数据
假设你有一份“2023年销售数据.csv”,包含字段:日期、产品、地区、销售额。
目标:分析“各地区Q4销售额占比”。
1. 读数据: "df = pd.read_csv("销售数据.csv")" 2. 提取Q4数据(10-12月): df["日期"] = pd.to_datetime(df["日期"]) # 转为日期格式 q4_df = df[(df["日期"].dt.month >= 10) & (df["日期"].dt.month <= 12)] 3. 按地区分组求总销售额: region_sales = q4_df.groupby("地区")["销售额"].sum() 4. 计算占比: region_sales_ratio = region_sales / region_sales.sum() * 100 # 转为百分比 print(region_sales_ratio.round(2)) # 保留两位小数
结果示例:
地区
华北 35.2
华东 28.7
华南 22.1
西南 14.0
Name: 销售额, dtype: float64
![]()
实战案例:用Pandas分析销售数据
七、学习资源:从入门到精通
官方文档:"Pandas Documentation" (https://pandas.pydata.org/docs/)(最权威,有中文版)
免费教程:B站“莫烦Python”Pandas系列(讲得超细,适合零基础)
练习数据集:Kaggle(搜索“Titanic”“House Prices”等经典数据集)
Pandas的强大远不止这些,但掌握今天讲的“读、看、改、存、分组、合并”6大核心操作,已经能解决80%的日常数据处理需求。
下次再遇到Excel卡死、数据杂乱的情况,别慌,打开Python,用Pandas让数据“乖乖听话”!
你用Pandas解决过最头疼的问题是什么?评论区聊聊,抽3位送《Pandas实战手册》电子版~
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.