python 数据清洗之数据合并、转换、过滤、排序

前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作,

数据清洗一直是数据分析中极为重要的一个环节。

数据合并

在pandas中可以通过merge对数据进行合并操作。

import numpy as npimport pandas as pddata1 = pd.DataFrame({'level':['a','b','c','d'],         'numeber':[1,3,5,7]})data2=pd.DataFrame({'level':['a','b','c','e'],         'numeber':[2,3,6,10]})print(data1)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(data2)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(pd.merge(data1,data2))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

可以看到data1和data2中用于相同标签的字段显示,而其他字段则被舍弃,这相当于SQL中做inner join连接操作。
此外还有outer,ringt,left等连接方式,用关键词how的进行表示。

data3 = pd.DataFrame({'level1':['a','b','c','d'],         'numeber1':[1,3,5,7]})data4=pd.DataFrame({'level2':['a','b','c','e'],         'numeber2':[2,3,6,10]})print(pd.merge(data3,data4,left_on='level1',right_on='level2'))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

两个数据框中如果列名不同的情况下,我们可以通过指定letf_on 和right_on两个参数把数据连接在一起

print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left'))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

其他详细参数说明

python 数据清洗之数据合并、转换、过滤、排序

重叠数据合并

有时候我们会遇到重叠数据需要进行合并处理,此时可以用comebine_first函数。

data3 = pd.DataFrame({'level':['a','b','c','d'],         'numeber1':[1,3,5,np.nan]}) data4=pd.DataFrame({'level':['a','b','c','e'],         'numeber2':[2,np.nan,6,10]}) print(data3.combine_first(data4))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

可以看到相同标签下的内容优先显示data3的内容,如果一个数据框中的某一个数据是缺失的,此时另外一个数据框中的元素就会补上

这里的用法类似于np.where(isnull(a),b,a)

数据重塑和轴向旋转

这个内容我们在上一篇pandas文章有提到过。数据重塑主要使用reshape函数,旋转主要使用unstack和stack两个函数。

data=pd.DataFrame(np.arange(12).reshape(3,4),       columns=['a','b','c','d'],       index=['wang','li','zhang'])print(data)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(data.unstack())

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

数据转换

删除重复行数据

data=pd.DataFrame({'a':[1,3,3,4],       'b':[1,3,3,5]})print(data)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(data.duplicated())

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

可以看出第三行是重复第二行的数据所以,显示结果为True

另外用drop_duplicates方法可以去除重复行

print(data.drop_duplicates())

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:
python 数据清洗之数据合并、转换、过滤、排序

替换值

除了使用我们上一篇文章中提到的fillna的方法外,还可以用replace方法,而且更简单快捷

data=pd.DataFrame({'a':[1,3,3,4],       'b':[1,3,3,5]})print(data.replace(1,2))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

多个数据一起换

print(data.replace([1,4],np.nan))

登录后复制

立即学习“Python免费学习笔记(深入)”;

python 数据清洗之数据合并、转换、过滤、排序

数据分段

data=[11,15,18,20,25,26,27,24]bins=[15,20,25]print(data)print(pd.cut(data,bins))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:
[11, 15, 18, 20, 25, 26, 27, 24][NaN, NaN, (15, 20], (15, 20], (20, 25], NaN, NaN, (20, 25]]
Categories (2, object): [(15, 20]

可以看出分段后的结果,不在分段内的数据显示为na值,其他则显示数据所在的分段。

print(pd.cut(data,bins).labels)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

[-1 -1 0 0 1 -1 -1 1]

显示所在分段排序标签

print(pd.cut(data,bins).levels)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

Index([‘(15, 20]’, ‘(20, 25]’], dtype=’object’)

显示所以分段标签

print(value_counts(pd.cut(data,bins)))

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

显示每个分段值得个数

此外还有一个qcut的函数可以对数据进行4分位切割,用法和cut类似。

排列和采样

我们知道排序的方法有好几个,比如sort,order,rank等函数都能对数据进行排序
现在要说的这个是对数据进行随机排序(permutation)

data=np.random.permutation(5)print(data)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

[1 0 4 2 3]

这里的peemutation函数对0-4的数据进行随机排序的结果。
也可以对数据进行采样

df=pd.DataFrame(np.arange(12).reshape(4,3))samp=np.random.permutation(3)print(df)

登录后复制

立即学习“Python免费学习笔记(深入)”;

结果为:

python 数据清洗之数据合并、转换、过滤、排序

print(samp)

结果为:
[1 0 2]

print(df.take(samp))

结果为:

python 数据清洗之数据合并、转换、过滤、排序

这里使用take的结果是,按照samp的顺序从df中提取样本。

更多python 数据清洗之数据合并、转换、过滤、排序相关文章请关注PHP中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2279904.html

(0)
上一篇 2025年2月27日 17:41:10
下一篇 2025年2月27日 02:42:56

AD推荐 黄金广告位招租... 更多推荐

发表回复

登录后才能评论