CS/Pandas
[Pandas 데이터 분석] Chapter 6- 데이터 프레임의 다양한 응용
sliver__
2022. 2. 27. 01:54
728x90
[함수 매핑]
- 시리즈 또는 데이터프레임의 개별 원소를 특정 함수에 일대일 대응시키는 과정을 뜻한다.
- 사용자가 직접 만든 함수(lambda 함수 포함)를 적용가능하다.
- 개별 원소에 함수 매핑
- 시리즈 원소에 함수 매핑
Series객체.apply(매핑 함수)
- 데이터프레임 원소에 함수 매핑
- 데이터프레임 개별 원소에 특정 함수를 매핑
DataFrame 객체.applymap(매핑 함수)
- 시리즈 객체에 함수 매핑
- 데이터프레임의 각 열에 함수 매핑
- 모든 열을 하나씩 분리하여 매핑 함수의 인자로 각 열(시리즈)이 전달된다.
- 데이터프레임의 각 열에 함수 매핑
DataFrame 객체.apply(매핑 함수, axis=0)
- 시리즈 객체에 함수 매핑
- 데이터프레임의 각 행에 함수 매핑
-
DataFrame 객체.apply(매핑 함수, axis = 1)
- 데이터프레임 객체에 함수 매핑
- pipe() : 리턴 값에 따라 데이터프레임 반환 / 시리즈를 반환 / 개별 값을 반환
DataFrame 객체.pipe(매핑 함수)
[열 재구성]
- 열 순서 변경
DataFrame 객체[재구성한 열 이름의 리스트]
- 열 분리
- 시리즈의 str 속성으로 문자열 데이터를 분리한다.
Series 객체.str.get(인덱스)
[필터링]
- 불린 인덱싱
DataFrame 객체[boolean series]
- isin() 메소드
- 특정 값을 가진 행들을 따로 추출
DataFrame의 열 객체.isin(추출 값의 리스트)
[데이터프레임 합치기]
- 데이터 프레임 연결
- 여러 개의 데이터프레임을 서로 연결한다.
- 축방향을 지정하지 않으면 기본 옵션(axis = 0)이 적용.
- join='outer' 옵션이 기본으로 적용된다. => 합집합
- join='inner' 옵션의 경우 교집합이 기준이 된다.
#ignore_index=True 새로운 행 인덱스를 설정
pandas.concat(데이터프레임의 리스트, ignore_index=True)
#열을 concat, join='outer'옵션이 기본 값
pandas.concat([데이터프레임 리스트], axis=1)
#행 인덱스의 교집합을 기준으로 사용
pandas.concat([데이터프레임 리스트], axis=1, join='inner')
[데이터프레임 병합]
- merge() : SQL의 join 명령과 비슷한 방식으로 어떤 기준에 의해 두 데이터프레임을 병합한다.
- 기준이 되는 열이나 인덱스를 키(key)라고 부른다.
- 키가 되는 열이나 인덱스는 반드시 양쪽 데이터프레임에 모두 존재해야 한다.
pandas.merge(df_left, df_right, how='inner', left_on='left_key', right_on='right_key', on=None)
- on=None 옵션은 두 데이터프레임에 공통으로 속하는 모든 열을 기준으로 병합.
- how='inner' 옵션은 기준이 되는 열의 데이터가 양쪽 데이터프레임에 공통으로 존재하는 교집합일 경우에만 추출한다.
- how='outer' 옵션은 기준(on)이 되는 열의 데이터가 어느 한쪽에만 속하더라도 포함한다.
- left_on, right_on 옵션은 각 데이터프레임에 키를 지정할 수 있다.
[데이터프레임 결합]
DataFrame1.join(DataFrame2, how='left')
- how='left' : key 값을 기준으로 왼쪽 데이터프레임의 행 record에 join
- how='inner' : 두 데이터프레임의 공통된 key값을 추출
[그룹 연산]
- 그룹 연산 : 특정 기준을 적용하여 몇 개의 그룹으로 분할하여 처리
- 3단계의 과정
- 1) 분할(split) : 데이터를 특정 조건에 의해 분할
- 2) 적용(apply) : 데이터를 집계, 변환, 필터링하는데 필요한 메소드 적용
- 3) 결합(combine) : 2단계의 처리 결과를 하나로 결합
- 그룹 객체 만들기(분할 단계)
- 1개 열을 기준으로 그룹화
- groupby() : 특정열을 기준으로 데이터프레임을 분할하여 그룹 객체를 반환.
DataFrame 객체.groupby(기준이 되는 열 또는 리스트)
#연산이 가능한 col에 그룹화된 class별 mean 값 구함
group화된 dataframe.mean()
#개별 그룹 선택
group화된 dataframe.get_group('그룹 중 하나')
- 그룹 객체 만들기(분할 단계-2)
- 여러 열을 기준으로 그룹화
- 여러 열은 곧 멀티 인덱스인 데이터프레임으로 반환된다.
DataFrame 객체.groupby(리스트)
#멀티인덱스 접근
DataFrame 객체.get_group(('key1','key2'))
- 그룹 연산 메소드(적용-결합 단계)
- mean(), max(), min(), sum(), count(), size(), var(), std(), describe(), info(), first(), last() 등이 존재한다.
#표준편차 데이터 집계(내장 함수)
group 객체.std()
#agg() 메소드 데이터 집계: group 객체.agg(매핑 함수)
group 객체.agg(매핑 함수)
#여러 개의 함수를 사용하여 그룹별 데이터에 대한 집계 연산처리
#모든 열에 여러 함수를 매핑
group 객체.agg([함수1, 함수2])
#각 열마다 다른 함수를 매핑
group 객체.agg({'열1': 함수1, '열2':함수2, ...})
- 그룹 연산 메소드(적용-결합 단계-2)
- transform() : 그룹별로 구분하여 각 원소에 함수를 적용하지만 그룹별 집계 대신 각 원소의 본래 행 인덱스와 열 이름을 기준으로 연산결과를 반환한다.
group 객체.transform(매핑 함수)
- 그룹 연산 메소드(적용-결합 단계-3)
- filter() : 조건식을 가진 함수를 전달하면 조건이 참인 그룹만을 남긴다.
group 객체.filter(조건식 함수)
- 그룹 연산 메소드(적용-결합 단계-4)
- apply() : 판다스 객체의 개별 원소를 특정 함수에 일대일로 매핑한다.
범용 메소드 : group 객체.apply(매핑 함수)
[멀티 인덱스]
- 판다스는 행 인덱스를 여러 레벨로 구현할 수 있도록 멀티 인덱스 클래스를 지원한다.
- loc인덱서는 ('key1','key2') 처럼 투플 형태로 인덱스 접근을 한다.
- xs 인덱서는 ('key1','기준') 처럼 원하는 행을 가져올 수 있다.
[피벗]
pd.pivot_table(DataFrame 객체,
index='행 위치',
columns='열 위치,
value='데이터로 사용할 열',
aggfunc='[{데이터 집계 함수},..]')
728x90