기본 DataFrame 검사
head(), tail(), info(), describe(), shape를 사용해 모든 DataFrame의 내용과 구조를 빠르게 파악합니다.
기본 DataFrame 검사은(는) CoddyKit의 무료 Pandas & NumPy Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Pandas & NumPy Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Pandas & NumPy Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
모든 DataFrame에서 수행하는 첫 다섯 단계
새 데이터세트를 불러올 때마다 체계적인 검사 순서를 따르면 디버깅에 드는 시간을 크게 줄일 수 있습니다. 이를 위한 판다스 도구는 다음과 같습니다. 처음 몇 행을 확인하는 head(), 마지막 행을 확인하는 tail(), 열 유형과 결측치를 확인하는 info(), 통계량을 확인하는 describe(), 차원을 확인하는 shape입니다. 이 다섯 가지 검사를 실행하는 데는 1분도 걸리지 않으며 대부분의 데이터 품질 문제를 즉시 발견할 수 있습니다.
import pandas as pd
# Assume df is loaded from a CSV
print(df.shape) # (rows, cols)
df.head() # first 5 rows
df.info() # dtypes + non-null counts
df.describe() # statisticshead()와 tail()
df.head(n)은 처음 n개 행(기본값 5개)을 DataFrame으로 반환합니다. df.tail(n)은 마지막 n개 행을 반환합니다. 두 함수를 함께 사용하면 데이터가 올바르게 파싱되었는지 확인할 수 있습니다. 열 이름이 헤더 행에 있는지, 숫자 열에 숫자가 들어 있는지, 날짜 문자열이 잘못 해석되지 않았는지를 점검할 수 있습니다. 두 함수 모두 원본을 변경하지 않으며 새 DataFrame을 반환합니다.
import pandas as pd
df = pd.DataFrame({'a': range(20), 'b': range(20, 40)})
print(df.head(3))
# a b
# 0 0 20
# 1 1 21
# 2 2 22
print(df.tail(2))
# a b
# 18 18 38
# 19 19 39info(): 유형과 널이 아닌 값의 개수
df.info()는 인덱스 dtype, 열별 널이 아닌 값의 개수, 각 열의 dtype, 전체 메모리 사용량을 간결하게 요약해 출력합니다. 널이 아닌 값의 개수가 전체 행 수보다 적은 열에는 누락된 데이터가 있습니다. Object dtype은 문자열 열(또는 여러 유형이 섞인 열)을 의미하는 경우가 많으며, 분석 전에 정리가 필요할 수 있습니다.
import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['A', 'B', None],
'score': [80.0, np.nan, 90.0],
'grade': ['A', 'C', 'A']})
df.info()
# Column Non-Null Count Dtype
# name 2 non-null object
# score 2 non-null float64
# grade 3 non-null objectdescribe(): 통계 요약
df.describe()는 모든 숫자 열에 대해 개수, 평균, 표준 편차, 최솟값, 25번째 백분위수, 50번째 백분위수(중앙값), 75번째 백분위수, 최댓값을 계산합니다. 문자열 열인 object 열도 요약하려면 include='all'을 전달하십시오. 범주형 열만 요약하려면 include='object'를 전달하십시오. 출력 결과 자체가 DataFrame이므로 저장하거나 보고서용으로 서식을 지정할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'age': [25, 30, 35, 40], 'score': [88, 72, 91, 65]})
print(df.describe().round(1))
# age score
# count 4.0 4.0
# mean 32.5 79.0
# std 6.5 12.0shape, ndim, size
df.shape는 튜플 (nrows, ncols)입니다. df.ndim은 DataFrames에 대해 항상 2를 반환합니다. df.size는 전체 셀 개수입니다. 행 개수에는 len(df)을 사용하십시오. 이는 df.shape[0]과 같습니다. 이러한 속성은 가장 간단한 정상성 검사 방법으로, 데이터를 불러온 후와 각 필터링 단계 후에 예상한 행 개수가 맞는지 확인할 수 있습니다.
import pandas as pd
df = pd.DataFrame({'x': range(100), 'y': range(100), 'z': range(100)})
print(df.shape) # (100, 3)
print(len(df)) # 100
print(df.size) # 300
print(df.ndim) # 2dtypes와 select_dtypes()
df.dtypes는 각 열 이름을 해당 dtype에 매핑하는 Series를 반환합니다. df.select_dtypes(include='number')는 숫자 열만 포함하는 새 DataFrame을 반환합니다. 문자열 열에 실수로 연산을 적용하지 않고 상관관계를 계산하거나 숫자 변환을 적용할 때 유용합니다. 텍스트 열을 제외하려면 exclude='object'를 전달하십시오.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [1.0,2.0], 'c': ['x','y']})
print(df.dtypes)
# a int64
# b float64
# c object
numeric = df.select_dtypes(include='number')
print(numeric.columns.tolist()) # ['a', 'b']isnull()과 널 개수
df.isnull().sum()은 열별 결측값 개수를 제공하므로 정리가 필요한 열을 찾는 가장 빠른 방법입니다. len(df)으로 나누면 결측값 비율을 구할 수 있습니다. 결측값이 50%를 넘는 열은 별도의 처리가 필요한 경우가 많습니다. 해당 열을 삭제하거나 도메인에 맞는 대치 방법을 적용하십시오.
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, np.nan, 3], 'b': [np.nan, np.nan, 6]})
print(df.isnull().sum())
# a 1
# b 2
print((df.isnull().sum() / len(df)).round(2))
# a 0.33
# b 0.67DataFrame 열에서 value_counts() 사용하기
df['col'].value_counts()를 호출하면 해당 열의 각 고유값 빈도를 개수순으로 정렬해 보여 줍니다. 백분율을 확인하려면 normalize=True를 추가하십시오. NaN도 하나의 범주로 세려면 dropna=False를 사용하십시오. 이는 범주형 열의 범주 불균형이나 예상하지 못한 값을 확인하는 가장 빠른 방법입니다.
import pandas as pd
df = pd.DataFrame({'status': ['active','inactive','active','active','banned']})
print(df['status'].value_counts())
# active 3
# inactive 1
# banned 1
print(df['status'].value_counts(normalize=True).round(2))columns와 index 검사
df.columns.tolist()는 열 이름을 일반 Python 목록으로 반환하므로 프로그래밍 방식으로 조작하거나 기록할 때 유용합니다. df.index는 행 레이블과 그 유형을 보여 줍니다. df.index.is_unique를 확인하여 중복된 행 레이블이 없는지 점검하십시오. 이는 많은 병합 작업과 시계열 계산을 수행하기 위한 전제 조건입니다.
import pandas as pd
df = pd.DataFrame({'a': [1,2,3]}, index=['x', 'y', 'z'])
print(df.columns.tolist()) # ['a']
print(df.index.tolist()) # ['x', 'y', 'z']
print(df.index.is_unique) # True무작위 검사를 위한 sample()
df.sample(n)은 중복 없이 무작위로 선택한 n개 행을 반환합니다. df.sample(frac=0.1)은 전체 행의 10%를 반환합니다. 재현 가능하게 하려면 random_state=를 설정하십시오. 무작위 샘플링은 대규모 데이터세트의 중간 부분에 있는 문제를 찾을 때 head()보다 효과적입니다. 이러한 문제는 처음 몇 행에는 나타나지 않을 수 있습니다.
import pandas as pd
df = pd.DataFrame({'x': range(1000), 'y': range(1000)})
print(df.sample(3, random_state=42))
print(df.sample(frac=0.005, random_state=0)) # 0.5% of rows크기 예산을 위한 memory_usage()
df.memory_usage(deep=True)는 각 열이 사용하는 메모리를 바이트 단위로 반환합니다. deep=True를 사용하면 문자열이 DataFrame 버퍼 외부에 저장되는 object dtype 열의 메모리도 정확하게 측정합니다. 값을 합산하면 전체 메모리 사용량을 구할 수 있습니다. dtype 다운캐스팅 전후에 이를 사용하여 메모리 사용량이 줄었는지 확인하십시오.
import pandas as pd
df = pd.DataFrame({'a': range(10000), 'b': [str(i) for i in range(10000)]})
usage = df.memory_usage(deep=True)
print(usage)
print('Total bytes:', usage.sum())빠른 확인
이 레슨에서 배운 기본 DataFrame 검사에 대한 이해도를 확인해 보십시오.
레슨 요약
이 레슨에서는 다음을 배웠습니다. head()와 tail()을 사용하면 DataFrame의 시작과 끝을 눈으로 확인할 수 있습니다. info()는 한 번의 호출로 dtype과 결측값 개수를 보여 줍니다. 또한 describe()는 숫자 열의 통계 요약을 제공합니다. 다음으로 가장 일반적인 파일 형식인 CSV, Excel, JSON에서 데이터를 불러와 DataFrame으로 만들어 보겠습니다.
자주 묻는 질문
“기본 DataFrame 검사” 강의는 무료인가요?
네 — “기본 DataFrame 검사” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Pandas & NumPy Academy 강의 전체를 잠금 해제할 수 있습니다. Pandas & NumPy Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“기본 DataFrame 검사”에서 뭘 배우나요?
head(), tail(), info(), describe(), shape를 사용해 모든 DataFrame의 내용과 구조를 빠르게 파악합니다. 브라우저에서 직접 실행하는 실습 코드로 Pandas & NumPy Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Pandas & NumPy Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Pandas & NumPy Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“기본 DataFrame 검사” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Pandas & NumPy Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Pandas & NumPy Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- DataFrames 만들기
- 열과 행 선택
- 열 추가와 삭제
- 기본 DataFrame 검사