Pandas 入门二:DataFrame 核心操作,新手也能轻松筛选/修改数据
Pandas数据处理实战:从数据洞察到精准操作
在上一篇文章中,我们掌握了Pandas的安装和数据读取,成功将表格数据加载为DataFrame。今天,我们将继续深入,聚焦数据处理中最核心的三个环节:如何快速了解你的数据、如何精准筛选出目标信息,以及如何高效地修改数据内容。每个环节都配有可直接复制的代码和直观的结果展示,跟随步骤实践一遍,你就能在短时间内掌握DataFrame的基础操作精髓。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

一、衔接回顾:数据准备
让我们先快速回顾并准备好操作环境。沿用上一篇的示例数据,通过几行代码即可将数据载入并预览。
import pandas as pd
# 读取数据(确保文件路径正确)
df = pd.read_csv("data.csv")
print("原始数据:")
print(df.head())
运行后,你将看到一个结构清晰的DataFrame:
原始数据:
姓名 年龄 城市 消费金额
0 张三 25 北京 300
1 李四 32 上海 500
2 王五 28 广州 450
3 赵六 23 深圳 380
4 孙七 35 杭州 600
后续的所有操作都将基于这个DataFrame展开。
二、第一步:快速数据诊断
在动手筛选或修改之前,花几分钟了解数据的“底细”至关重要。这能帮你避免后续操作中的许多潜在错误。
1. 查看数据基本信息:info()
想要一目了然地掌握数据全貌吗?info()函数是你的首选。它能告诉你数据有多少行、多少列、每列的数据类型以及是否存在缺失值。
df.info()
运行结果示意:
RangeIndex: 10 entries, 0 to 9 # 共10行数据
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 姓名 10 non-null object
1 年龄 10 non-null int64
2 城市 10 non-null object
3 消费金额 10 non-null int64
dtypes: int64(2), object(2)
2. 查看数据统计信息:describe()
如果数据中包含数值列(如年龄、金额),describe()能快速生成一份统计摘要,包括计数、均值、标准差、分位数等关键指标。
df.describe()
运行结果示意:
年龄 消费金额
count 10.000000 10.000000 # 数据个数
mean 29.300000 423.000000 # 平均值
std 4.578209 105.687374 # 标准差
min 23.000000 300.000000 # 最小值
25% 26.500000 365.000000 # 25%分位数
50% 29.000000 435.000000 # 中位数
75% 32.500000 500.000000 # 75%分位数
max 35.000000 600.000000 # 最大值
3. 查看数据形状:shape
想立刻知道数据表是“高瘦型”还是“矮胖型”吗?使用shape属性(注意,它不是函数,不需要括号)。
print("数据形状(行数×列数):", df.shape) # 输出:(10, 4) 表示10行4列
三、第二步:核心数据筛选技巧
数据筛选是数据分析的日常高频操作。无论是提取特定列,还是根据条件过滤行,Pandas都能用简洁的代码高效完成。
1. 场景一:按列筛选
假设我们只需要查看“姓名”和“消费金额”这两列,有两种主流且简单的方法。
# 方法1:直接传入列名列表(最直观)
df_selected = df[["姓名", "消费金额"]]
# 方法2:使用loc函数(为后续复杂筛选铺垫)
df_selected2 = df.loc[:, ["姓名", "消费金额"]] # 冒号:表示选取所有行
print("筛选后的数据(姓名+消费金额):")
print(df_selected.head())
运行结果:
筛选后的数据(姓名+消费金额):
姓名 消费金额
0 张三 300
1 李四 500
2 王五 450
3 赵六 380
4 孙七 600
2. 场景二:按条件筛选行
如何找出“年龄大于28岁”或“城市在北京”的用户?这就需要用到“布尔索引”。
# 1. 筛选年龄大于28岁的用户
df_age = df[df["年龄"] > 28]
print("年龄大于28岁的用户:")
print(df_age)
# 2. 筛选城市是北京的用户(文本匹配需用==)
df_city = df[df["城市"] == "北京"]
print("\n城市是北京的用户:")
print(df_city)
# 3. 多条件组合筛选(例如:年龄>25 且 消费金额≥400)
# 关键点:每个条件必须用括号括起来,逻辑运算符使用 &(且)、|(或)
df_multi = df[(df["年龄"] > 25) & (df["消费金额"] >= 400)]
print("\n年龄>25且消费金额≥400的用户:")
print(df_multi)
运行结果示意(多条件筛选):
年龄>25且消费金额≥400的用户:
姓名 年龄 城市 消费金额
1 李四 32 上海 500
2 王五 28 广州 450
4 孙七 35 杭州 600
3. 进阶技巧:按位置索引筛选
当你明确知道需要第几行、第几列的数据时,iloc(基于整数位置的索引)是最高效的工具。
# iloc[行索引, 列索引] → 索引从0开始计数
# 1. 选取第2行(索引为1)的所有列
df_row = df.iloc[1, :]
print("第2行数据:")
print(df_row)
# 2. 选取前3行(索引0-2)的第1列和第4列(索引0和3)
df_row_col = df.iloc[:3, [0, 3]]
print("\n前3行的姓名和消费金额:")
print(df_row_col)
四、第三步:数据修改与增强
筛选出目标数据后,修改和增强是常见的后续步骤。以下四个操作覆盖了大部分修改需求。
1. 修改列名
如果原始列名不够直观,可以使用rename()函数进行批量或单个修改。
# 通过字典映射修改列名
df_renamed = df.rename(columns={"消费金额": "消费总额", "城市": "所在城市"})
print("修改列名后:")
print(df_renamed.head())
运行结果示意:
修改列名后:
姓名 年龄 所在城市 消费总额
0 张三 25 北京 300
1 李四 32 上海 500
2. 修改特定单元格的值
需要修正某个具体数据?例如,将“张三”的消费金额改为350。
# 推荐方法:按条件定位修改(更安全,不易因行序变动而出错)
df.loc[df["姓名"] == "张三", "消费金额"] = 350
# 备选方法:按精确索引位置修改(已知行号列号时使用)
# df.iloc[0, 3] = 350 # 第1行第4列
print("修改后的数据(张三的消费金额):")
print(df[df["姓名"] == "张三"])
运行结果:
修改后的数据(张三的消费金额):
姓名 年龄 城市 消费金额
0 张三 25 北京 350
3. 添加新列
基于现有列计算衍生指标是数据分析的常见需求,例如计算折扣价或打标签。
# 1. 添加“折扣后金额”(基于消费金额计算)
df["折扣后金额"] = df["消费金额"] * 0.9
# 2. 添加“是否高消费”标签(条件判断)
df["是否高消费"] = df["消费金额"] >= 500 # 结果为布尔值True/False
print("添加新列后:")
print(df.head())
运行结果示意:
添加新列后:
姓名 年龄 城市 消费金额 折扣后金额 是否高消费
0 张三 25 北京 350 315.0 False
1 李四 32 上海 500 450.0 True
2 王五 28 广州 450 405.0 False
4. 删除列或行
对于不再需要的数据,可以将其从DataFrame中移除。
# 1. 删除列:指定axis=1,inplace=True表示直接修改原数据
df.drop(columns=["是否高消费"], axis=1, inplace=True)
# 2. 删除行:指定axis=0,例如删除索引为3的行
df.drop(index=[3], axis=0, inplace=True)
print("删除列和行后:")
print(df.head())
五、新手避坑指南
在实践过程中,有几个高频错误点需要特别注意:
列名书写错误:列名必须与df.info()的输出完全一致,注意中英文、空格和大小写。
多条件筛选缺少括号:像df[df[“年龄”]>25 & df[“消费金额”]≥400]这样的写法会报错。务必为每个独立条件加上括号:(df[“年龄”]>25) & (df[“消费金额”]≥400)。
混淆loc与iloc:loc基于标签(列名/行索引名)筛选,iloc基于整数位置索引筛选。
修改未保存:如果希望将修改后的数据持久化到文件,记得使用df.to_csv(“新文件名.csv”, index=False)进行保存。
六、技能总结
至此,你已经掌握了Pandas DataFrame基础操作的核心技能:
使用info()、describe()、shape快速完成数据诊断。
运用列筛选、条件筛选和索引筛选,精准定位目标数据。
执行列名修改、值更新、列添加与删除,实现数据内容的调整与增强。
识别并避开常见错误,确保代码的稳定运行。
恭喜!现在你已经具备了用代码高效处理表格数据的能力,可以尝试将这些技巧应用到实际工作场景中了。
相关攻略
什么是PandasAI? 简单来说,PandasAI是一个为经典数据分析库Pandas注入AI灵魂的Python工具。它通过集成生成式人工智能,让原本沉默的DataFrame(数据框)变得能“对话”。想象一下,你不再需要编写复杂的查询代码,只需用最自然的语言向你的业务数据提问,它就能实时给出洞见。无
吃透Pandas两大“数据汇总神器”:透视表与交叉表实战指南 在数据处理的工具箱里,如果说基础的清洗、筛选是基本功,那么多维度、交叉式的数据汇总,往往就是区分新手与熟手的分水岭。面对诸如“按地区加品类统计销售额”、“分析不同省份的商品订单分布”这类需求,如果还停留在手动分组、多层循环的老路上,不仅代
「Pandas从入门到精通」系列一:从零到一的起手式,10分钟搞定安装与数据读取 很多数据分析的探索旅程,往往就卡在第一步:面对海量的表格数据,手动整理效率低下且易错;想要用代码提升效率,却被陌生的术语和复杂的环境配置劝退。 如果你也有过类似的困扰,那么今天的内容正是为你准备的。我们将一起认识数据分
Pandas-Profiling:让探索性数据分析效率翻倍的神器 很多数据分析新手,最初可能都用过 df describe() 和 df info() 这两板斧来初步了解数据。这当然没错,但效率上总感觉差了那么一口气。 今天要介绍一个堪称神器的工具——Pandas-Profiling。它能一键生成一
Pandas数据处理实战:从数据洞察到精准操作 在上一篇文章中,我们掌握了Pandas的安装和数据读取,成功将表格数据加载为DataFrame。今天,我们将继续深入,聚焦数据处理中最核心的三个环节:如何快速了解你的数据、如何精准筛选出目标信息,以及如何高效地修改数据内容。每个环节都配有可直接复制的代
热门专题
热门推荐
峡谷区域唯一唱片需集齐三个碎片合成。首个碎片位于地图西北角木箱木桶旁,外观如跳动火焰。集齐碎片可解锁新内容并提升游戏体验,探索时留意细节可能发现更多隐藏惊喜。
《遥遥西土》中,西土唱片需集齐三个碎片合成。首个碎片位于地图东南角的管子洞内,获取过程简单,无复杂谜题或战斗。整体流程清晰,玩家按指引收集全部碎片即可合成唱片,轻松完成收集任务。
《鸣潮》联动《赛博朋克:边缘行者》,推出五星角色露西与丽贝卡,可通过限定卡池与活动免费获取。联动包含专属剧情、夜之城风格场景及高难度BOSS战,并植入动画经典音乐。参与预热活动和完成剧情任务可获得限定奖励,全方位打造沉浸式赛博朋克体验。
鼻噶流”玩法围绕“混沌爪牙”基因展开,开局以小体型角色灵活发育,注重走位与策略而非堆叠体型与伤害。该玩法在较高难度下提供了与传统平推思路不同的趣味体验,适合追求新鲜操作感的玩家尝试。
《异环》S级气态弧盘“好狗狗走四方”可提升充能与全队攻击,适合早雾等辅助。完成主线任务“成交?成交!”后解锁番外副本“月光当铺”,首次击败BOSS墨菲克斯即可免费获取。战斗时建议中距离拉扯,优先清理小狼,搭配破韧与输出角色更易通关。





