zoukankan      html  css  js  c++  java
  • python数据结构:pandas(3)

     一、pandas数据操作:

      1.处理缺失数据

        (1)判断是否存在缺失值

          ser_obj.isnull(),df_obj.isnull()

        (2)dropna:丢弃缺失数据

        (3)fillna:填充缺失值

      2.常用的统计计算

    import numpy as np
    import pandas as pd
    df1 =pd.DataFrame(np.random.randn(5,4),columns=['a','b','c','d'])
    print(df1)

        (1)sum,mean,max,min.......

        (2)axis=0按照列统计,axis=0按照行进行统计

    #求和,求出各列的最大值,默认是axis=的方向
    print('df1.sum=
    ',df1.sum())
    #打印出df1的最大值,求出df1各列的最大值
    print('df1.max()=
    ',df1.max())
    求出水平方向各列的最大值
    print('水平方向的最大值= ',df1.max(axis=1))

    #求出水平方向各行的和
    print('水平方向各行的和',df1.sum(axis=1))
    print('各个值的描述为: ',df1.describe())

        (3)skipna排除缺失值,默认为True

        (4)idmax,idmin,cumsum

        (5)describe()描述多个数据

    二、pandas层级索引

      1.层级索引

        (1)MultiIndex对象

    import numpy as np
    import pandas as pd
    
    #对于多层索引的数据结构,先写外层索引,再写内层索引
    ser_obj = pd.Series(np.random.randn(12),index=[['a','a','a','b','b','b','c','c','c','d','d','d'],
                                                   [0,1,2,0,1,2,0,1,2,0,1,2]
                                                   ])
    print(ser_obj)


    a 0 -0.238233
    1 1.833810
    2 0.440786
    b 0 -0.061261
    1 1.429524
    2 0.472883
    c 0 -0.509399
    1 1.463129

     

        (2)选取子集

          外层选取   ser_obj['outer_label']

          内层选取  ser_obj[:,'inner_label']

    #索引
    print('索引为',ser_obj.index)
    print('索引的类型:
    ',type(ser_obj))

    索引为 MultiIndex(levels=[['a', 'b', 'c', 'd'], [0, 1, 2]],
    labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
    索引的类型:
    <class 'pandas.core.series.Series'>

    #外层的选取,选取c这一层
    print(ser_obj['c'])

    #内层的选取
    print(ser_obj[:,2])

        (3)常用于分组操作透视表生成等

        (4)交换分层次序

           swaplevel

    #交换层级索引的顺序,将0,1,2作为外层索引,将a,b,c,d作为内层索引
    print(ser_obj.swaplevel())

    0 a -0.692477
    1 a 1.646162
    2 a -1.065838
    0 b -0.427297
    1 b 3.000122
    2 b -0.247474
    0 c -0.601376
    1 c -0.109477
    2 c -0.607528
    0 d 0.776865
    1 d 0.886385
    2 d -0.837686

    #交换层级索引并排序分层
    print(ser_obj.swaplevel().sortlevel())



        (5)排序分层:sortlevel()   

    #交换层级索引并排序分层
    print(ser_obj.swaplevel().sortlevel())

    三、Pandas分组与聚合

      1.分组(groupby)

        (1)对数据集进行分组,然后对每组数据进行统计分析

        (2)SQL能够对数据进行过滤,分组聚合

        (3)pandas能够利用groupby进行更加复杂的分组运算

        (4)分组运算的过程

          split->apply->combine

          拆分:进行分组的根据

          应用:每个分组的计算规则

          合并:把每个分组的计算结果合并起来

       2.聚合(aggregation)

        (1)数组产生标量的过程,如mean(),count()等

        (2)常用于对分组后的数据进行计算

        (3)内置的聚合函数

          sum(),mean(),max(),min(),count(),size(),describe()

        (4)可以自定义函数,传入agg方法中

          grouped.agg(func)

        (5)func的参数为groupby索引对应的记录

      

  • 相关阅读:
    Sublime Text 2快捷键大全
    JavaSE
    Ubuntu16.04 install ideaIC-2017.2.5.tar.gz
    Ubuntu/CentOS hadoop-2.x Cluster Setup
    Ubuntu16.04 install hadoop-2.8.1.tar.gz Cluster Setup
    12file
    11input/output
    10function
    09FlowControl
    08test
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10224786.html
Copyright © 2011-2022 走看看