美文网首页
Pandas中的一些操作_03(2019-1-19)

Pandas中的一些操作_03(2019-1-19)

作者: MMatx | 来源:发表于2019-01-20 21:44 被阅读0次

    1、通过apply进行数据预处理
    其最重要的参数是传入的函数,传入的函数会对DataFrame的每一行(index)或每一列(column)进行操作,然后返回每一个index或column对应的值,再将这些行(或者列)以及其对应的返回值重新组合成一个DataFrame的对象,然后作为整个apply方法的返回值返回。

    至于传入的函数具体是对每一行还是每一列进行操作,取决于apply传入的axis参数,默认axis=0,表示对每一列进行操作,axis=1,表示对每一行进行操作。因此apply方法最重要两个参数是传入的函数func和axis。
    applymap: 用于dataframe上,是元素级别的操作;

    map:(其实是python自带的)用于series上,是元素级别的操作。
    通过apply可以进行的数据预处理包括:
    (1)添加行列数据
    添加列数据,可以直接指定列数据和列名
    (2)修改某一行的数据大小写
    (3)去掉数据两边的空格
    (4)把原来的一个数据变成多个
    (5)给列重新命名
    (6)删除某一列
    (7)把数据保存成csv

    import pandas as pd
    import numpy as np
    from pandas import DataFrame,Series
    df = pd.read_csv('apply_demo.csv')
    #添加一列
    s1 = Series(['a']*28)
    df['A'] = s1
    #修改列元素
    df['A'] = df['A'].apply(str.upper)
    #把一列分成多列
    def foo(line):
       items = line.strip().split(' ')
       return Series([items[1],items[3],items[5]])
    dt_temp = df['data'].apply(foo)
    dt_temp=dt_temp.rename(columns={0:'Symbol',1:'Seqno',2:'Price'})
    df_new  = df.combine_first(dt_temp)
    #删除一列
    del df_new['data']
    #保存
    df_new.to_csv('demo_duolicate.csv')
    
    

    2、去重操作
    (1)查看元素是否唯一值unique()
    (2)查看每个元素出现的次数
    计数值value_counts()
    (3)判断与前后数据是否重复
    (4)删除重复数据,保留最前面的一个,保留最后一个

    import pandas as pd
    import numpy as np
    from pandas import DataFrame,Series
    df= pd.read_csv('demo_duplicate.csv')
    df.head()
    del df['Unnamed: 0']
    df['Seqno'].unique()
    df['Seqno'].duplicated() #判断是否和前面重复
    df['Seqno'].drop_duplicates(keep='first')
    df['Seqno'].duplicated(keep='last') #判断是否和hou面重复
    df['Seqno'].drop_duplicates(keep='last')
    
    

    3、时间序列操作
    (1)格式化时间
    (2)把时间当成索引
    (3)具体内容参考文档

    import pandas as pd
    import numpy as np
    from pandas import DataFrame,Series
    from datetime import datetime
    t1 = datetime(2009,10,20)
    date_list=[
       datetime(2016,9,1),
       datetime(2016,9,10),
       datetime(2017,9,1),
       datetime(2017,9,20),
       datetime(2017,10,1)
    ]
    s1 = Series(np.random.rand(5),index=date_list)
    s1['2016-09-10']
    s1['20160910']
    s1['2016-9']
    s1['2016']
    # pd内部提供函数
    pd.date_range(start='2016-01-01',periods=100)
    pd.date_range(start='2016-01-01',periods=100,freq='W')
    pd.date_range(start='2016-01-01',periods=100,freq='W-MON')
    pd.date_range(start='2016-01-01',periods=100,freq='H')
    
    
    

    相关文章

      网友评论

          本文标题:Pandas中的一些操作_03(2019-1-19)

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