2. 用多个列和函数进行分组和聚合

  1. # 导入数据
  2. In[9]: flights = pd.read_csv('data/flights.csv')
  3. flights.head()
  4. Out[9]:

2. 用多个列和函数进行分组和聚合 - 图1

  1. # 每家航空公司每周平均每天取消的航班数
  2. In[10]: flights.groupby(['AIRLINE', 'WEEKDAY'])['CANCELLED'].agg('sum').head(7)
  3. Out[10]: AIRLINE WEEKDAY
  4. AA 1 41
  5. 2 9
  6. 3 16
  7. 4 20
  8. 5 18
  9. 6 21
  10. 7 29
  11. Name: CANCELLED, dtype: int64
  1. # 分组可以是多组,选取可以是多组,聚合函数也可以是多个
  2. # 每周每家航空公司取消或改变航线的航班总数和比例
  3. In[11]: flights.groupby(['AIRLINE', 'WEEKDAY'])['CANCELLED', 'DIVERTED'].agg(['sum', 'mean']).head(7)
  4. Out[11]:

2. 用多个列和函数进行分组和聚合 - 图2

  1. # 用列表和嵌套字典对多列分组和聚合
  2. # 对于每条航线,找到总航班数,取消的数量和比例,飞行时间的平均时间和方差
  3. In[12]: group_cols = ['ORG_AIR', 'DEST_AIR']
  4. agg_dict = {'CANCELLED':['sum', 'mean', 'size'],
  5. 'AIR_TIME':['mean', 'var']}
  6. flights.groupby(group_cols).agg(agg_dict).head()
  7. # flights.groupby(['ORG_AIR', 'DEST_AIR']).agg({'CANCELLED': ['sum', 'mean', 'size'],
  8. # 'AIR_TIME':['mean', 'var']}).head()
  9. Out[12]:

2. 用多个列和函数进行分组和聚合 - 图3