Pandas에서 축(axis)이란 무엇일까요?
Pandas에서 축(axis)이란 무엇일까요?
축 종류
Pandas에는 두 가지 기본 축이 있습니다.
- 행 축(axis=0): 행 방향으로 데이터를 구성합니다. 기본적으로 행 인덱스에 따라 데이터를 정렬합니다.
축 활용
축은 다양한 데이터 조작 작업에 활용됩니다. 몇 가지 예시를 살펴보겠습니다.
- 특정 행 또는 열 선택: 특정 조건을 만족하는 행 또는 열을 선택하는 데 사용됩니다. 예를 들어, 특정 연도의 모든 데이터를 선택하거나 특정 금액 이상의 모든 구매를 선택하는 데 사용할 수 있습니다.
- 데이터 그룹화: 데이터를 특정 기준으로 그룹화하는 데 사용됩니다. 예를 들어, 판매량을 제품별로 그룹화하거나 고객을 나이별로 그룹화하는 데 사용할 수 있습니다.
- 데이터 정렬: 데이터를 행 또는 열 기준으로 정렬하는 데 사용됩니다. 예를 들어, 데이터를 날짜순으로 정렬하거나 이름순으로 정렬하는 데 사용할 수 있습니다.
- 연산 수행: 특정 축을 기준으로 데이터에 대한 연산을 수행하는 데 사용됩니다. 예를 들어, 각 열의 평균을 계산하거나 각 행의 합계를 계산하는 데 사용할 수 있습니다.
축과 관련된 주요 개념
- 행 인덱스: 각 행을 식별하는 고유한 값입니다.
- 레벨: 다차원 데이터프레임에서 축의 계층을 나타냅니다.
도움이 되는 자료
"numpy"와 "python" 코드 활용
"numpy"와 "python" 코드는 Pandas에서 축을 다루는 데 활용될 수 있습니다. 몇 가지 예시를 살펴보겠습니다.
- 특정 행 선택:
import pandas as pd
import numpy as np
# 데이터 생성
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df = pd.DataFrame(data, columns=["A", "B", "C"])
# 특정 조건을 만족하는 행 선택
selected_rows = df[df['A'] > 5] # A 열 값이 5보다 큰 행 선택
print(selected_rows)
- 데이터 그룹화:
import pandas as pd
import numpy as np
# 데이터 생성
data = np.array([[1, 2, 3, "A"], [4, 5, 6, "B"], [7, 8, 9, "C"]])
df = pd.DataFrame(data, columns=["X", "Y", "Z", "group"])
# 데이터 그룹화 및 평균 계산
grouped_data = df.groupby('group').mean()
print(grouped_data)
- 데이터 정렬:
import pandas as pd
import numpy as np
# 데이터 생성
data = np.array([[3, 1, 2], [9, 6, 5], [7, 4, 8]])
df = pd.DataFrame(data, columns=["A", "B", "C"])
# 열 기준 정렬
sorted_data = df.sort_values(by='B')
print(sorted_data)
Pandas에서 축 활용 예제 코드 (Python & Numpy)
특정 행과 열 선택
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (10, 4))
df = pd.DataFrame(data, columns=["A", "B", "C", "D"])
# 특정 조건을 만족하는 행 선택
selected_rows = df[df['A'] > 50 & df['C'] < 20] # A 열 값이 50보다 크고 C 열 값이 20보다 작은 행 선택
print(selected_rows)
# 특정 열 선택
selected_columns = df[['A', 'C']] # A 열과 C 열 선택
print(selected_columns)
데이터 그룹화 및 요약 통계 계산
데이터프레임을 특정 기준으로 그룹화하고 그룹별 요약 통계를 계산하는 방법을 살펴보겠습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (20, 5))
df = pd.DataFrame(data, columns=["A", "B", "C", "D", "E"])
# 데이터 그룹화 및 평균 계산
grouped_data = df.groupby('A').mean()
print(grouped_data)
# 데이터 그룹화 및 다양한 요약 통계 계산
grouped_data = df.groupby('B').agg({'C': 'sum', 'D': 'min', 'E': 'max'})
print(grouped_data)
데이터 정렬
데이터프레임을 행 또는 열 기준으로 정렬하는 방법을 살펴보겠습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (15, 3))
df = pd.DataFrame(data, columns=["A", "B", "C"])
# 행 기준 정렬 (A 열 기준 오름차순)
sorted_data = df.sort_values(by='A')
print(sorted_data)
# 열 기준 정렬 (B 열 기준 내림차순)
sorted_data = df.sort_values(by='B', ascending=False)
print(sorted_data)
다차원 데이터프레임에서 축 활용
다차원 데이터프레임에서 축을 사용하여 데이터를 선택, 그룹화, 정렬하는 방법을 살펴보겠습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (10, 3, 2))
df = pd.DataFrame(data, columns=[['X1', 'X2'], ['Y1', 'Y2'], ['Z1', 'Z2']])
# 특정 차원 기준 데이터 선택
selected_data = df.loc[0, 1] # 첫 번째 행, 두 번째 차원의 데이터 선택
print(selected_data)
# 특정 차원 기준 데이터 그룹화 및 평균 계산
grouped_data = df.groupby(level=1).mean()
print(grouped_data)
# 특정 차원 기준 데이터 정렬
sorted_data = df.sort_values(by='X2', axis=1) # 두 번째 차원 기준 오름차순 정렬
print(sorted_data)
Pandas 축 대체 방법
벡터화 연산 활용
벡터화 연산을 사용하면 축을 명시적으로 사용하지 않고도 데이터프레임을 효율적으로 조작할 수 있습니다. Pandas는 다양한 벡터화 연산을 제공하며, NumPy와 같은 다른 라이브러리의 함수와 함께 사용할 수도 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (10, 4))
df = pd.DataFrame(data, columns=["A", "B", "C", "D"])
# 특정 조건을 만족하는 행 선택 (벡터화 연산 활용)
selected_rows = df[(df['A'] > 50) & (df['C'] < 20)]
print(selected_rows)
# 특정 열 선택 (벡터화 연산 활용)
selected_columns = df[["A", "C"]]
print(selected_columns)
apply 함수 활용
apply
함수를 사용하면 데이터프레임의 각 행 또는 열에 함수를 순환적으로 적용하여 원하는 결과를 얻을 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (10, 4))
df = pd.DataFrame(data, columns=["A", "B", "C", "D"])
# 특정 조건을 만족하는 행 선택 (apply 함수 활용)
def g(row):
return (row['A'] > 50) & (row['C'] < 20)
selected_rows = df.apply(g, axis=1)
print(df[selected_rows])
# 특정 열 변환 (apply 함수 활용)
def h(x):
return x * 2
transformed_data = df['A'].apply(h)
print(transformed_data)
Query 문법 활용
Pandas Query 문법을 사용하면 SQL과 유사한 문법으로 데이터프레임을 조작할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
np.random.seed(10)
data = np.random.randint(1, 100, (10, 4))
df = pd.DataFrame(data, columns=["A", "B", "C", "D"])
# 특정 조건을 만족하는 행 선택 (Query 문법 활용)
selected_rows = df.query('A > 50 & C < 20')
print(selected_rows)
# 특정 열 선택 (Query 문법 활용)
selected_columns = df[['A', 'C']]
print(selected_columns)
Resampling 및 Interpolation 활용
데이터 시계열을 다루는 경우 resampling
및 interpolation
함수를 사용하여 축 기반 데이터 변환 작업을 수행할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터 생성
data = pd.Series(np.random.randn(100), index=pd.date_range('2023-01-01', periods=100, freq='D'))
# 일별 데이터를 월별 평균으로 변환
resampled_data = data.resample('M').mean()
print(resampled_data)
# 결측치 보간 (선형 보간)
interpolated_data = data.interpolate('linear')
print(interpolated_data)
python pandas numpy