1. 程式人生 > >Pandas GroupBy物件 索引與迭代

Pandas GroupBy物件 索引與迭代

import pandas as pd
df = pd.DataFrame({'性別' : ['男', '女', '男', '女',
                              '男', '女', '男', '男'],
                       '成績' : ['優秀', '優秀', '及格', '差',
                              '及格', '及格', '優秀', '差'],
                       '年齡' : [15,14,15,12,13,14,15,16]})
GroupBy=df.groupby("性別"
)
  1. GroupBy.iter()
    GroupBy物件是一個迭代物件,每次迭代結果是一個元組,元組的第一個元素是該組的名稱(就是groupby的列的元素名稱),第二個元素是該組的具體資訊,是一個數據框,索引是以前的資料框的總索引
for name,group in GroupBy:
    print(name)
    print(group)
女
   年齡 性別  成績
1  14  女  優秀
3  12  女   差
5  14  女  及格
男
   年齡 性別  成績
0  15  男  優秀
2  15  男  及格
4  13  男  及格
6  15  男  優秀
7
16 男 差
  1. GroupBy.groups
    顯示分組的組名,以及所對應的索引
print(GroupBy.groups)
{'女': Int64Index([1, 3, 5], dtype='int64'), '男': Int64Index([0, 2, 4, 6, 7], dtype='int64')}
  1. GroupBy.indices
    類似於GroupBy.groups
print(GroupBy.indices)
{'女': array([1, 3, 5], dtype=int64), '男': array([0, 2, 4, 6, 7], dtype=int64
)}
  1. GroupBy.get_group(name[, obj])
    獲得某一個分組的具體資訊
In [2]: GroupBy.get_group("男")
Out[2]: 
   年齡 性別  成績
0  15  男  優秀
2  15  男  及格
4  13  男  及格
6  15  男  優秀
7  16  男   差
  1. Grouper([key, level, freq, axis, sort])

應用

可以先通過迴圈獲得所有的組的名稱

for name in GroupBy:
    print(name)# 獲得所有分組的名稱
    GroupBy.get_group(name) #獲得所有該名稱的資料