PYTHON数据分析之分组计算

来源:互联网 发布:电信提速软件 编辑:程序博客网 时间:2024/06/05 14:19

分组计算

#导入pandas包import pandas as pd#打开csv文件df = pd.read_csv("E:\\Pokemon.csv")#一类分组g1 = df.groupby(["Type 1"])#分组后,显示每组的第一条数据g1.first()#分组后,每个组有多少条数据g1.size()#分组后对每组进行描述性统计g1.describe()#分组后,每组对应哪些样本g1.groups()#分组后,选取某个分组的所以数据g1.get_group("ROCK")

#循环输出所有组名及对应大小for name,group in g1: print(name) print(group.shape) print("------------")

#两列分组g2 = df.groupby(["Type 1","Type 2"])#查看两列分组大小g2.size()#查看某列数据g2["HP"]#查看某列数据平均值g2["HP"].mean()#或者g2.mean()["HP"]

groupby的三个主要函数

aggregate函数
#aggregate函数#求所有列的总和g1.agg(np.sum)#每一列求不同的值g1.agg({"HP":np.sum,"Attack":np.mean,"Defense":np.std})#重新命名每列名称使更直观g1.agg({"HP":np.sum,"Attack":np.mean,"Defense":np.std}).rename(columns = {"HP":"HP_sum","Attack":"Attack_mean","Defense":"Defense_std"})#导入numpy包import numpy as np#求所有列值的总和g1.agg(np.sum)#每一列求不同的值g1.agg({"HP":np.sum,"Attack":np.mean,"Defense":np.std})#重新命名每列名称使更直观g1.agg({"HP":np.sum,"Attack":np.mean,"Defense":np.std}).rename(columns = {"HP":"HP_sum","Attack":"Attack_mean","Defense":"Defense_std"})

transform函数
#transform函数 转换函数 返回新的数据集 不会对原有数据集改变 #数据集标准化f = lambda x : (x-x.mean()) / x.std()#数据集转换g1.transform(f)

filter函数
#filter函数 选择筛选函数#选择多于80条记录的组df1 = g1.filter(lambda x : len(x)>=80)#选择HP平均值大于等于60的组df2 = g1.filter(lambda x : np.mean(x["HP"])>=60#新的数据集进行分组g3 = df1.groupby(["Type 1"])#查看新的数据集分组的大小g3.size()#检查HP数据是否都是大于等于60的组g3["HP"].mean()