import pandas as pd
# 分組
# 對數據進行分組,對每一組的數據進行計算
# SQL是可以對數據進行分組和過濾的
# Pandas可以通過groupby函數對數據進行更加複雜的分組運算
# 分組運算的過程
# 1.分組 根據某些要求分組
# 2.運算 根據不同的分組數據進行不同的運算
# 3.合併 把每一個分組的運算結果合併在一起
dict_data = {
'key1':['a','b','c','d','a','b','c','d'],
'key2':['one','two','three','four','five','six','seven','eight'],
'data1':[1,2,3,4,5,6,7,8],
'data2':[3,4,6,9,8,6,5,4]
}
# 根據字典創建df對象
df = pd.DataFrame(dict_data)
print(df)
# 按照指定列進行分組
# DataFrameGroupBy 類型的對象,存儲分組之後的數據
print(df.groupby('key1'))
print(df.groupby('key1').sum())
print(type(df.groupby('key1').sum()))
# 把某列數據按照另外一列進行分組
# 1.找到要分組的列
print(df['data1'])
# 根據key1這一列進行分組
print(df['data1'].groupby(df['key1']).sum())
group1 = df.groupby('key1')
# size() 查看分組數據個數
print(group1.size())
group2 = df.groupby('key2')
print(group2.size())
# 按照層級索引來分
group1 = df.groupby(['key1','key2'])
print(group1.size())
group2 = df.groupby(['key2','key1'])
print(group2.size())
# groupby對象支持迭代操作
# for循環遍歷,遍歷出來的是一個元組,元組中存放的是分組名稱和分組數據
# 對分組數據進行運算
gtoup2 = df.groupby('key1')
for group_name,group_data in group2:
print(group_name)
print(group_data)
print(type(group_data))
print('*'*50)
group_list = list(group2)
print(group_list)
# 轉換爲字典
dict(list(group2))
# 按照數據類型來分
print(df.groupby(df.dtypes,axis=1).size())
print(df.groupby(df.dtypes,axis=1).sum())