2 / 8

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

pandas Series와 DataFrame 기초

Series·DataFrame 만들기, shape·columns 확인, 열 계산으로 새 열 만들기

3분 읽기

pandas의 모든 작업은 두 가지 자료구조 위에서 이뤄집니다. 한 줄짜리 Series와, 여러 Series를 나란히 붙인 표 DataFrame입니다.

Series — 이름표가 붙은 한 줄 데이터

Series는 값과 그 값의 이름표(인덱스)를 함께 가진 1차원 데이터입니다.

Pythonimport pandas as pd

s = pd.Series([30, 12, 18], index=['월', '화', '수'], name='판매량')
print(s)
결과월    30
화    12
수    18
Name: 판매량, dtype: int64

인덱스로 값을 꺼내고, 평균 같은 계산을 바로 할 수 있습니다.

Pythons['화']      # 12
s.mean()     # 20.0

DataFrame — 열마다 이름이 있는 표

DataFrame은 엑셀 시트처럼 행과 열이 있는 2차원 표입니다. 딕셔너리의 키가 열 이름, 값 리스트가 열 내용이 됩니다. 이 책 전체에서 쓸 카페 매출 데이터를 만들어 봅시다.

Pythonsales = pd.DataFrame({
    'date': ['2026-03-01', '2026-03-01', '2026-03-02', '2026-03-02',
             '2026-03-03', '2026-03-03', '2026-03-04', '2026-03-04'],
    'store': ['강남', '홍대', '강남', '홍대', '강남', '홍대', '강남', '홍대'],
    'menu': ['아메리카노', '라떼', '라떼', '아메리카노', '아메리카노', '케이크', '케이크', '라떼'],
    'qty': [30, 12, 18, 25, 28, 7, 9, 15],
    'price': [4500, 5000, 5000, 4500, 4500, 6500, 6500, 5000],
})
print(sales)
결과         date store        menu  qty  price
0  2026-03-01  강남  아메리카노   30   4500
1  2026-03-01  홍대        라떼   12   5000
2  2026-03-02  강남        라떼   18   5000
3  2026-03-02  홍대  아메리카노   25   4500
4  2026-03-03  강남  아메리카노   28   4500
5  2026-03-03  홍대      케이크    7   6500
6  2026-03-04  강남      케이크    9   6500
7  2026-03-04  홍대        라떼   15   5000

왼쪽의 0부터 7까지가 인덱스입니다. 따로 정하지 않으면 0부터 번호가 붙습니다.

표의 크기와 열 이름 확인하기

Pythonsales.shape              # (8, 5)  → 8행 5열
sales.columns.tolist()   # ['date', 'store', 'menu', 'qty', 'price']

새 열 만들기 — 벡터 연산

pandas에서는 반복문 없이 열끼리 바로 계산합니다. 같은 행끼리 짝지어 계산되는데, 이것을 벡터 연산이라고 합니다.

Pythonsales['revenue'] = sales['qty'] * sales['price']
sales.head(3)
결과         date store        menu  qty  price  revenue
0  2026-03-01  강남  아메리카노   30   4500   135000
1  2026-03-01  홍대        라떼   12   5000    60000
2  2026-03-02  강남        라떼   18   5000    90000

직접 해 보기

revenue 열을 1,000으로 나눠 천 원 단위 매출을 구해 보세요. 결과는 새 Series입니다. 원본 sales는 다음 장에서도 그대로 쓰므로 열을 추가하지 않고 계산만 해 봅니다.

Pythonrevenue_k = sales['revenue'] / 1000
revenue_k.head(3)    # 135.0, 60.0, 90.0

전체 메뉴