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

[特殊字符] DA1-13 复习学习笔记

1. 数据读取与查看

import pandas as pd# 读取 CSV 文件
df = pd.read_csv('nowcoder.csv')# 查看前几行
print(df.head())# 查看数据类型
print(df.dtypes)

2. loc 与 iloc:数据选择方法

方法说明示例
loc基于**标签(列名/行名)**选择数据df.loc[0:3, 'A':'C']
iloc基于**位置(整数索引)**选择数据df.iloc[0:4, 0:3]

✅ 注意:

  • loc 切片包含终点(闭区间)
  • iloc 切片不包含终点(左闭右开)
  • loc 支持条件筛选,iloc 不支持

3. 缺失值处理:isnull() 和 dropna()

✅ isnull():判断是否为空值

df.isnull()           # 返回布尔 DataFrame
df.isnull().any()     # 每列是否有缺失值(Series)
df.isnull().any().any()  # 整个数据是否有缺失(bool)

💡 提示:isna()isnull() 完全等价。

✅ dropna():删除含缺失值的行

# 删除任意列有缺失的行
df.dropna()# 只在指定列中检查缺失值
df.dropna(subset=['Age', 'Score'])# subset 含义:只看这些列,其他列空也不删

4. 数据类型转换:astype()

# 将指定列转为整数类型
columns_to_int = ['Age', 'Score']
df[columns_to_int] = df[columns_to_int].astype(int)

⚠️ 注意:

  • 字符串必须能转成数字(如 '25'),否则报错
  • 含 NaN 的列不能直接转 int,需先填充:fillna(0)

5. 显示设置:pd.set_option()

防止输出被截断或换行:

pd.set_option('display.max_columns', None)  # 显示所有列
pd.set_option('display.max_rows', None)     # 显示所有行
pd.set_option('display.width', None)        # 不自动换行

✅ 用途:调试时避免 ... 或换行干扰 ❌ 注意:大数据时慎用,可能导致输出过长


6. 条件筛选:多条件组合

✅ 推荐写法(一步到位)

result = df[(df['Language'] == 'CPP') &(df['Level'] == 7) &(df['Graduate_year'] != 2018)
]

⚠️ 注意:

  • 每个条件用括号 () 包裹
  • 多条件用 &(与)、|(或)、~(非)
  • 不要用 and / or,会报错!

❌ 不推荐写法(分步筛选)

temp = df[(df['Language']=='CPP') & (df['Level']==7)]
print(temp[temp['Graduate_year'] != 2018])

虽然语法正确,但效率低、代码冗余


7. 频次统计:value_counts()

# 统计每种语言的使用人数
print(df['Language'].value_counts())# 输出示例:
# Python    3
# CPP       2
# Java      1

常用参数:

参数作用
normalize=True返回比例(百分比)
dropna=False包含 NaN 的统计
sort=False不按频次排序
df['Language'].value_counts(normalize=True)  # 百分比

8. 日期处理:pd.to_datetime()

# 将字符串转为日期类型
df['date'] = pd.to_datetime(df['date'])# 提取年、月
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month# 筛选 2021 年 12 月
dec_2021 = df[(df['date'].dt.year == 2021) & (df['date'].dt.month == 12)]# 按天统计练习数量
daily_count = dec_2021.groupby('date').size()

✅ 总结:核心口诀

操作口诀
选数据loc 看名字,iloc 看位置
查空值isnull().any().any()
删空行dropna(subset=列名)
转类型astype(int)
显示全set_option 三连
筛条件括号加 &,别用 and
数频次value_counts() 最方便
处理日期先 to_datetime,再 .dt 提取

📌 附:常用代码模板

import pandas as pd# 1. 读数据 + 设置显示
pd.set_option('display.max_columns', None)
df = pd.read_csv('data.csv')# 2. 类型转换
df['col'] = df['col'].astype(int)# 3. 条件筛选
result = df[(df['A'] > 10) & (df['B'] == 'X')]# 4. 统计频次
print(df['Category'].value_counts())# 5. 日期处理
df['date'] = pd.to_datetime(df['date'])
monthly = df[df['date'].dt.to_period('M') == '2021-12']
http://www.xdnf.cn/news/20025.html

相关文章:

  • 极空间打造 “超级中枢”,从书签笔记到聊天分享,一键全搞定!
  • 非力扣100原题
  • FTL文件格式的原理与应用(AI)
  • AI歌手功能终于上线!Suno AI 带你保存歌曲的灵魂
  • 【教程】2025 IDEA 快速创建springboot(maven)项目
  • spring boot autoconfigure 自动配置的类,和手工 @configuration + @bean 本质区别
  • 硬件开发1-51单片机2-按键、中断
  • 域名不做网站使用,还需要备案吗
  • 这才是真正懂C/C++的人,写代码时怎么区分函数指针和指针函数?
  • Qt + windows + Linux+QtInstallerFramework打包教程
  • RabbitMQ相关知识
  • 基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
  • 单片机点灯
  • 【C++上岸】C++常见面试题目--算法篇(第十八期)
  • 网络:tcp
  • 关于稳定币的一些问答
  • 封装一个redis获取并解析数据的工具类
  • FPGA学习笔记——SDR SDRAM简介
  • 【golang长途旅行第37站】Redis连接池
  • OCR 发票识别与验真接口:助力电子化发票新时代
  • 融云:当我们谈论 AI 重构业务时,我们到底在谈论什么
  • 【Android】SharedPreferences轻量级持久化存储
  • 【题解】洛谷P1776 宝物筛选 [单调队列优化多重背包]
  • C++----模板特化以及模板声明与定义分离问题
  • AT32网线拔插下,modbus tcp断线重连
  • Linux awk命令完全指南:从原理到实战,搞定文本处理难题
  • 【AI】人工智能 传统和现代 架构和算法的演变历史
  • windows安装谷歌浏览器地址
  • TypeScript `infer` 关键字详解(从概念到实战)
  • AGV 搬运小车路径规划:从地图构建到路径决策的技术全解析