美文网首页python从零开始学R. python新手日记Python
Python数据处理从零开始----第三章(pandas)④数据

Python数据处理从零开始----第三章(pandas)④数据

作者: 柳叶刀与小鼠标 | 来源:发表于2018-11-29 01:57 被阅读59次

    目录

    第三章(pandas)

    Python数据处理从零开始----第三章(pandas)①删除列
    Python数据处理从零开始----第三章(pandas)②处理缺失数据
    Python数据处理从零开始----第三章(pandas)③数据标准化(1)
    Python数据处理从零开始----第三章(pandas)④数据合并和处理重复值

    ===============================================

    数据合并

    在数据处理中,通常将原始数据分开几个部分进行处理而得到相似结构的Series或DataFrame对象,我们该如何进行纵向合并它们?这时我们可以选择用pd.concat()方式极易连接两个或两个以上的Series或DataFrame对象。如下是该函数的参数解读:

    pd.concat(objs, axis=0, join=’outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)

    参数说明:
    • objs:连接对象,多以列表、字典传入
    • axis:轴向,0代表纵向连接,1,代表横向连接
    • join:连接方式,共有’inner’,’left’,right’,’outer’
    • join_axes:参与连接的索引
    • ignore_index:是否忽略索引
    • keys:层次化索引
    横向连接
    import pandas as pd
    
    s1=pd.Series([1,2,3],index=list('abc'))
    s2=pd.Series([3,4,5],index=list('bde'))
    
    pd.concat([s1,s2])
    Out[6]: 
    a    1
    b    2
    c    3
    b    3
    d    4
    e    5
    dtype: int64
    
    纵向连接
    pd.concat([s1,s2],axis=1)
    __main__:1: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version
    of pandas will change to not sort by default.
    
    To accept the future behavior, pass 'sort=False'.
    
    To retain the current behavior and silence the warning, pass 'sort=True'.
    
    Out[7]: 
         0    1
    a  1.0  NaN
    b  2.0  3.0
    c  3.0  NaN
    d  NaN  4.0
    e  NaN  5.0
    

    内连接

    pd.concat([s1,s2],axis=1,join='inner')
    Out[8]: 
       0  1
    b  2  3
    
    import pandas as pd
    from pandas import Series,DataFrame
    dict1={
        'key':['a','b','c'],
        'col1':range(3)
    }
    df1 = DataFrame(dict1)
    df1
    Out[18]: 
      key  col1
    0   a     0
    1   b     1
    2   c     2
    dict2={
        'key':['b','c','d'],
        'col2':range(1,4)
    }
    df2 =DataFrame(dict2)      
    df2
    Out[19]: 
      key  col2
    0   b     1
    1   c     2
    2   d     3
    dat = pd.merge(df1,df2)
    dat
    Out[14]: 
      key  col1  col2
    0   b     1     1
    1   c     2     2
    

    pandas默认寻找共同的column,然后合并共同的观测值,但是可以根据,on='',和how=''来控制连接的键和合并的方式。

    移除重复数据

    • 首先创建一个数据框
    # -*- coding: utf-8 -*-
    """
    Created on Thu Nov 29 01:33:46 2018
    
    @author: czh
    """
    %clear
    %reset -f
    # In[*]
    import seaborn as sns
    import matplotlib.pyplot as plt
    %matplotlib inline
    import os
    import numpy as np
    import pandas as pd
    # In[*]
    data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                           'k2': [1, 1, 2, 3, 3, 4, 4]})
    data
    
    
    data.duplicated()
    0    False
    1    False
    2    False
    3    False
    4    False
    5    False
    6     True
    dtype: bool
    

    通过以上我们发现最后一行(第七行)存在一个完全重复的行,一般情况下,我们需要删除掉这行,主要通过drop_duplicates()函数,该函数返回的结果是一个数据框。

    
    data.drop_duplicates()
    Out[9]: 
        k1  k2
    0  one   1
    1  two   1
    2  one   2
    3  two   3
    4  one   3
    5  two   4
    

    这两个方法默认会判断全部列,你也可以指定部分列进行重复项判断(一般情况下,我们希望去掉某一列重复的观测值),假设我们还有一列值,且只希望根据k1列过滤重复项:

    data['v1'] = range(7)
    data
    data.drop_duplicates(['k1'])
    Out[10]: 
        k1  k2  v1
    0  one   1   0
    1  two   1   1
    

    相关文章

      网友评论

        本文标题:Python数据处理从零开始----第三章(pandas)④数据

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