数据处理之数据转换

一、删除重复值

对于下面的dataframe,有重复的行:

df = pd.DataFrame()
df['a'] = [1, 2, 2, 3]
df['b'] = [2, 3, 3, 4]
df

输出结果:


	a	b
0	1	2
1	2	3
2	2	3
3	3	4

DataFrame的duplicated方法返回的是一个布尔值Series,这个Series反映的是每一行是否存在重复(与之前出现过的行相同)情况:

df.duplicated()

输出结果:

0    False
1    False
2     True
3    False
dtype: bool

drop_duplicates返回的则是DataFrame,内容是duplicated返回数组中为False的部分:

df.drop_duplicates()

输出结果:

	a	b
0	1	2
1	2	3
3	3	4

注意到,此时的索引未改变,而且保留第一个观测到的值,而传入参数keep='last’将会返回最后一个:

df.drop_duplicates(keep='last')

输出结果:


	a	b
0	1	2
2	2	3
3	3	4

也可以指定数据的任何子集来检测是否有重复:

df.drop_duplicates(['a'], keep='last') # 指定a列是否有重复值

输出结果:


	a	b
0	1	2
2	2	3
3	3	4

二、替换

pandas库中的replace提供了简单灵活的替换方法:

a = pd.Series([0, 1, -999, 10, -1000])
a

输出结果:

0       0
1       1
2    -999
3      10
4   -1000
dtype: int64

对于a,其中的-999为缺失值,所以可替换为NA:

a.replace(-999, np.nan) # 将-999替换为NA

输出结果:

0       0.0
1       1.0
2       NaN
3      10.0
4   -1000.0
dtype: float64

也可以替换多个值,也可以将多个值替换为不同的值:

a.replace([-999, -1000], np.nan) # 将-999和-1000都替换为空值

输出结果:

0     0.0
1     1.0
2     NaN
3    10.0
4     NaN
dtype: float64
a.replace([-999, -1000], [0, 1]) # 将-999替换为0,将-1000替换为1

输出结果:

0     0
1     1
2     0
3    10
4     1
dtype: int64

三、离散化和分箱

pandas之分箱操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值