首页 > 其他 > 详细

机器学习pandas之分组计算笔记

时间:2019-08-28 10:29:15      阅读:127      评论:0      收藏:0      [点我收藏+]

分组计算三部曲:拆分-->应用-->合并

分组:就是按照行或列把相同索引的部分分到一起

分组的关键词为groupby,分组后我们就可以对每组数据进行同一操作,返回的是每组数据分别计算后的结果

 1 import pandas as pd
 2 import numpy as np
 3 
 4 # 先创建一个DataFrame
 5 df = pd.DataFrame({
 6     key1:[a,a,b,b,a],
 7     key2:[one,two,one,two,one],
 8     data1:np.random.randint(1,10,5),
 9     data2:np.random.randint(1,10,5)
10 })
11 
12 df[data1].groupby(df[key1]).mean()
13 # 对data1列采用key1列分组并求平均值,所谓分组,就是把相同的行或列分到一起
14 # 然后就可以分别对这些分好的组进行一系列操作
15 
16 key = [1,2,1,1,2]  # 也可以给出任意索引键,自定义分组
17 df[data1].groupby(key).mean()  # 这时就会把相同索引的值分到一起
18 
19 df[data1].groupby([df[key1],df[key2]]).size()
20 mean = df.groupby([key1,key2]).sum()[data1]
21 # 也可进行再分组,可以先把key1先分组,在此基础上再以key2索引进行分组
22 # 输出的mean
23     key1  key2
24     a       one     11
25              two      4
26     b       one      1
27              two      9
28     Name: data1, dtype: int32
29 
30 mean.unstack()  # 这个方式可以转换为DataFrame
31 
32 
33 # 通过分组key1,将其创键为字典,可以很清晰看出分组的实际意义
34 dict(list(df.groupby(key1)))
35 # 输出
36 {a:   key1 key2  data1  data2
37  0    a  one      5      7
38  1    a  two      4      4
39  4    a  one      6      2, b:   key1 key2  data1  data2
40  2    b  one      1      3
41  3    b  two      9      8}
42 
43 # 以上是进行行分组,也可以进行列分组
44 df.groupby(df.dtypes, axis=1).sum()  # axis=1表示按列分组
45 
46 df.dtypes  # 区分的是每列的数据类型
47 # 它的输出结果
48 key1     object
49 key2     object
50 data1     int32
51 data2     int32
52 dtype: object

 

机器学习pandas之分组计算笔记

原文:https://www.cnblogs.com/yang901112/p/11422448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!