🔹 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 核心操作速查表

操作 方法
读取 CSV pd.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:代码更清晰。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐