[特殊字符] 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']