数据清洗之 高阶函数处理
Posted wx62c62b36cedf9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据清洗之 高阶函数处理相关的知识,希望对你有一定的参考价值。
高阶函数处理
- 在dataframe中使用apply方法,调用自定义函数对数据进行处理
- 函数apply,注意axis
- 可以使用astype函数对数据进行转换
- 可以使用map函数进行数据转换
import pandas as pd
import numpy as np
import
os.getcwd()
D:\\\\Jupyter\\\\notebook\\\\Python数据清洗实战\\\\数据清洗之数据转换
os.chdir(D:\\\\Jupyter\\\\notebook\\\\Python数据清洗实战\\\\数据)
df = pd.read_csv(sam_tianchi_mum_baby.csv, dtype=str, encoding=utf-8)
df.head(5)
user_id | birthday | gender | |
0 | 2757 | 20130311 | 1 |
1 | 415971 | 20121111 | 0 |
2 | 1372572 | 20120130 | 1 |
3 | 10339332 | 20110910 | 0 |
4 | 10642245 | 20130213 | 0 |
def f(x):
if 0 in str(x):
return 女
elif 1 in str(x):
return 男
else:
return 未知
# apply函数可做很多其他处理
df[性别] = df[gender].apply(f)
df.head(5)
user_id | birthday | gender | 性别 | |
0 | 2757 | 20130311 | 1 | 男 |
1 | 415971 | 20121111 | 0 | 女 |
2 | 1372572 | 20120130 | 1 | 男 |
3 | 10339332 | 20110910 | 0 | 女 |
4 | 10642245 | 20130213 | 0 | 女 |
# 查看性别为未知数据
df[df[gender] == 2].head(5)
user_id | birthday | gender | 性别 | |
46 | 49167150 | 20130818 | 2 | 未知 |
47 | 49983255 | 20140206 | 2 | 未知 |
51 | 52529655 | 20130611 | 2 | 未知 |
58 | 57711375 | 20130420 | 2 | 未知 |
106 | 99665637 | 20130926 | 2 | 未知 |
del df[性别]
# map函数主要用于映射
df[性别] = df[gender].map(0: 女性, 1:男性, 2: 未知)
df.head(5)
user_id | birthday | gender | 性别 | |
0 | 2757 | 20130311 | 1 | 男性 |
1 | 415971 | 20121111 | 0 | 女性 |
2 | 1372572 | 20120130 | 1 | 男性 |
3 | 10339332 | 20110910 | 0 | 女性 |
4 | 10642245 | 20130213 | 0 | 女性 |
del df[性别]
# map函数也可传入自己定义的函数
df[性别] = df[gender].map(f)
df.head(5)
user_id | birthday | gender | 性别 | |
0 | 2757 | 20130311 | 1 | 男 |
1 | 415971 | 20121111 | 0 | 女 |
2 | 1372572 | 20120130 | 1 | 男 |
3 | 10339332 | 20110910 | 0 | 女 |
4 | 10642245 | 20130213 | 0 | 女 |
# 脱敏处理
# 可使用lambda函数
df[user_id].apply(lambda x: str(x).replace(x[1:3], **)).head(5)
0 2**7
1 4**971
2 1**2572
3 1**39332
4 1**42245
Name: user_id, dtype: object
df[birthday].apply(lambda x: x[0:4]).head(5)
0 2013
1 2012
2 2012
3 2011
4 2013
Name: birthday, dtype: object
以上是关于数据清洗之 高阶函数处理的主要内容,如果未能解决你的问题,请参考以下文章