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

Python 数据分析学习笔记:Pandas 逻辑运算

🔹 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) | (B) | (C),但代码冗长
数据清洗使用 .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() 优势支持 !=!=innot in,逻辑清晰

✅ 推荐使用 query() 处理复杂条件:

Nowcoder.query("Language == 'C++' and Level == 7 and Graduate_year != 2018")

🎯 总结:Pandas 核心筛选技巧速查

操作推荐方法
单条件筛选df[cond]
多条件“与”(A) & (B) 或 query("A and B")
多条件“或”(A) | (B) 或 .isin([...])
“不等于”!=
选择多列df[['col1', 'col2']] 或 df.loc[:, ['col1', 'col2']]
避免链式索引优先使用 loc
显示全部数据pd.set_option('display.max_columns', None) 等
http://www.dtcms.com/a/354541.html

相关文章:

  • 97、23种设计模式之桥接模式(6/23)
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(四)
  • attention is all u need
  • npm install --global @dcloudio/uni-cli 时安装失败
  • 【lucene】如何评测一款分析器Analyzer
  • CP1-1-用户管理MyUser
  • jQuery 从入门到实践:基础语法、事件与元素操作全解析
  • 通过vs code配置spring boot+maven项目
  • vxetable数据导出
  • GaussDB 数据库架构师修炼(十八) SQL执行引擎-概述
  • 【爬虫】通过模拟鼠标点击和键盘操作抓取网页数据
  • 算法 --- 二分
  • 【深度学习新浪潮】显著性检测最新研究进展(2022-2025)
  • LeetCode 刷题【55. 跳跃游戏】
  • 用 PyTorch 搭建 CNN 实现 MNIST 手写数字识别
  • 如何开发线下陪玩儿小程序
  • 【图像处理基石】DCT在图像处理中的应用及实现
  • natapp 内网穿透
  • 【iOS】Masnory自动布局的简单学习
  • 图算法详解:最短路径、拓扑排序与关键路径
  • 使用 httpsok 工具全面排查网站安全配置
  • Nginx + Certbot配置 HTTPS / SSL 证书(简化版已测试)
  • Android稳定性问题的常见原因是什么
  • JSP程序设计之JSP指令
  • react+vite+ts 组件模板
  • CVPR2025丨VL2Lite:如何将巨型VLM的“知识”精炼后灌入轻量网络?这项蒸馏技术实现了任务专用的极致压缩
  • 传统星型拓扑结构的5G,WiFi无线通信网络与替代拓扑结构自组网
  • BGP路由协议(一):基本概念
  • UE的SimpleUDPTCPSocket插件使用
  • 百度地图+vue+flask+爬虫 推荐算法旅游大数据可视化系统Echarts mysql数据库 带沙箱支付+图像识别技术