zoukankan      html  css  js  c++  java
  • pandas之分组计算笔记

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

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

    分组的关键词为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
  • 相关阅读:
    构建自己的PHP框架--定义ORM的接口
    装X神器--Hacker Typer
    inno setup读取注册表遇到的一个坑
    一个简单的inno setup模板
    Android Studio导入项目非常慢的解决办法
    Android Studio快捷键每日一练(6)
    Android Studio快捷键每日一练(5)
    Android Studio快捷键每日一练(4)
    Android中的FragmentManager的问题
    Android Studio快捷键每日一练(3)
  • 原文地址:https://www.cnblogs.com/yang901112/p/11422448.html
Copyright © 2011-2022 走看看