판다스를 사용하다 보면 평균 계산, 데이터프레임 열이나 행 삭제 작업등을 할 때 axis(축)을 지정해야 합니다. 축을 넣어야 할 때면 0을 넣어야 하는지 1을 넣어야 하는지 헷갈릴 수 있습니다. 이번 시간에는 바로 이 axis에 대해서 알아보겠습니다.
① aixs=0(index)은 행을 따라 동작합니다. 각 컬럼의 모든 행에 대해서 작용합니다. ② aixs=1(columns)은 열을 따라 동작합니다. 각 행의 모든 컬럼에 대해서 작동합니다.
그림으로 직관적으로 이해해 보겠습니다.
예제로 사용할 데이터프레임을 만들겠습니다.
df = pd.DataFrame(
{'name': ['KIM', 'LEE', 'SMITH','BROWN', 'MILLER'],
'age': [24, 32, 43, 24, np.nan],
'height': [178, 168, 171, 185, 176],
'sex': ['M', 'F', 'F', 'M', 'F']})
df
"""
name age height sex
0 KIM 24.0 178 M
1 LEE 32.0 168 F
2 SMITH 43.0 171 F
3 BROWN 24.0 185 M
4 MILLER NaN 176 F
"""
예시 1. drop(axis=0)
df.drop([1,2], axis=0)
"""
name age height sex
0 KIM 24.0 178 M
3 BROWN 24.0 185 M
4 MILLER NaN 176 F
"""
예시 2. drop(axis=1)
df.drop(['age', 'height'], axis=1)
"""
name sex
0 KIM M
1 LEE F
2 SMITH F
3 BROWN M
4 MILLER F
"""
예시 3. mean(axis=0)
df[['age', 'height']].mean(axis=0)
"""
age 30.75
height 175.60
dtype: float64
"""
예시 4. mean(axis=1)
df[['age', 'height']].mean(axis=1)
"""
0 101.0
1 100.0
2 107.0
3 104.5
4 176.0
dtype: float64
"""
예시 5. rank(axis=0)
df[['age', 'height']].rank(axis=0)
"""
age height
0 1.5 4.0
1 3.0 1.0
2 4.0 2.0
3 1.5 5.0
4 NaN 3.0
"""
예시 6. rank(axis=1)
df[['age', 'height']].rank(axis=1)
"""
age height
0 1.0 2.0
1 1.0 2.0
2 1.0 2.0
3 1.0 2.0
4 NaN 1.0
"""
여섯 가지 예제를 살펴보았습니다. 다시 한번 정리하면
axis=0은 각 열의 모든 행에 대해서 동작합니다.
- drop 각 열의 행을 지운다
- mean 각 열의 요소(행)들의 평균을 구한다.
- rank 각 열의 요소(행)들의 순위를 구한다.
axis=1은 각 행의 모든 열에 대해서 동작합니다.
- drop 각 행의 열을 지운다.
- mean 각 행의 요소(열)들의 평균을 구한다.
- rank 각 행의 요소(열)들의 순위를 구한다.
그래도 아직 헷갈리실 수 있습니다. 조금 더 시간이 지나면 어느 순간 자연스럽게 이해 가는 순간이 올 거라 생각합니다.
- 이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.