판다스(pandas)를 활용한 전처리 복습
데이터 프레임(DataFrame) 객체
•
데이터 테이블 전체를 지칭하는 객체
•
넘파이 배열의 특성을 그대로 가짐
•
인덱싱은 열과 행을 각각 사용하여 하나의 데이터에 접근
데이터 전처리에 필요한 기초 문법들
1.
query() : 데이터프레임에서 조건에 맞는 데이터를 필터링
- 예시: df.query('age > 30')는 age 컬럼이 30 초과인 모든 행을 반환
2.
[], [[]]: []는 단일 컬럼을 선택하고, [[]]는 여러 컬럼을 선택
- 예시: df['age']는 age 컬럼을, df[['age', 'name']]는 age와 name 컬럼을 선택
3.
sort_values() : 데이터를 특정 컬럼 기준으로 정렬
- 예시: df.sort_values('age')는 age 컬럼을 기준으로 오름차순 정렬
4.
groupby(): 데이터를 그룹화하여 집계, 변환, 필터링을 수행
- 예시: df.groupby('gender').mean()는 gender에 따라 데이터를 그룹화하고, 각 그룹의 평균을 계산
5.
assign(): 새로운 컬럼을 추가하거나 기존 컬럼을 수정
- 예시: df.assign(new_column=lambda x: x['age'] * 2)는 age 컬럼의 두 배 값을 가지는 새로운 컬럼을 추가
6.
merge(): 두 데이터프레임을 특정 컬럼을 기준으로 병합
- 예시: df1.merge(df2, on='user_id')는 두 데이터프레임을 user_id 컬럼을 기준으로 병합
7.
agg(): 다양한 집계 함수를 한 번에 적용하여 요약 통계를 계산
- 예시: df.agg({'age': ['min', 'max'], 'salary': 'mean'})는 age의 최소값과 최대값, salary의 평균을 계산
8.
concat(): 데이터프레임을 행이나 열 방향으로 연결
- 예시: pd.concat([df1, df2])는 두 데이터프레임을 행 방향으로 연결
9.
loc, iloc: loc는 레이블을 기준으로 행 또는 열을 선택하고, iloc는 위치를 기준으로 선택
- 예시: df.loc[0, 'age']는 0번째 행의 age 컬럼 값을, df.iloc[0, 1]은 0번째 행의 1번째 컬럼 값을 선택
10.
str(): 문자열 데이터를 처리하는데 사용
- 예시: df['name'].str.upper()는 name 컬럼의 모든 문자열을 대문자로 변환
그룹별 집계(group by) 개념
데이터를 일정한 기준에 따라 그룹별로 분리하여 각 그룹에 대해 집계, 변환, 필터링 등의 연산을 수행할 수 있는 함수이다. SQL의 GROUP BY, 엑셀의 피봇테이블(pivot table)과 유사하게 작동한다
group by() 메서드는 분할(split)-적용(apply)-결합(combine)의 과정을 거친다.
•
분할(split)은 같은 종류의 데이터끼리 나누는 기능
•
적용(apply)은 그룹된 데이터마다 sum(),mean(),count() 등의 집계연산을 수행한다.
•
결합(combine)은 연산 함수가 적용된 각 그룹들을 합치는 기능이다.
위 과정을 그림으로 설명하면 다음과 같다.