파이썬 pandas 데이터 분석 입문 · 3장
read_csv로 CSV 읽고 데이터 살펴보기
read_csv 옵션과 head·info·describe·value_counts로 처음 받은 데이터 훑기
실제 데이터는 대부분 파일로 받습니다. 이 장에서는 read_csv로 CSV 파일을 읽고, 처음 받은 데이터를 어떤 순서로 살펴보는지 익힙니다.
read_csv로 CSV 파일 읽기
내 컴퓨터의 파일이라면 경로만 넘기면 됩니다.
Pythonimport pandas as pd
raw = pd.read_csv('cafe_sales.csv')
실습용으로는 파일 없이 문자열을 파일처럼 읽어도 됩니다. 아래 데이터는 2장의 표와 비슷하지만, 실제 데이터처럼 빈 값 하나와 중복 행 하나가 섞여 있습니다.
Pythonimport io
csv_text = """date,store,menu,qty,price
2026-03-01,강남,아메리카노,30,4500
2026-03-01,홍대,라떼,12,5000
2026-03-02,강남,라떼,18,5000
2026-03-02,홍대,아메리카노,,4500
2026-03-03,강남,아메리카노,28,4500
2026-03-03,홍대,케이크,7,6500
2026-03-03,홍대,케이크,7,6500
2026-03-04,강남,케이크,9,6500
2026-03-04,홍대,라떼,15,5000
"""
raw = pd.read_csv(io.StringIO(csv_text))
처음 받은 데이터 살펴보는 순서
1. head — 앞부분 눈으로 보기
Pythonraw.head()
결과 date store menu qty price
0 2026-03-01 강남 아메리카노 30.0 4500
1 2026-03-01 홍대 라떼 12.0 5000
2 2026-03-02 강남 라떼 18.0 5000
3 2026-03-02 홍대 아메리카노 NaN 4500
4 2026-03-03 강남 아메리카노 28.0 4500
NaN은 값이 비어 있다는 뜻입니다. 빈 값이 하나라도 있으면 정수 열도 소수(30.0)로 표시됩니다.
2. info — 행 수, 빈 값, 자료형
Pythonraw.info()
결과<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9 entries, 0 to 8
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 date 9 non-null object
1 store 9 non-null object
2 menu 9 non-null object
3 qty 8 non-null float64
4 price 9 non-null int64
dtypes: float64(1), int64(1), object(3)
qty만 8개라서 빈 값이 하나 있다는 걸 알 수 있습니다. date가 날짜가 아니라 object(문자열)라는 점도 눈여겨보세요. 둘 다 5장에서 고칩니다.
3. describe — 숫자 열 요약 통계
Pythonraw.describe()
결과 qty price
count 8.000000 9.000000
mean 15.750000 5333.333333
std 9.035644 901.387819
min 7.000000 4500.000000
25% 8.500000 4500.000000
50% 13.500000 5000.000000
75% 20.500000 6500.000000
max 30.000000 6500.000000
평균(mean), 표준편차(std), 최솟값·최댓값, 사분위수를 한 번에 보여 줍니다. 최댓값이 지나치게 크거나 음수가 있으면 잘못 입력된 값을 의심해 보세요.
4. value_counts — 범주별 개수
Pythonraw['menu'].value_counts()
결과menu
아메리카노 3
라떼 3
케이크 3
Name: count, dtype: int64