【可视化】

本文详细介绍了Python中Pandas库进行数据合并(包括纵向和横向拼接)、主键合并(左连接、右连接、内连接、外连接)的方法,以及数据清洗中的去重复值和处理缺失值策略,如删除法和替换法,包括使用平均值和众数处理异常值。
摘要由CSDN通过智能技术生成

数据合并

概念

1.纵向拼接

指将两个列名相同的Dataframe表格对象上下拼接到一起。

2.横向拼接

指将两个索引相同的Dataframe表格对象左右拼接到一起。

拼接合并

pd.concat()函数
语法:pd.concat([表格对象1,表格对象2],axis=0或1)
axis默认为0,表示为横向拼接,axis=1时则表示纵向拼接

主键合并

基于两个表共有的主键(即某列数据)将两个表的数据根据主键相同原则进行拼接(匹配)。

合并方式

根据合并后显示数据的逻辑不同,将主键合并分为:左连接、右连接、内连接、外连接。

合并方式结果
左连接只显示左表的主键所对应的数据
右连接只显示右表的主键所对应的数据
内连接只显示左表和右表共有的主键所对应的数据
外连接显示左表和右表所有的主键所对应的数据

主键合并函数pd.merge()
参数含义

参数作用
left用来合并的左表,接收DataFrame表格对象
right用来合并的右表,接收DataFrame表格对象
how主键合并的连接方式(左连接left、右连接right、外连接outer、内连接inner)
on当左右表用来拼接的字段名相同时,可以使用on参数指定
left_on左右两表中主键名称不一致时使用,指定左表的主键列名
right_on左右两表中主键名称不一致时使用,指定右表的主键列名
left_index当需要以左表的索引作为主键时使用、接收布尔值True
right_index当需要以右表的索引作为主键时使用,接收布尔值True

示例

#先创建两个表格对象
df1 = pd,DataFrame(
	[['张三','19'],['王五','20'],['李四','19']],
	columns=['姓名','年龄']
)

df2 = pd.DataFrame)
	[['张三','男'],['王五','男'],['李四','女']],
	columns=['姓名','性别']
)

#左连接
pd.merge(
	df1,
	df2,
	how='left',
	on = '姓名'
)
#右连接
pd.merge(
	df1,
	df2,
	how='right',
	on = '姓名'
)
#外连接
pd.merge(	
	df1,
	df2,
	how='outer',
	on = '姓名'
)
#内连接
pd.merge(
	df1,
	df2,
	how='inner',
	on = '姓名'
)

数据清洗

去重复值

概念:删除某个序列或是表格中某个序列中的重复数据。
方法:DataFrame表格和Series序列对象内置方法drop_duplicates()
语法:表格/序列对象.drop_duplicates(subset=None,keep=‘first’,inplace=False)

参数作用
subset当去重对象是表格对象时使用,指定去重依据的字段
keep指定去重后保留哪一行,frist表示第一行,last表示最后一行
inplace表示去重是否堆在原始数据对象上运行

表格去重
通过subset参数指定通过哪一列数据来去重

df.drop_duplicates(subset=['姓名'])

处理缺失值
查看数据的缺失值

表格对象.isnull()方法返回数据是否缺失的布尔值矩阵。
表格对象.isnull().sum()返回各列的缺失值数量。

#导入表格数据后
#查看缺失的布尔值矩阵
df_user.isnull()
#查看各列缺失值的数量
df_user.isnull().sum()

1.删除法处理缺失值
删除法:删除某个缺失数据所在的行的所有数据。
语法:表格对象.dropna(axis=0,how=‘any’,subset=None,inplace=False)

参数作用
axis指定删除行或者列,默认为0,表示删除行
how对表格对象多个字段的缺失值进行删除时使用。‘any’表示任何一个字段有缺失就删除。‘all’表示所有字段都缺失才删除
subset指定要删除的缺失值来自哪一(几)列
inplace表示是否对原数据生效,默认为False
#构建一个表格
df_name = pd.DataFrame(
	[['张三',18,'男'],[np.nan,20,'男'],['李四',np.nan,'女']],
	columns=['姓名','年龄','性别']
)

#一列
df_nan.dropna(subset=['姓名','年龄','性别'],how='any')

#所有列
df_nan.dropna(subset=['姓名','年龄','性别'],how='all')

2.替换法处理缺失值
替换法:使用某个数据去替换缺失值的处理方法,又叫填充法。
语法:序列对象.fillna(values=需要替换的值,inplace=False)
替换法又细分为三种反复分别为:

平均值法:一般对数值型序列使用
众数法:一般对类别型序列使用
特殊值法:一般在能够判断缺失数据和其他数据有不同特征时使用。

异常值

异常值有两个概念
1.通俗意义上,异常值是能根据经验判断的不符合常理的数据。
2、数学层面上,异常值是某一个序列中距离大部分数据较远,远到一定程度的数据。(指一组测定值中与 平均值 的偏差超过两倍 标准差 的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值)

异常值计算涉及的相关数学概念:

第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字

第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字

第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字

第三四分位数与第一四分位数的差距又称四分位距(IQR)
IQR=Q3-Q1

正常值区间:[Q1-1.5IQR,Q3+1.5IQR]
正常值区间之外的便是异常值了,对吧?(狗头)
处理方法
处理方法有:删除法、替换法
删除法:删除异常值数据所在的行
替换法:用均值法。众数法来替换掉异常值

一些下载地址

Anaconda
VScode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值