这些祝福和干货比那几块钱的红包重要的多!

               

祝各位

家人身体健康。

老友都在,猪事顺利。

单身狗的祝暗恋的女神、男神每天都给你早晚安

已有狗的祝你和你的狗永远美滋滋,早生贵子!

赚钱、赚很多钱、无论是人民币还是美刀。

各种牛皮,开挂,就是走位贼6的那种。

扫描二维码关注公众号,回复: 13123767 查看本文章

前戏

在利用pandas做数据分析的时候,经常会利用mean,sum,median等统计量对数据做整体的初步分析,但简单的累计方法只可以对数据集有一个粗略的认识, 有时候经常还需要对某些标签或索引的局部进行累计分析, 这时就需要用到groupby 了。 

Groupby

通用步骤

  1. 分割(Splitting),将DataFrame按照指定的键分割成若干组。

  2. 应用(Apply),对每个组应用函数。

  3. 组合(Combining),将每一组的结果合并成一个输出数组。

说明:在许多情况下,将数据分割成多个集合,并对每个子集应用(Apply)一些功能。在apply功能中,我们可以执行以下操作:

  • Aggregate ,计算一些统计量。

  • Transform,执行一些特定于组的操作。

  • Filter,按一些条件过滤掉不要的数据。

  • Apply,在每组上应用任意方法。

图解Groupby

图片

注:图片来源于《Python数据科学手册》。

Python代码案例:(所有代码按顺序阅读)

1导入数据并简单查看统计量

图片 图片 图片

2查看数据groupby返回的对象

图片

爱德宝器带你划重点:

这里的返回值不是一DataFrame 对象, 而是一个 DataFrameGroupBy 对象,可以将它看成是一种特殊形式的 DataFrame, 里面隐藏着若干组数据, 但是在没有应用累计函数之前不会计算 。在大多数场景中, 你可以将它看成是 DataFrame 的集合 。

3查看分组对象,迭代分组并选择其中一组

3-1:查看分组对象

图片

3-2:迭代分组

图片

输出:

图片

3-3:选择其中某一组

图片

4对groupby之后的对象分别进行Aggregate 

Transform、Filter、Apply

4-1:对分组进行aggregate

图片

4-2:对分组进行Tranform

图片

宝器带你画重点:aggregate操作返回的是对组内全量数据缩减过的结果, 而转换操作会返回一个新的全量数据。 数据经过转换之后, 其形状与原来的输入数据是一样的。 常见的例子就是将每一组的样本数据减去各组的均值, 实现数据标准化。

4-3:对分组进行Filter

图片

4-4:对分组进行apply

图片

宝器带你画重点:GroupBy 里的 apply() 方法非常灵活, 唯一需要注意的地方是它总是输入分组数据的 DataFrame, 返回 Pandas 对象或标量

说明

  • GroupBy对象可以直接转换为字典和列表

  • 分组方式有很多种,可以按行、列、数据类型、字典、自定义函数等

数据透视表

数据透视表(pivot table) 是一种类似的操作方法 ,可以用来探索数据集内部的关联性的 ,数据透视表将每一列数据作为输入, 输出将数据不断细分成多个维度累计信息的二维数据表 。相比于GroupBy 操作,数据透视表更像是一种多维的 GroupBy 累计操作 。

Example:有一份泰坦尼克号获救数据,假如你想要同时观察不同性别船舱等级生还情况 。

1利用groupby实现:

图片

2利用数据透视表实现

图片

结论:利用数据透视表很容易看出不同性别,不同船票等级的生还情况。对比于groupby用法有以下优点:

    • 可读性越强

    • 更容易理解


参数详解

图片
  • data:Dataframe

  • values:待聚合的列的名称,默认是所有的数值列

  • index:用于分组的列名或其他分组键,出现在结果透视表的行

  • columns:用于分组的列名或其他分组键,出现在结果透视表的列

  • aggfunc:聚合函数或函数列表,默认为‘mean’。可以使任何对groupby有效的函数

  • fill_value:用于替换结果表中的缺失值

  • dropna:boolean,默认为True。删除缺失值

  • margins_name:string,默认为‘ALL’,当参数margins为True时,ALL行和列的名字

说明

  • 可以做多级数据透视表

  • 可以通过字典为不同的列指定不同的累计函数

  • 其他骚操作

参考:

  • https://www.ttorialspoint.com/python_pandas/python_pandas_groupby.htm

  • 《Python数据科学手册》

后记:三十晚上边看春晚,边写公号(大概吃饱了想消化一下)。愿爱德宝器今年可以写很多干货、资源(本节代码在群资料)。不行了,老头子开始在催了,不多比比。创作不易,喜欢的朋友点个好看安排一下。

     


猜你喜欢

转载自blog.51cto.com/15127516/2683029