利用Python进行数据分析之pandas数据转换(去重、替换、重命名、离散化和面元划分、检测和过滤异常值、排列和随机采样、计算指标/哑变量等)

本文详细介绍了如何使用Python的pandas库进行数据处理,包括移除重复数据、利用函数转换、替换值、重命名轴索引、离散化、异常值检测和过滤、排列与随机采样,以及计算指标和哑变量等关键步骤,帮助读者掌握数据预处理的核心技巧。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值