Pandas 그룹화 방법 groupby 및 집계 함수agg 관련
grouped_single = df.groupby('School')
그룹by 그룹을 나누면 그룹by 대상을 생성합니다. 이 대상은 아무것도 되돌려주지 않습니다. 상응하는 방법이 호출되어야만 작동합니다. 예를 들어 그룹을 꺼내는 것입니다.
grouped_single.get_group('S_1')
(b) 몇 열에 따라 조를 나눈다
grouped_single= df.groupby(['School','Class'])
grouped_single.get_group(('S_2','C_4'))
(c) 그룹 용량 및 그룹 수 확보
grouped_single.size() #
grouped_single.ngroups #
(d) 그룹의 스트리밍
for name,group in group_single:
print(name)
display(group.head(3))
(e) level 매개 변수 (다중 인덱스) 와 axis 매개 변수
df.set_index(['Gender','School']).groupby(level=1,axis=0).get_group('S_1')
2.group 대상의 특징(a)은 호출 가능한 방법dir() 함수에 파라미터가 없을 때 현재 범위 내의 변수, 방법과 정의된 유형 목록을 되돌려줍니다.매개 변수가 있는 매개 변수의 속성, 방법 목록
print([attr for attr in dir(grouped_single) if not attr.startswith('_')])
(b) 패리티 행에 따라 그룹화
df.groupby(lambda x:' ' if not df.index.get_loc(x)%2==1 else ' ').groups
(c) groupby의 [] 작업
df.groupby(['Gender','School'])['Math'].mean()>=60
df.groupby(['Gender','School'])[['Math','Height']].mean()
# 1
(e) 연속형 변수 그룹
bins = [0,40,60,80,90,100]
cuts = pd.cut(df['Math'],bins=bins) # label
df.groupby(cuts)['Math'].count()
2. 집합, 여과와 변환 1.집합 집합은 한 무더기의 수를 하나의 표량으로 바꾸는 것이기 때문에 mean/sum/size/count/std/var/sem/describe/first/last/nth/min/max는 모두 집합 함수(a)를 동시에 여러 개의 집합 함수를 사용합니다
group_m.agg(['sum','mean','std'])
#group_m math
group_m.agg([('rename_sum','sum'),('rename_mean','mean')])# , sum, sum rename_sum
grouped_mul.agg({'Math':['mean','max'],'Height':'var'})# math
(b) 사용자 정의 함수 사용
grouped_single['Math'].agg(lambda x:print(x.head(),' '))
# ,agg ,
2. 필터 그룹(필터 그룹) Filter 함수는 일부 그룹을 필터하는 데 사용되기 때문에 (결과가 그룹의 전체라는 것을 반드시 기억해야 한다) 전송된 값은 브리 표량이어야 한다.
grouped_single[['Math','Physics']].filter(lambda x:(x['Math']>32).all()).head()
# 그룹의 모든 math가 32보다 크다는 뜻이다. 3.변환transform 함수가 들어오는 대상은 그룹 내의 열입니다
grouped_single[['Math','Height']].transform(lambda x:x-x.min()).head()
같은 이치로 그룹 내 값을 표준화하고 값을 채우지 못한다
3. apply 함수 1.유연성, 수치, 목록, 데이터 상자 반환 가능(1)
df[['School','Math','Height']].groupby('School').apply(lambda x:x.max())
(2) 데이터 상자 반환 가능df[['School','Math','Height']].groupby('School')\
.apply(lambda x:pd.DataFrame({'col1':x['Math']-x['Math'].max(),
'col2':x['Math']-x['Math'].min(),
'col3':x['Height']-x['Height'].max(),
'col4':x['Height']-x['Height'].min()})).head()
2. apply로 여러 가지 지표를 동시에 통계하면 OrderedDict 도구를 빌려 빠른 통계를 할 수 있다
from collections import OrderedDict
def f(df):
data = OrderedDict()
data['M_sum'] = df['Math'].sum()
data['W_var'] = df['Weight'].var()
data['H_mean'] = df['Height'].mean()
return pd.Series(data)
grouped_single.apply(f)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.