3 / 8

파이썬 pandas 데이터 분석 입문 · 3장

read_csv로 CSV 읽고 데이터 살펴보기

read_csv 옵션과 head·info·describe·value_counts로 처음 받은 데이터 훑기

3분 읽기

실제 데이터는 대부분 파일로 받습니다. 이 장에서는 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

전체 메뉴