近期大家用pandas做了有个别主导的操作,接下去进一步询问多少的操作

前边大家用pandas做了有些基本的操作,接下去进一步理解多少的操作,
数据清洗一贯是数量解析中极为首要的二个环节。

python 数据清洗之数据统壹 、转换、过滤、排序,python排序

最近大家用pandas做了有的为主的操作,接下去进一步询问多少的操作,
数据清洗一贯是数额解析中极为首要的一个环节。

多少统一

在pandas中能够通过merge对数据开始展览合并操作。

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)

结果为:

图片 1

print(data2) 

结果为:

图片 2

print(pd.merge(data1,data2)) 

结果为:

图片 3

能够看来data1和data第22中学用来同一标签的字段呈现,而此外字段则被放任,这一定于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'))

结果为:

图片 4

多少个数据框中假如列名分化的情状下,我们得以因而点名letf_on
和right_on五个参数把数据连接在一块儿

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

结果为:

图片 5

其它详细参数表明

图片 6

臃肿数据统一

有时我们会蒙受重叠数据须求进行统一处理,此时能够用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))

结果为:

图片 7

能够见到同样标签下的始末优先显示data3的内容,假设二个数据框中的某贰个多少是缺点和失误的,此时其余1个数据框中的成分就会补上

此地的用法类似于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)

结果为:

图片 8

print(data.unstack()) 

结果为:

图片 9

多少转换

删去重复行数据

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

结果为:

图片 10

print(data.duplicated()) 

结果为:

图片 11

能够观望第③行是重新第叁行的数目所以,显示结果为True

另外用drop_duplicates方法能够去除重复行

print(data.drop_duplicates()) 

结果为:
图片 12

替换值

除了接纳大家上一篇小说中涉嫌的fillna的主意外,还是能用replace方法,而且更简约快速

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

结果为:

图片 13

四个数据一起换

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

图片 14

数据分段

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

结果为:
[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] < (20, 25]]

能够看出分段后的结果,不在分段内的数额展现为na值,其余则显得数据所在的分支。

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

结果为:

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

来得所在分层排序标签

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

结果为:

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

呈现所以分段标签

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

结果为:

图片 15

浮现每一种分段值得个数

除此以外还有1个qcut的函数能够对数码开始展览陆分位切割,用法和cut类似。

排列和采集样品

咱俩掌握排序的艺术有少数个,比如sort,order,rank等函数都能对数据开始展览排序
明日要说的那么些是对数码开始展览自由排序(permutation)

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

结果为:

[1 0 4 2 3]

此地的peemutation函数对0-4的数量举办自由排序的结果。
也能够对数据开始展览采集样品

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

结果为:

图片 16

print(samp)

结果为:
[1 0 2]

print(df.take(samp))

结果为:

图片 17

此间运用take的结果是,遵照samp的顺序从df中领到样本。

http://www.bkjia.com/Pythonjc/1192851.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1192851.htmlTechArticlepython
数据清洗之数据统壹 、转换、过滤、排序,python排序
前面大家用pandas做了有的大旨的操作,接下去进一步了然多少的操作,
数据清洗…

数码统一

在pandas中得以由此merge对数码实行联合操作。

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)

结果为:
图片 18

print(data2)

结果为:
图片 19

print(pd.merge(data1,data2))

结果为:
图片 20
能够见见data1和data第22中学用于同一标签的字段展现,而其他字段则被放任,这一定于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'))

结果为:
图片 21
多少个数据框中假如列名分歧的景观下,大家得以经过点名letf_on
和right_on七个参数把多少连接在协同

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

结果为:
图片 22

其余详细参数表明
图片 23

臃肿数据统一

突发性我们会赶上海重机厂叠数据供给进行合并处理,此时得以用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))

结果为:
图片 24
能够看来同一标签下的始末优先突显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)

结果为:
图片 25

print(data.unstack())

结果为:
图片 26

数量转换

除去重复行数据

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

结果为:
图片 27

print(data.duplicated())

结果为:
图片 28
可以看来第叁行是再度第贰行的多寡所以,突显结果为True
另外用drop_duplicates方法可以去除重复行

print(data.drop_duplicates())

结果为:
图片 29

替换值

除了那几个之外运用大家上一篇作品中涉及的fillna的不二法门外,还能用replace方法,而且更简便易行便捷

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

结果为:
图片 30
五个数据一起换

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

图片 31

数码分段

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

结果为:
[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] < (20, 25]]

能够见见分段后的结果,不在分段内的数测量身体现为na值,其余则呈现数据所在的分段。

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

结果为:
[-1 -1 0 0 1 -1 -1 1]
展示所在分层排序标签

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

结果为:
Index([‘(15, 20]’, ‘(20, 25]’], dtype=’object’)
来得所以分段标签

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

结果为:
图片 32
展现种种分段值得个数

除此以外还有3个qcut的函数能够对数码实行五分位切割,用法和cut类似。

排列和采集样品

大家理解排序的办法有几许个,比如sort,order,rank等函数都能对数据进行排序
近年来要说的那么些是对数据开始展览任意排序(permutation)

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

结果为:
[1 0 4 2 3]
此地的peemutation函数对0-4的多寡开始展览任意排序的结果。
也足以对数码举行采集样品

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

结果为:
图片 33

print(samp)
结果为:
[1 0 2]

print(df.take(samp))
结果为:
图片 34
此处运用take的结果是,依照samp的顺序从df中提取样本。