热线电话:13121318867

登录
2020-08-12 阅读量: 841
Pandas数据处理精简笔记

(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)


22.3108
2
关注作者
收藏
评论(0)

发表评论

暂无数据