美文网首页Python可以做的那些事!码农的世界程序员
利用Python进行数据分析(十)之数据规整化

利用Python进行数据分析(十)之数据规整化

作者: BrainZou | 来源:发表于2018-01-14 22:42 被阅读40次

    数据规整化

    直接取得的数据大部分是不能直接使用的,所以需要经过清理转换等等,这一步就是数据规整化。

    合并数据集

    pandas.merge根据一个或多个键连接不同的DataFrame。(类似数据库连接的内连接外连接左右连接等)
    pandas.concat沿着一条轴把多个对象堆叠起来。
    combine_first用一个对象的值填充到另一个对象的缺失值。(补充到这个对象上)

    pandas.merge合并

    pd.merge(df1,df2,on='key'):按照key这列连接(df1,df2都有key列)。
    pd.merge(df1,df2,left_on='lkey',right_on='rkey'):按照左边的lkey和右边的rkey进行连接。
    默认进行的是内连接,即得到交集,左右key值单独有的都去掉了。

    需要修改时使用参数how,如:how='outer',how='left',how='right默认是how='inner'。
    根据多个键合并:on=['key1','key2'](类似把将key1和key2两个键组合在一起,当成单个连接键)
    重复列名的处理:比如两个列名相同,用了其中一个(key1)作为on连接,那么另外那列(key2)肯定就不能用相同的名字。可以使用参数suffixes=('_left','_right')就会在新生成的列key2_left和key2_right。

    索引上的合并

    有时候用的并不是列来合并,有时候使用的是索引。那么就要用到left_index=True或right_index=True(或者两个都传)说明索引被用来连接。写法如:pd.merge(left1,right1,left_on='key',right_index=True)

    当然除了上面说的这种,还可以使用DataFrame的join方法。left2.join(right2,how='outer')不同的是,它默认的是左连接。
    也能实现DataFrame的列与索引的连接:`left1.join(right1,on='key')实现left1的key列和right1的索引连接。

    轴向连接

    复杂的轴向上连接使用concat函数,相关参数如下:

    参数 说明
    objs 参与连接的pandas对象的列表或字典。唯一必须的参数
    axis 指明连接的轴向,默认为0
    join "inner" , "outer“其中之一默认为“outer二指明其他轴向上的索引是按交集(inner)还是并集(outer)进行合并
    join_axes 指明用于其他n-t条轴的索引.不执行并集/文集运算
    keys 与连接对象有关的值,用于形成连接轴向上的层次化索引。可以是任意值的列表或数组、元组数组、数组列表(如果将levels设置成多级数组的话)
    levels 指定用作层次化索引各级别上的索引,如果设里了keys的话
    names 用于创建分层级别的名称.如果设置了keys和(或)levels的话
    verify_integrity 检查结果对象新轴上的重复情况.如果发现则引发异常。默认 (False)允许重复
    ignore_index 不保留连接轴上的索引,产生一组新索引range(total_length)

    合并重叠数据

    什么意思呢?先看下NumPy中的where函数np.where(pd.isnull(a),b,a),你肯定已经能从字面上理解这个的含义了,就是对a判断如果为null则取b的数据,否则的话取a。
    而pandas中对于DataFrame和Series有combine_first方法df1.combine_first(df2):对于df1中缺失值用df2补充。应该很好理解吧~

    总结

    本章主要讲的是数据规整化中的数据的合并连接!后面再接着学习其他的一些操作。

    相关文章

      网友评论

        本文标题:利用Python进行数据分析(十)之数据规整化

        本文链接:https://www.haomeiwen.com/subject/jyekoxtx.html