美文网首页
pandas 数据分组聚合过滤操作案例

pandas 数据分组聚合过滤操作案例

作者: 克里斯托弗的梦想 | 来源:发表于2018-12-05 00:05 被阅读0次

    最近在预处理数据,发现pandas的功能知道的一知半解,很多都没用怎么熟悉,因此专门针对pandas进行补习,这次专门补习pandas的数据分组,聚合、过滤等操作。

    先放一个DataFrame测试数据,根据这个测试数据去操作

    # 先放一个DataFrame数据格式,以后以这个去操作
    import pandas as pd
    
    ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
             'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
             'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
             'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
             'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
    df = pd.DataFrame(ipl_data)
    print(df)
    

    分组

    # 以列名Team去分组
    df.groupby('Team')
    # 查看分组情况
    print(f.groupby('Team').groups)
    # 按照多列分组
    df.groupby(['Team', 'Year'])
    # 查看分组情况
    print(df.groupby(['Team', 'Year']).groups)
    # 遍历分组
    grouped = df.groupby('Year')
    
    for name,group in grouped:
        print (name)
        print (group)
    
    # 选择某一个分组
    temp = grouped.get_group(2014)
    
    

    聚合

    # 以Team列分组
    grouped = df.groupby('Team')
    # 聚合后求每组后的大小
    print(grouped.agg(np.size))   
    # 针对分组后的列Points,聚合应用聚类函数,一次应用,多个聚合函数
    agg = grouped['Points'].agg([np.sum, np.mean, np.std])
    
    

    转换

    # 分组或列上的转换返回索引大小与被分组的索引相同的对象。因此,转换应该返回与组块大小相同的结果。
    grouped = df.groupby('Team')
    score = lambda x: (x - x.mean()) / x.std()*10
    print (grouped.transform(score))
    

    过滤

    filter = df.groupby('Team').filter(lambda x: len(x) >= 3)
    

    相关文章

      网友评论

          本文标题:pandas 数据分组聚合过滤操作案例

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