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=\n',df1.sum())
#打印出df1的最大值,求出df1各列的最大值
print('df1.max()=\n',df1.max())
求出水平方向各列的最大值
print('水平方向的最大值=\n',df1.max(axis=1))

#求出水平方向各行的和
print('水平方向各行的和',df1.sum(axis=1))
print('各个值的描述为:\n',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('索引的类型:\n',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索引对应的记录

 

  

posted @ 2019-01-05 15:48  stone1234567890  阅读(269)  评论(0编辑  收藏  举报