python numpy和pandas的聚合分组数据处理及分析

import numpy as np
import pandas as pd
'''
聚合函数:
count  分组中非NA值的数量
sum    非NA值的和
mean 非NA值的平均数
median 非NA值的算术中位数
std、var无偏(分母为n-1)标准差和方差
min、max 非NA值的最小值和最大值
prod 非NA值的积
first、last 第一个和最后一个非NA值
'''
data=pd.DataFrame({'level':['a','b','c','b','a'],
               'num':[3,5,6,8,9]})
combine=data['num'].groupby(data['level'])
print(combine.sum())
#分组求平均值
print('分组求平均值:',combine.mean())
#返回每个分组的频率
print('返回每个分组的频率:',combine.size())
#根据数据的所属类型对进行分组
combine_1=data.groupby(data.dtypes,axis=1)
print('数据的所属类型对进行分组:',dict(list(combine_1)))#这里combine_1的是Serise数据结构,需要转换线转换为列表,再转成字典的形式才能打印
#数据聚合
new_data=data.groupby('level')
print('数据聚合求平均值',new_data.agg('mean'))
#支持多个聚合函数一起使用
data_2=pd.DataFrame({'level':['a','b','c','b','a'],
               'num':[3,5,6,8,9],
               'num1':[2,5,9,6,8]})
new_data_2=data_2.groupby('level')
print('多聚合函数混合使用:',new_data_2.agg({'num':'mean','num1':'sum'}))
#transform的使用
np_data=np.random.rand(5,5)
print("transform的使用:",np_data)
'''
np.random.randn(d0,d1,d2……dn) 
1)当函数括号内没有参数时,则返回一个浮点数; 
2)当函数括号内有一个参数时,则返回秩为1的数组,不能表示向量和矩阵; 
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵; 
4)np.random.standard_normal()函数与np.random.randn()类似,但是np.random.standard_normal()
的输入参数为元组(tuple). 
5)np.random.randn()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。
'''
#实现数据透视的功能
data_3=pd.DataFrame({'level':['a','b','c','b','a'],
               'key':['one','two','one','two','one'],
               'num':[3,5,6,8,9],
               'num1':[2,5,9,6,8]})
print(data_3)
#以key为索引默认求平均值,columns行转列
print(data_3.pivot_table(index='key',columns='level'))
#计算分组频率,即统计相同的行,相同的列存在的个数
print(pd.crosstab(data_3.key,data_3.level,margins=True))

猜你喜欢

转载自blog.csdn.net/qq_24726509/article/details/83108989