(win,grade为例表)
一、文本数据处理:
1.str.
2.常用:
len 字符长度
lower 转换成小写
upper 转换成大写
islower 判断是否小写
isupper 判断是否大写
find 查找
count 统计个数
strip 去除两边
split 分裂
replace 替换
3.替换:wine.商品名称.str.replace('ml',"ML")
4.查找:
contains 包含 : 判断字符串中是否包含某个自字符
startswith :判断是否以子串开始
endswith : 判断是否以子串结束
5.切片:
# slice, 切片某一部分
wine.商品名称.str.slice(0,3)
# slice_replace 对切片部分进行替换
wine.商品名称.str.slice_replace(0,3,'你好')
6.连接:
# cat 对所有值进行连接
grade.姓名.str.cat(sep=', ')
7.插入:
# join 在字符之间插入内容
grade.姓名.str.join(' ')
8.重复:
# 把每个元素重复 n 次
grade.姓名.str.repeat(n)
9.哑变量:
grade_new.血型.str.get_dummies()
二、缺失值处理:
1. 统计空值数量:
grade.isnull().sum()
2.#提取空值:
grade[ grade.姓名.isnull() ]
3.删除空值:
user_info.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
//axis 参数用于控制行或列,跟其他不一样的是,axis=0 (默认)表示操作行,axis=1 表示操作列。
how 参数可选的值为 any(默认) 或者 all。any 表示一行/列有任意元素为空时即丢弃,all 一行/列所有值都为空时才丢弃。
subset 参数表示删除时只考虑的索引或列名。
thresh参数的类型为整数,它的作用是,比如 thresh=3,会在一行/列中至少有 3 个非空值时将其保留。//
# subset设置, 删除的时候考虑哪一列(subset)
grade.dropna(subset=['姓名'])
grade.dropna(subset=['数学', '语文', '英语'])
# 当数学, 语文, 英语都为空的时候, 就会被删除
grade.dropna(subset=['数学', '语文', '英语'], how='all')
# 数学语文英语这三列中只要有两个值, 就会保留
grade.dropna(thresh=2, subset=['数学', '语文', '英语'])
# 如果这一列中样本超过一半都有值存在则保留, 否则删除
grade.dropna(axis=1,thresh= grade.shape[0]/2 )
4.空值填充:
grade.fillna(0)
# 对多列使用中位数填充
for i in ['语文', '数学', '英语']:
grade[i].fillna(grade[i].median(),inplace=True)
# 采用上一个有效值填充
grade.fillna(method='ffill')
# 采用下一个有效值填充
grade.fillna(method='bfill')
# 采用线性差值填充
grade.interpolate()
三、数据分组:
1.步骤:
分割: 将 DataFrame按照指定的键分割成若干组
应用: 对每个组应用函数, 通常是累计,转换或过滤函数
组合: 将每一组的结果合并成一个输出组
2.分组:
# 统计不同学历的平均产品评分
df.groupby('学历')['产品评分'].mean()
# 同时统计多个统计值
test.agg(['max','min','mean'])
test.agg({"测试成绩":['mean','std','var'], "产品评分":['max','min','mean']})
# 自定义统计值
def f(x):
"""
实现的功能是提取出第二大的值
"""
return x.sort_values('测试成绩', ascending=False)['测试成绩'].iloc[1]
test.apply(f)








暂无数据