2021-04-07 python数据处理系统学习(二十三)重复值处理、缺失值处理
导入数据:
import pandas as pd
import numpy as np
import os
os.chdir(r'C:\Users\wangyu\Desktop\毕业论文')
data=pd.read_excel('附件1:123家有信贷记录企业的相关数据.xlsx',sheet_name=1,header=0,dtype={
'销方单位代号':str,'发票号码':str})
data2=pd.read_excel('最终data.xlsx',sheet_name=0,header=0)
1、重复值处理
1.1 判断是否有重复值
如果没有重复值:
data.duplicated()
Out[3]:
0 False
1 False
2 False
3 False
4 False
210942 False
210943 False
210944 False
210945 False
210946 False
Length: 210947, dtype: bool
如果有重复值:
data1=data.append(data.head(5))
data1.duplicated()
Out[9]:
0 False
1 False
2 False
3 False
4 False
0 True
1 True
2 True
3 True
4 True
Length: 210952, dtype: bool
也可以根据其中几个变量进行重复值的搜索:
data.duplicated(subset=['销方单位代号','价税合计'])
Out[11]:
0 False
1 False
2 False
3 False
4 False
210942 True
210943 True
210944 True
210945 True
210946 True
Length: 210947, dtype: bool
1.2 选择重复值
用keep=‘first’保留第一个,表示第一个值当成第一出现的值,记为True,后来重复出现的记为False,keep=‘last’表示保留后一个,即后一个记为True,其余的记为False,如下:
data1.duplicated(subset=['销方单位代号','价税合计'],keep='first')
Out[12]:
0 False
1 False
2 False
3 False
4 False
0 True
1 True
2 True
3 True
4 True
Length: 210952, dtype: bool
data1.duplicated(subset=['销方单位代号','价税合计'],keep='last')
Out[13]:
0 True
1 True
2 True
3 True
4 True
0 False
1 False
2 False
3 False
4 False
Length: 210952, dtype: bool
1.3 计算重复的个数
np.sum(data1.duplicated(subset=['销方单位代号','价税合计'],keep='last'))
Out[14]: 93671
np.sum(data1.duplicated())
Out[15]: 808
1.4 剔除重复值
data1.drop_duplicates()
Out[16]:
企业代号 发票号码 开票日期 销方单位代号 金额 税额 价税合计 发票状态
0 E1 3390939 2017-07-18 A00297 -943.40 -56.60 -1000.00 有效发票
1 E1 3390940 2017-07-18 A00297 -4780.24 -286.81 -5067.05 有效发票
2 E1 3390941 2017-07-18 A00297 943.40 56.60 1000.00 有效发票
3 E1 3390942 2017-07-18 A00297 4780.24 286.81 5067.05 有效发票
4 E1 9902669 2017-08-07 A05061 326.21 9.79 336.00 有效发票
... ... ... ... ... ... ... ...
210942 E122 54706234 2019-04-17 A08967 223.30 6.70 230.00 有效发票
210943 E122 55721344 2020-01-10 A09184 264.15 15.85 280.00 有效发票
210944 E123 38493295 2017-12-15 A03624 264.15 15.85 280.00 有效发票
210945 E123 95472001 2018-12-29 A03626 264.15 15.85 280.00 有效发票
210946 E123 54469883 2019