728x90
Titanic 데이터셋을 사용하여 그룹화(GroupBy) 연산과 다양한 데이터 변환(transformation)을 수행하는 방법을 알아보자.
우선 간단하게 titanic 데이터셋을 확인해 보자.
titanic.head()
groupby로 성별과 클래스로 묶어주고, 나이와 요금의 평균 구하기
데이터프레임에서 GroupBy 연산을 통해 특정 기준으로 데이터를 그룹화할 수 있다.
예를 들어, 성별(Sex)과 탑승 클래스(Pclass)를 기준으로 그룹화한 후, 각 그룹의 나이(Age)와 요금(Fare)의 평균을 계산해 보자.
titanic.groupby(['Sex', 'Pclass'])[['Age', 'Fare']].mean()
- titanic.groupby(['Sex', 'Pclass']):
- titanic 데이터프레임을 Sex와 Pclass 열을 기준으로 그룹화한다.
- 그룹화는 주어진 열의 고유한 값의 조합으로 데이터를 나누는 작업을 의미한다. 예를 들어, 남성 1등석, 남성 2등석, 남성 3등석, 여성 1등석, 여성 2등석, 여성 3등석으로 나뉘게 된다.
- [['Age', 'Fare']]:
- 그룹화된 데이터에서 Age와 Fare 열만 선택한다.
- 이는 선택한 열에 대해서만 이후의 연산을 수행하도록 지정하는 것이다.
- .mean():
- 선택된 Age와 Fare 열에 대해 각 그룹의 평균값을 계산한다.
- 결과적으로, 성별과 탑승 클래스의 조합별로 승객들의 평균 나이와 평균 운임이 계산된다.
이 결과는 각 그룹에 속한 승객들의 평균 나이와 평균 운임을 보여준다. 예를 들어, 여성 1등석 승객들의 평균 나이는 34세이고, 평균 운임은 106.125다. 마찬가지로 남성 3등석 승객들의 평균 나이는 26세이고, 평균 운임은 12.661이다.
[Age, Fare]와 [[Age, Fare]]의 차이
groupBy 뒤에 붇는 [[Age, Fare]]에서 대괄호를 두 개 사용하는 이유는 데이터프레임에서 여러 열을 선택할 때 데이터프레임을 유지하기 위해서다.
- ['Age', 'Fare']:
- 이 부분은 파이썬 리스트로, 'Age'와 'Fare' 두 개의 열 이름을 포함하고 있다.
- [['Age', 'Fare']]:
- 이중 대괄호는 리스트를 다시 대괄호로 감싸서 데이터프레임 내에서 여러 열을 선택하는 것을 의미한다.
- 결과적으로, titanic[['Age', 'Fare']]는 titanic 데이터프레임에서 Age와 Fare 열을 선택하여 새로운 데이터프레임을 만든다.
- 단일 대괄호와 이중 대괄호의 차이:
- titanic[['Age']]: 이 구문은 Age 열을 데이터프레임으로 반환한다. 데이터프레임에서 단일 열을 선택하더라도 데이터프레임 형태를 유지하고 싶을 때 사용한다.
- titanic[['Age', 'Fare']]: 이 구문은 Age와 Fare 열을 데이터프레임으로 반환한다. 여러 열을 선택할 때 반드시 이중 대괄호를 사용해야 한다.
- titanic['Age']: 이 구문은 Age 열을 시리즈(Series)로 반환한다. 데이터프레임에서 단일 열을 선택할 때 사용한다.
groupby를 통해 성별을 묶은 다음, 생존율의 평균 구하기
성별을 기준으로 그룹화한 후, 각 그룹의 생존율 평균을 계산해 보자.
survive = titanic.groupby('Sex')['Survived'].mean()
print(survive)
이 코드는 성별에 따른 생존율을 계산한다. 생존율을 퍼센트로 나타내려면 다음과 같이 할 수 있다:
(survive * 100).head()
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Matplotlib] 기본 개념(범례, 축 범위, 산점도) (0) | 2024.08.04 |
---|---|
[pandas] split, grouped (0) | 2024.08.04 |
[pandas] loc, iloc (0) | 2024.08.04 |
[numpy] 인덱싱과 슬라이싱, vstack, hstack, hsplit (0) | 2024.08.04 |
[numpy] 자동 형 변환, 기본 연산 (0) | 2024.08.04 |