小白的Pyhon数据分析之路12——数据分组
2019-06-02 16:59
573 查看
我么知道在SQL中有分组的功能,pandas也有。
groupby
在这里,会用到一个小费数据集。它集成在seaborn中。
我们先来导入相关的模块。
import numpy as np import pandas as pd from pandas import Series, DataFrame %matplotlib inline import seaborn as sns
运用小费数据集。
tips = sns.load_dataset('tips') tips.head()
head()是只显示前面五条数据。
从上图可以得知,有多项数据,分别是:
列名 | 内容 |
---|---|
total_bill | 订单总额 |
tip | 小费金额 |
sex | 顾客性别 |
smoker | 是否吸烟 |
day | 日期 |
time | 午餐\晚餐 |
size | 就餐人数 |
把tip按照sex分组,grouped是groupby对象。
下面按照day和time分组,求tip的平均数。
data_mean = tips['tip'].groupby([tips['day'], tips['time']]).mean()
把它显示在横向柱状图中。
另外,groupby对象是可以迭代的。
size()方法可以返回各分组的大小。
按列名分组
下面按照列名smoker分组。
这样,还会返回其他组的数据。如果只需要某一列数据,可以使用如下方法。
但是,这样就会显得代码很臃肿,我们可以用一些简化的方法来编写代码。
有了特定的列的数据,就可以简单的绘图了。
按列表或元组分组
新建一个DataFrame对象和一个用于分组的列表。
df = DataFrame(np.arange(16).reshape(4,4)) _list = ['a' ,'b', 'a', 'b']
其实,就是把第一三行和第二四行整合起来了。
按字典分组
同样,新建一个DataFrame对象和一个用于分组的字典。
df = DataFrame(np.random.normal(size=(6,6)), index=['a' ,'b', 'c', 'A', 'B', 'C']) _dict = { 'a': 'one', 'A': 'one', 'b': 'two', 'B': 'two', 'c': 'three', 'C': 'three', }
下面就进行分组了。其实就是按照字典的键整合到同一个值中了。
按函数分组
新建一个DataFrame对象和一个用于分组的函数。
df = DataFrame(np.random.randn(4,4))
函数的详细代码是:
def f(x): if x > 0: return 'a' else: return 'b'
下面利用map()函数进行分组。
对付层次化索引,我们也有办法。新建的DataFrame对象如下图所示:
下面,我一步到位。设置了level参数表示层次;设置了axis参数表示在列上进行分组;在汇总之后还进行了绘图。
相关文章推荐
- 小白的Pyhon数据分析之路13——数据聚合运算
- 小白的Pyhon数据分析之路15——数据透视表
- 数学之路(2)-数据分析-R基础(12)
- 产品经理如何开始数据分析之路?(基础知识)
- 胖子哥的大数据之路(12)-三张图告诉你大数据安全方案设计
- 小白学数据分析----->数据指标 累计用户数的使用
- 小白学数据分析----->回归分析在游戏人气分析的应用探索
- 小白学数据分析----->解析在线平高比
- 小白学数据分析----->留存率与运营活动分析_I
- 数学之路-数据分析进阶-多变量数据分析(2)
- 数学之路(3)-数据分析(5)
- 小白学数据分析----->付费渗透率再研究
- 数学之路-数据分析进阶-Cox比例风险回归模型
- 数据分析学习之路——(九)给留言数据贴情感标签,其实很简单
- 数据分析学习之路——(七)用数据分析教你如何买基金(2)
- 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程
- 小白学数据分析----->数据指标 累计用户数的使用
- 小白学数据分析------>描述性统计术语汇总
- 数学之路(2)-数据分析-R基础(22)
- 小白学数据分析-----> 13个要重点关注的数据指标[社交游戏,翻译自国外blog] part_1