1、移除重复数据
(1)duplicated显示重复行(默认判断全部列)
data.duplicated()
Out[18]:
0 False
1 True
2 False
3 False
4 True
5 False
6 True
dtype: bool
(2)drop_duplicates用于返回一个移除了重复行‘的DataFrame(默认判断全部列)
data.drop_duplicates()
Out[19]:
k1 k2
0 one 1
2 one 2
3 two 3
5 two 4
(3)指定部分列进行重复项判断
duplicated和duplicates默认保留的是第一个出现的值组合,传入keep='last'则保留最后一个。假设还有一列值,且只希望根据k1列过滤重复项:
data['v1'] = range(7)
data.drop_duplicates(['k1'])
Out[21]:
k1 k2 v1
0 one 1 0
3 two 3 3
data.drop_duplicates(['k1','k2'],keep='last')
Out[23]:
k1 k2 v1
1 one 1 1
2 one 2 2
4 two 3 4
6 two 4 6
2、利用函数或映射进行数据转换
data = DataFrame({'food':['b','p','b','p','c','B','p','h','n'],'O':[4,3,12,6,7.5,8,3,5,6]})
data
Out[25]:
food O
0 b 4.0
1 p 3.0
2 b 12.0
3 p 6.0
4 c 7.5
5 B 8.0
6 p 3.0
7 h 5.0
8 n 6.0
假设你想要添加一列表示该肉类食物来源的动物类型。我们先编写一个肉类到动物的映射:
data['animal']=data['food'].map(str.lower).map(meat_to_animal)
data
Out[28]:
food O animal
0 b 4.0 p
1 p 3.0 c
2 b 12.0 p
3 p 6.0 c
4 c 7.5 c
5 B 8.0 p
6 p 3.0 c
7 h 5.0 p
8 n 6.0 s
(1)Series的map方法
可以接受一个函数或含有映射关系的字典型对象,可修改对象的数据子集
data['animal']=data['food'].map(str.lower).map(meat_to_animal) #先转换大小写
data
Out[28]:
food O animal
0 b 4.0 p
1 p 3.0 c
2 b 12.0 p
3 p 6.0 c
4 c 7.5 c
5 B 8.0 p
6 p 3.0 c
7 h 5.0 p
8 n 6.0 s
data['food'].map(lambda x:meat_to_animal[x.lower()]) #此函数能够完成全部这些工作
Out[29]:
0 p
1 c
2 p
3 c
4 c
5 p
6 c
7 p
8 s
Name: food, dtype: object
使用map是一种实现元素级转换以及其他数据清理工作的便捷方式
3、替换值
利用fillna方法填充缺失数据可以看成值替换的一种特殊情况,replace更为简单、灵活
data = Series([1.,-999.,2.,-999.,-1000.,3.])
data
Out[31]:
0 1.0
1 -999.0
2