当前位置: 首页 > news >正文

Python 数据分析学习笔记:Pandas 数据索引

🔹 DA5:检查数据是否有缺失值

📌 题目描述

检查 Nowcoder.csv 文件中每一列是否存在空值(缺失数据),输出每列是否有空值。

✅ 正确代码
import pandas as pd# 读取数据
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)# 输出每列是否有空值(True 表示有空值)
print(n.isnull().any())
💡 扩展知识
方法说明
df.isnull()返回布尔 DataFrame,True 表示该位置为空
df.notnull()与 isnull() 相反
df.isnull().any()每列是否有至少一个空值(返回 Series)
df.isnull().sum()每列空值数量统计(推荐用于分析)
df.dropna()删除含空值的行或列
df.fillna(value)填充空值

建议:实际分析中用 df.isnull().sum() 更直观。


🔹 DA6:筛选使用 Python 的用户

📌 题目描述

筛选出常用语言为 Python 的用户,并输出他们的全部信息。

✅ 正确代码
import pandas as pd# 读取数据(推荐加 dtype=object 防止类型问题)
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)# 筛选 Language 为 'Python' 的行
print(n[n['Language'] == 'Python'])
💡 扩展知识
  • 布尔索引df[condition] 是 Pandas 最常用的筛选方式。
  • 字符串匹配注意
    • 大小写敏感:'python' != 'Python'
    • 空格问题:'Python ' != 'Python'
  • 推荐增强写法
    n['Language'] = n['Language'].str.strip()  # 去空格
    result = n[n['Language'] == 'Python']

🔹 DA7:查看 Python 用户的成就值

📌 题目描述

输出使用 Python 的用户的“成就值”(Achievement_value)这一列。

✅ 正确代码
import pandas as pd# 读取数据(注意:如果要做数值计算,不要用 dtype=object)
n = pd.read_csv('Nowcoder.csv', sep=',')# 筛选 Python 用户,并取成就值列
print(n[n['Language'] == 'Python']['Achievement_value'])
💡 扩展知识
写法说明
df['col1']['col2']链式索引,不推荐,可能返回 SettingWithCopyWarning
df.loc[condition, 'col']推荐写法,更安全
df.query("Language == 'Python'")['Achievement_value']使用 query,可读性强

推荐写法

print(n.loc[n['Language'] == 'Python', 'Achievement_value'])

⚠️ 如果你用了 dtype=objectAchievement_value 是字符串,不能做数值计算。需要时用 .astype(int) 转换。


🔹 DA8:查看最后 5 行用户的部分数据

📌 题目描述

输出文件最后 5 行用户的 Nowcoder_IDLevelAchievement_valueLanguage

✅ 正确代码
import pandas as pd# 读取数据
data = pd.read_csv("Nowcoder.csv")# 使用 iloc 取最后 5 行,并选择指定列
print(data.iloc[-5:][['Nowcoder_ID', 'Level', 'Achievement_value', 'Language']])
💡 扩展知识
索引方式说明
iloc按位置索引,支持负数(-1 表示最后一行)
loc按标签索引(如行名、列名)
data.iloc[-5:]最后 5 行(从倒数第 5 行到末尾)
data.tail(5)与 iloc[-5:] 等价,更简洁

等价写法

print(data.tail(5)[['Nowcoder_ID', 'Level', 'Achievement_value', 'Language']])

tail(n)iloc[-n:] 更直观,推荐用于查看末尾数据。


🎯 总结:Pandas 核心操作速查表

操作方法
读取 CSVpd.read_csv('file.csv')
查看空值df.isnull().any() 或 df.isnull().sum()
筛选行df[condition] 或 df.query("cond")
筛选列df[['col1', 'col2']]
复合条件(A) & (B)(注意括号)
字符串处理.str.strip().str.lower()
位置索引iloc[i:j](行)、iloc[:, k:l](列)
查看末尾df.tail(n)
安全索引df.loc[condition, ['col1', 'col2']]

✅ 学习建议

  1. 先看数据:用 print(df.head()) 和 print(df.dtypes) 了解数据结构。
  2. 处理脏数据:去空格、统一大小写、处理缺失值。
  3. 类型一致:数值列不要用 dtype=object,除非你只做筛选。
  4. 避免链式索引:用 loc 替代 df[cond]['col']
  5. 多用 query 和 isin:代码更清晰。

http://www.dtcms.com/a/353605.html

相关文章:

  • 通信协议接口
  • 设计模式8-命令模式
  • docker常用命令有哪些
  • ASM字节码框架和KSP能够解析JAR包或者AAR包里面的内容吗?
  • 碰一碰发视频手机版源码开发:支持OEM
  • 76 最小覆盖子串
  • CPTS-Reddish
  • 【开发配置】云服务器配置Gitlab服务
  • 解决pod install报错问题的一些方法
  • 合金弹头全系列游戏合集分享 电脑安卓手机掌机SWITCH整合版 (1/2/X/3/4/5/6/7/XX)
  • Elasticsearch数据迁移快照方案初探(二):快照创建与多节点存储问题解决
  • Kafka经典面试题--Kafka的其他问题汇总
  • 嵌入式第三十九天(TCP多任务并发)
  • C语言二级考试环境配置详细教程【mac篇】
  • Java设计模式之《亨元模式》
  • HttpRequest.get()方法报错:301 Moved Permanently
  • XFile v2 系统架构文档
  • Unity List 相关
  • QOpenGLFunctions_2_1 与 OpenGL 的区别
  • 【系统架构设计(四)】软件工程:从瀑布到敏捷的演进之路
  • 【系统架构设计(三)】系统工程与信息系统基础下:企业信息化与电子商务-数字化转型的核心驱动力
  • 【Django + Pure Admin】基于Django+Vue3的前后端分离管理系统框架设计
  • 服务器硬件电路设计之 SPI 问答(六):如何提升服务器硬件电路中的性能?如何强化稳定性?
  • MySQL explain命令的作用
  • 什么是AI+?什么是人工智能+?
  • 济南大学杨波与济南青盟信息技术有限公司杨华伟
  • 北京国标竞品调查,知己知彼(竞品调查研究)
  • Java全栈开发面试实战:从基础到微服务的深度探索
  • Linux学习-TCP并发服务器构建
  • XState