python--学习笔记8 数据规整化,清理、转换、合并、重塑

合并数据集

pandas.merge可根据一个或多个键将不同的DataFrame中的行连接起来。

pandas.concat可以沿着一条轴将多个对象堆叠到一起。

combine_first可以将重复数据编接在一起,用一个对象中的值去填充另一个对象中的缺失值,有点像数据库中的全外连接。

 

数据集的合并(merge)或连接(join)运算时通过一个或多个键将行链接起来的。这些运算是关系型数据库的核心。

1 import pandas as pd
2 from pandas import DataFrame
3 
4 df1 = DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)})
5 df2 = DataFrame({'key':['a','b','d'],'data2':range(3)})
6 pd.merge(df1,df2 ,on ='key')

如果两个对象的列名不同,也可以通过 left_on,right_on来分别指定。

默认merge做的是Inner连接,也可以用 how='outer'取外连接,左外 'left' 右外 ' right '等。


 

轴向连接

连接 concatenation,绑定 binding 或者堆叠 stacking。Numpy有一个用于合并原始Numpy数组的concatenation函数。
对Series调用concat可以将值和索引粘合在一起,默认情况下,concat是在axis=0上工作,产生一个新的Series。如果传入的axis=1,则结果会变成一个DataFrame。


 

合并重叠数据

我们使用Numpy的where函数,它用于表达一种矢量化的if-else。满足条件是输出b,不满足输出a。

1 a = Series([np.nan,2.5,np.nan,3.5,3.5,np.nan],index=['f','e','d','c','b','a'])
2 b = Series(np.range(len(a),dtype=np.float64),index=['f','e','d','c','b','a'])
3 b[-1]=np.nan
4 np.where(pd.isnull(a),b,a)
View Code

 Series 有一个combine_first方法,也是实现的一样的功能。对于DataFrame, combine_first也会在列上做同样的效果。


数据转换

移除重复数据

DataFrame中常常出现重复行。duplicated方法返回一个布尔型的Series,表示各行是否是重复行。drop_duplicated方法,用于返回一个移除了重复行的DataFrame。这两个方法会默认判断全部列,你也可以指定部分列进行重复项判断。

 


 

字符串对象

内置字符串方法,split

val = 'a,b,  guido'
val.split(',')

输出:['a','b','  guido']

split 常常结合strip(修建空白符以及换行符)一起使用。

pieces = [x.strip() for x in val.split(',')]

 用join方法传入一个列表

 '::'.join(pieces)

输出:'a::b::guido'

 

posted on 2019-01-23 09:01  椰汁黑糯米  阅读(242)  评论(0编辑  收藏  举报

导航