Pandas之数据清洗

举报
Python爱好者 发表于 2020/12/29 23:02:42 2020/12/29
【摘要】 前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作, 数据合并 在pandas中可以通过merge对数据进行合并操作。 12345678import numpy as npimport pandas as pddata1 = pd.DataFrame({'level':['a','b','c','d'],               ...

640?wx_fmt=gif

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

数据合并

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

1

2

3

4

5

6

7

8

import numpy as np

import pandas as pd

data1 = 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)

结果为:640?wx_fmt=png

1

print(data2)

结果为:640?wx_fmt=png

1

print(pd.merge(data1,data2))

结果为:640?wx_fmt=png

1

2

3

4

5

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'))

结果为:640?wx_fmt=png

1

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

结果为:640?wx_fmt=png

其他详细参数说明640?wx_fmt=png

重叠数据合并

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

1

2

3

4

5

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))

结果为:640?wx_fmt=png

数据重塑和轴向旋转

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

1

2

3

4

data=pd.DataFrame(np.arange(12).reshape(3,4),

              columns=['a','b','c','d'],

              index=['wang','li','zhang'])

print(data)

结果为:640?wx_fmt=png

1

print(data.unstack())

结果为:640?wx_fmt=png

数据转换

删除重复行数据

1

2

3

data=pd.DataFrame({'a':[1,3,3,4],

              'b':[1,3,3,5]})

print(data)

结果为:640?wx_fmt=png

1

print(data.duplicated())

结果为:640?wx_fmt=png

1

print(data.drop_duplicates())

结果为:640?wx_fmt=png

替换值

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

1

2

3

data=pd.DataFrame({'a':[1,3,3,4],

              'b':[1,3,3,5]})

print(data.replace(1,2))

结果为:640?wx_fmt=png

1

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

640?wx_fmt=png

数据分段

1

2

3

4

data=[11,15,18,20,25,26,27,24]

bins=[15,20,25]

print(data)

print(pd.cut(data,bins))

结果为:

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

1

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

结果为:

1

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

结果为:

1

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

结果为:640?wx_fmt=png

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

排列和采样

我们知道排序的方法有好几个,比如sort,order,rank等函数都能对数据进行排序

1

2

data=np.random.permutation(5)

print(data)

结果为:

1

2

3

df=pd.DataFrame(np.arange(12).reshape(4,3))

samp=np.random.permutation(3)

print(df)

结果为:640?wx_fmt=png

print(samp)

print(df.take(samp))640?wx_fmt=png

今天就到这里吧~

听说有气质的人都会关注这个公众号!

640?wx_fmt=jpeg

文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/tongtongjing1765/article/details/100581668

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。