Pandas DataFrame의 행 개수 구하기
Pandas DataFrame의 행 개수를 구하는 방법은 다양합니다. 가장 일반적으로 사용되는 방법은 다음과 같습니다.
shape 속성 활용하기
- DataFrame.shape: DataFrame의 행과 열 개수를 튜플 형태로 반환합니다.
- 첫 번째 값: 행 개수를 나타냅니다.
import pandas as pd
# 샘플 DataFrame 생성
data = {'컬럼1': [1, 2, 3], '컬럼2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
# 행 개수 구하기
num_rows = df.shape[0]
print("행 개수:", num_rows) # 출력: 행 개수: 3
len() 함수 활용하기
- len(DataFrame): DataFrame의 행 개수를 직접적으로 반환합니다.
# 행 개수 구하기
num_rows = len(df)
print("행 개수:", num_rows) # 출력: 행 개수: 3
index 속성 활용하기
- DataFrame.index: DataFrame의 인덱스를 나타내는 객체입니다.
- len(DataFrame.index): 인덱스의 길이, 즉 행 개수를 반환합니다.
# 행 개수 구하기
num_rows = len(df.index)
print("행 개수:", num_rows) # 출력: 행 개수: 3
어떤 방법을 선택해야 할까요?
- 가장 간결하고 직관적인 방법:
len(df)
- 행과 열 개수를 동시에 알고 싶을 때:
df.shape
- 인덱스에 대한 추가적인 작업을 할 때:
len(df.index)
실제 데이터 분석에서는 어떤 방법을 선택하든 큰 차이가 없지만, 코드 가독성과 상황에 맞는 선택이 중요합니다.
추가적으로, 특정 조건에 맞는 행의 개수를 구하고 싶다면 다음과 같이 활용할 수 있습니다.
# 컬럼1의 값이 2보다 큰 행의 개수
num_rows = len(df[df['컬럼1'] > 2])
print("행 개수:", num_rows) # 출력: 행 개수: 1
Pandas DataFrame의 행 개수 구하기: 다양한 예시 코드
다음은 Pandas DataFrame의 행 개수를 구하는 다양한 방법을 보여주는 코드 예시입니다.
shape 속성 활용
import pandas as pd
# 샘플 데이터 생성
data = {'이름': ['홍길동', '김철수', '박영희'],
'나이': [30, 25, 32],
'성별': ['남', '남', '여']}
df = pd.DataFrame(data)
# 행 개수 구하기
num_rows = df.shape[0]
print("DataFrame의 행 개수:", num_rows) # 출력: DataFrame의 행 개수: 3
len() 함수 활용
# 행 개수 구하기
num_rows = len(df)
print("DataFrame의 행 개수:", num_rows) # 출력: DataFrame의 행 개수: 3
index 속성 활용
# 행 개수 구하기
num_rows = len(df.index)
print("DataFrame의 행 개수:", num_rows) # 출력: DataFrame의 행 개수: 3
특정 조건에 맞는 행 개수 구하기
# 나이가 30 이상인 행의 개수
num_rows = len(df[df['나이'] >= 30])
print("나이가 30 이상인 행의 개수:", num_rows) # 출력: 나이가 30 이상인 행의 개수: 2
count() 메서드 활용 (결측치 제외)
# 특정 열의 값이 있는 행의 개수 (결측치 제외)
num_rows = df['이름'].count()
print("이름 열의 값이 있는 행의 개수:", num_rows) # 출력: 이름 열의 값이 있는 행의 개수: 3
각 방법에 대한 설명:
- shape[0]: DataFrame의 행과 열 개수를 튜플로 반환하는 shape 속성에서 행 개수만 추출합니다.
- len(df): DataFrame을 리스트처럼 취급하여 길이를 구합니다.
- len(df.index): DataFrame의 인덱스 길이를 구합니다.
- df[조건]: 조건에 맞는 행만 추출한 후 길이를 구합니다.
- df['열 이름'].count(): 특정 열의 값이 있는 행의 개수를 구합니다. 결측치는 제외됩니다.
- 특정 조건에 맞는 행의 개수:
df[조건]
- 결측치를 제외한 특정 열의 값이 있는 행의 개수:
df['열 이름'].count()
실제 데이터 분석에서는 상황에 맞게 적절한 방법을 선택하면 됩니다.
추가 팁:
- 큰 DataFrame: 매우 큰 DataFrame의 경우,
len(df)
보다는df.shape[0]
이 더 효율적일 수 있습니다. - 결측치 처리:
count()
메서드는 결측치를 제외하고 계산합니다. 모든 행을 포함하고 싶다면shape[0]
을 사용해야 합니다.
Pandas DataFrame의 행 개수를 구하는 다른 방법들
이미 몇 가지 방법을 알아보았지만, Pandas는 다양한 기능을 제공하기 때문에 행 개수를 구하는 데 있어 더 많은 방법들이 존재합니다.
iterrows() 활용 (비효율적, 권장하지 않음)
iterrows()
는 DataFrame을 행 단위로 순회하는 메서드입니다. 하지만 DataFrame 전체를 순회해야 하므로 큰 DataFrame에서는 매우 비효율적입니다.
import pandas as pd
# 샘플 DataFrame 생성
data = {'컬럼1': [1, 2, 3], '컬럼2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
count = 0
for _, row in df.iterrows():
count += 1
print("행 개수:", count) # 출력: 행 개수: 3
apply() 활용 (특정 조건에 따른 행 개수)
apply()
메서드를 사용하여 각 행에 함수를 적용하고, 결과를 새로운 Series로 만들 수 있습니다. 이를 통해 특정 조건에 맞는 행의 개수를 구할 수 있습니다.
# 컬럼1의 값이 2보다 큰 행의 개수
def is_greater_than_two(row):
return row['컬럼1'] > 2
count = df.apply(is_greater_than_two, axis=1).sum()
print("컬럼1의 값이 2보다 큰 행의 개수:", count)
numpy 활용
Pandas는 NumPy를 기반으로 하므로, NumPy의 기능을 활용하여 행 개수를 구할 수도 있습니다.
import numpy as np
# NumPy 배열로 변환하여 shape 속성 사용
num_rows = df.values.shape[0]
print("행 개수:", num_rows)
- 일반적인 경우:
len(df)
또는df.shape[0]
- 특정 조건에 따른 행 개수:
apply()
또는 Boolean indexing - NumPy 기능 활용: NumPy에 익숙하다면
numpy.shape
- 각 행을 순회하며 작업해야 할 경우:
iterrows()
(하지만 비효율적)
주의:
iterrows()
는 큰 DataFrame에서는 매우 느립니다. 가능한 다른 방법을 사용하세요.apply()
는 유연하지만,vectorization
기법을 사용하는 것이 일반적으로 더 빠릅니다.
결론:
Pandas는 DataFrame의 행 개수를 구하는 다양한 방법을 제공합니다. 각 방법의 장단점을 이해하고, 데이터의 크기와 수행하려는 작업에 맞는 적절한 방법을 선택하는 것이 중요합니다.
python pandas dataframe