🔹 DA9:2020年毕业且使用Java的用户
📌 题目描述
筛选出 2020年毕业 且 常用语言为 Java 的用户,输出他们的全部信息,并设置显示选项以完整显示数据。
✅ 正确代码
import pandas as pd
# 读取数据
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# 设置显示选项
pd.set_option('display.width', 300)          # 字符显示宽度
pd.set_option('display.max_rows', None)      # 显示所有行
pd.set_option('display.max_columns', None)   # 显示所有列
# 方法1:布尔索引(推荐)
result = Nowcoder[(Nowcoder['Graduate_year'] == 2020) & (Nowcoder['Language'] == 'Java')]
# 方法2:使用 query(更清晰)
# result = Nowcoder.query("Graduate_year == 2020 and Language == 'Java'")
print(result)💡 扩展知识
| 技术点 | 说明 | 
|---|---|
| &操作符 | 表示"与"(and),必须加括号 : (A) & (B) | 
| query()方法 | 支持字符串表达式,可读性强,支持 and/or/in | 
| pd.set_option() | 控制 Pandas 输出格式,避免 ...或换行 | 
| ==比较 | 注意数据类型: 2020(int) vs'2020'(str) | 
✅ 推荐使用
query()处理复杂条件,代码更易读。
🔹 DA9:筛选 C 系语言用户(C/C++/C#)
📌 题目描述
筛选出使用 C++、C 或 C# 的用户,输出他们的全部信息。
✅ 正确代码
import pandas as pd
# 读取数据
df = pd.read_csv('Nowcoder.csv', sep=',')
# 设置显示选项
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', None)
# 使用 isin() 筛选多个值(推荐)
result = df[df['Language'].isin(['C++', 'C', 'C#'])]
# 注意:'CPP' 应为 'C++',检查数据真实值
# 可先查看:print(df['Language'].unique())
print(result)💡 扩展知识
| 方法 | 说明 | 
|---|---|
| .isin(list) | 判断某列值是否在给定列表中,天然支持"或"逻辑 ✅ | 
| 替代写法 | `(A) | 
| 数据清洗 | 使用 .str.strip()去空格,.str.lower()统一大小写 | 
| unique() | 查看列中唯一值,排查拼写问题 | 
✅
isin()是处理"多选一"场景的最佳实践。
🔹 DA10:刷题量 ≥500 的用户等级与成就值
📌 题目描述
筛选出刷题量不低于 500 的用户,输出他们的 等级(Level) 和 成就值(Achievement_value)。
✅ 正确代码
import pandas as pd
# 读取数据
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# 筛选刷题量 >= 500 的用户
df = Nowcoder[Nowcoder['Num_of_exercise'] >= 500]
# 输出指定两列
print(df[['Level', 'Achievement_value']])💡 扩展知识
| 技术点 | 说明 | 
|---|---|
| df[['col1', 'col2']] | 选择多列,双层中括号 | 
| 链式索引风险 | df[cond]['col']可能触发SettingWithCopyWarning | 
| 推荐写法 | df.loc[cond, ['Level', 'Achievement_value']]更安全 | 
| 数据类型 | 确保 Num_of_exercise是数值型(int/float) | 
✅ 安全写法:
print(Nowcoder.loc[Nowcoder['Num_of_exercise'] >= 500, ['Level', 'Achievement_value']])
🔹 DA11:筛选非2018年毕业的 C++ 7级用户
📌 题目描述
筛选出 语言为 C++、等级为 7 的用户,再从中排除 2018年毕业 的用户,输出全部信息。
✅ 正确代码
import pandas as pd
# 读取数据
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',')
# 设置显示选项
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', None)
# 方法1:分步筛选
df = Nowcoder[(Nowcoder['Language'] == 'C++') & (Nowcoder['Level'] == 7)]
result = df[df['Graduate_year'] != 2018]
# 方法2:一步完成(推荐)
# result = Nowcoder.query("Language == 'C++' and Level == 7 and Graduate_year != 2018")
print(result)💡 扩展知识
| 技术点 | 说明 | 
|---|---|
| != | "不等于"操作符,用于排除特定值 | 
| 多条件组合 | 使用 &(与)、` | 
| 括号重要性 | 每个条件必须加括号: (A) & (B) & (C) | 
| query()优势 | 支持 !=、!=、in、not in,逻辑清晰 | 
✅ 推荐使用
query()处理复杂条件:
Nowcoder.query("Language == 'C++' and Level == 7 and Graduate_year != 2018")
🎯 总结:Pandas 核心筛选技巧速查
| 操作 | 推荐方法 | 
|---|---|
| 单条件筛选 | df[cond] | 
| 多条件"与" | (A) & (B)或query("A and B") | 
| 多条件"或" | `(A) | 
| "不等于" | != | 
| 选择多列 | df[['col1', 'col2']]或df.loc[:, ['col1', 'col2']] | 
| 避免链式索引 | 优先使用 loc | 
| 显示全部数据 | pd.set_option('display.max_columns', None)等 |