안녕하세요? mangoseed3434입니다.
11월달에 입사지원한 기업에서 온라인 인적성시험을 응시했었어요.
그래서 최근 포스팅이 없었네요.
문득, 이러다간 올해가 끝나기 전에 파이썬 데이터 분석에 대한 개론을 끝내지 못할 거라는 예감이 들었습니다.
그래서 인적성시험 응시하자마자 공부를 했어요.
오늘도 'Do it! 쉽게 배우는 파이썬 데이터 분석'에 수록된 문제를 실습하면서 포스팅을 작성합니다.

새로운 파생변수를 만드는 실습부터 했어요.

df.assign( )함수를 이용해 데이터 프래임 내 새로운 파생변수를 추가할 수 있었어요.
df.assign(새로 만들 변수명 = 조건)의 형식으로 사용하는 함수인데요.
새로 만들 변수명에는 ' 따옴표 '를 입력할 필요가 없었어요.

이렇게 df.assign( ) 함수로 한번에 여러 개의 파생 변수를 추가할 수 있어요.
위 예시를 실습하다가 의문이 들었는게,
total이라는 파생변수를 만들었고, mean을 구할 때, mean = exam_new['total'] / 3 을 입력해봤어요.

근데 오류가 나더라고요.
이렇게 assign으로 만든 새로운 파생변수를 다시 파생변수로 사용할 때에는 lambda x:를 사용해야 해요.
lambda x:는 데이터 프레임 이름을 x로 대체한다는 뜻이였어요.

이렇게 exam_new라는 데이터 프레임 이름을 lambda를 이용해 x로 치환하면 파생변수를 다시 파생변수에 적용할 수 있었어요.

혹은 lambda x:를 이용해 코딩을 간략하게 할 수 있어요.

df.assign( ) 함수에 numpy 패키지를 이용해 조건문을 작성할 수도 있습니다.
df.assign( ) 함수로 데이터 프레임 내 새로운 파생변수를 추가한 후,
numpy패키지의 where을 이용해 조건에 따른 변수 입력이 가능해요.
다음으로 df.agg( ) 함와 df.groupby( ) 함수로 특정 조건의 통계값을 구하는 실습을 했어요.

df.agg( ) 함수는 df.agg(행 이름 = ('변수', '함수'))형태에요.
행 이름을 작성할 때에는 ' 따옴표 '를 붙이지 않아요.
대신, '변수'의 통계처리를 할 함수에는 ( 괄호 ) 없이 ' 따옴표 '를 포함해서 함수를 입력해야했어요.

df.groupby( ) 함수에 변수를 지정하면 변수의 범주에 따라 데이터를 분리해줘요.
위 예시처럼, nclass 변수를 기준으로 각 nclass의 math변수의 mean평균을 구할 수 있었어요.
지금 nclass가 index로 인식되서 mean_math의 아랫행에 작성되있는데요.
df.groupby( ) 함수의 기본이 변수를 인덱스로 바꾸도록 설정되어 있는게 디폴트여서 그래요.

그럴 때에는, as_index = False를 df.groupby( ) 함수에 추가로 입력을 하면 해결할 수 있어요.
또한, df.assign( ) 함수처럼 df.agg( ) 함수로도 한 번에 여러 개의 통계처리를 할 수 있어요.

df.agg( ) 함수를 이용해서 math의 mean, sum, median 그리고 nclass의 count를 한 번에 구할 수 있었어요.

df.agg( ) 함수에 자주 사용되는 요약 통계 함수는 크게 7개에요.
df.agg( ) 함수는 특정 변수의 통계 처리에 유용한 함수네요.
df.groupby( ) 함수를 이용해 상위 집단과 하위 집단으로 나누기도 가능해요.

단, df.groupby(['변수명1', '변수명2']) 처럼 [ 대괄호 ] 안에 각 변수명을 입력해야 해요.
위 예시의 경우, manufacturer로 먼저 분류하고, drv로 후에 분류한다는 뜻이었어요.

이전에, 문자변수를 조건으로 지정할 때 배운걸 적용해보았습니다.
파이썬에서 '같다'는 '=='로 표현해요.
문자변수를 조건으로 지정할 때에는,
변수 == "조건"' 혹은 "변수 == '조건'"처럼 ' 따옴표 '와 " 큰 따옴표 "로 변수와 조건을 구분해야해요.

count를 이용해 빈도를 셀 수도 있지만, df.value_counts()를 이용해서 간단하게 빈도를 구할 수도 있어요.
df.agg( ) 함수와 df.value_counts()의 정렬 기준이 차이점이네요.
df.agg는 문자기준 정렬이고, df.value_counts()는 숫자기준 정렬로 출력해줬어요.
데이터 프레임 2개의 열 합치기를 실습했어요.
(열 합치기 = 가로로 늘리기)
이 부분은 좀 어려웠습니다.

우선, 실습을 위한 예시용 데이터프레임을 만들었어요.
데이터프레임을 만들 때, DataFrame이라는 대문자 신경쓰기!!

열을 합칠 때에는 pandas.merge( )함수를 이용해요.
pandas.merge( ) 함수는 pandas.merge(데이터프레임1, 데이터프레임2, 방향, 기준)으로 구성되요.
위 예시의 경우, 오른쪽에 입력한 test2 데이터프레임을 왼쪽의 test1 데이터프레임에 결합한다는 의미에요.
그리고 데이터를 합칠 때 기준은 id였어요.
데이터 프레임 2개의 행 합치기를 실습했어요.
(행 합치기 = 세로로 늘리기)
이 부분도 어려웠어요.

우선, 동일하게 실습을 위한 예시용 데이터 프레임을 만들었어요.

데이터 프레임 2개의 행을 합칠 때에는 pandas.concat( )함수를 이용해요.
pandas.concat(['데이터프레임1', '데이터프레임2'])처럼,
pandas.concat( ) 함수에는 결합할 데이터프레임의 이름을 [ 대괄호 ]에 입력해줘야해요.
단, pandas.concat( )만 입력하면, 데이터프레임들의 index가 그래도 합쳐지더라고요.

이럴 때에는, pandas.concat(['데이터프레임1', '데이터프레임2'], ignore_index = True)를 입력해요.
그러면 데이터프레임 2개를 합친 후, 인덱스를 새로 부여해줘요.

좌측의 인덱스가 새롭게 부여된 모습을 볼 수 있었어요.
우
오랜만에 파이썬을 연습하려니 어렵네요.
저는 꾸준한 행동하고 연습해야 실력이 느는 체질인거 같아요.
정리해볼게요.
함수
df.assign( ) : 새로운 파생변수(열) 추가하기
df.agg(새로운 변수명 = ('변수', '함수')) : 변수의 함수 처리값을 새로운 변수명에 할당
df.groupby('변수') : 변수를 기준으로 분류하기
pandas.merge( ) : 데이터프레임 2개의 열(가로) 합치기
pandas.concat( ) : 데이터프레임 2개의 행(세로) 합치
다음에는 데이터를 정제하는 방법을 공부해보겠습니다.
'Python 데이터 분석 입문' 카테고리의 다른 글
| (데이터 분석 공부 1편) Box Plot 읽기 (0) | 2025.12.22 |
|---|---|
| (Python 데이터 분석 입문 06편) 데이터 정제하기, 결측치 정제하기, 이상치 정제하기 (0) | 2025.12.21 |
| (Python 데이터 분석 입문 04편) 데이터 전처리(上): 행 추출하기, 열 추출하기, 정렬하기 (0) | 2025.12.12 |
| (Python 데이터 분석 입문 03편) 데이터 파악하기, 변수명 바꾸기, 파생변수 만들기, 그래프로 시각화하기 (0) | 2025.12.07 |
| (Python 데이터 분석 입문 02편) Data Frame 만들기, 외부 파일(xlsx, csv 등) 불러오기, 외부 파일로 저장하기 (0) | 2025.12.05 |