Pandas GroupBy物件 索引與迭代
阿新 • • 發佈:2019-02-17
import pandas as pd
df = pd.DataFrame({'性別' : ['男', '女', '男', '女',
'男', '女', '男', '男'],
'成績' : ['優秀', '優秀', '及格', '差',
'及格', '及格', '優秀', '差'],
'年齡' : [15,14,15,12,13,14,15,16]})
GroupBy=df.groupby("性別" )
- 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 男 差
- GroupBy.groups
顯示分組的組名,以及所對應的索引
print(GroupBy.groups)
{'女': Int64Index([1, 3, 5], dtype='int64'), '男': Int64Index([0, 2, 4, 6, 7], dtype='int64')}
- GroupBy.indices
類似於GroupBy.groups
print(GroupBy.indices)
{'女': array([1, 3, 5], dtype=int64), '男': array([0, 2, 4, 6, 7], dtype=int64 )}
- GroupBy.get_group(name[, obj])
獲得某一個分組的具體資訊
In [2]: GroupBy.get_group("男")
Out[2]:
年齡 性別 成績
0 15 男 優秀
2 15 男 及格
4 13 男 及格
6 15 男 優秀
7 16 男 差
- Grouper([key, level, freq, axis, sort])
應用
可以先通過迴圈獲得所有的組的名稱
for name in GroupBy:
print(name)# 獲得所有分組的名稱
GroupBy.get_group(name) #獲得所有該名稱的資料