WjExplor Story

Pandas 와 DataFrame 본문

Python/Python : Jupyter

Pandas 와 DataFrame

더블유제이플로어 2025. 9. 24. 11:19

NumPy는 복잡한 수학 연산을 할 때 사용되나 표 형태 데이터에서는 불리한 측면이 있다.

Numpy 안에 Pandas 라이브러리를 이용하여 사용하게 되면 편리한 기능을 사용할 수 있다.

Pandas는 표 형태의 데이터를 간편하게 다루고 싶을 때 사용한다.


import pandas as pd

df = pd.DataFrame({
    'category': ['skirt', 'sweater', 'coat', 'jeans'],
    'quantity': [10, 15, 6, 11],                                     
    'price': [30000, 60000, 95000, 35000]
})
df

pd.DataFrame() 함수에 python dictionary를 파라미터로 넘겨줬다.
dictionay에 첫 번째로는 'category'라고 써주고, category 목록을 List로 넘겨주었다.
그다음으로는 'quantity'(수량)을 써주고 수량도 List로 넘겨주고
마지막으로 'price' 가격 목록을 써주고 가격 목록을 List 로 넘겨주었다.

 DataFrame 구조에 대해 짧게 살펴보자.

DataFrame 에서 가로 줄을 로우(row)라고 한다. 한국어로는 '행'이라고 한다.
세로 줄은 컬럼(column) 이라고 한다. 한국어로는 '열'이라고 한다.

지금 현재 DataFrame 은 4개의 로우와 3개의 칼럼이 있다.

category , quantity , price 는 각 칼럼의 이름이다.
DataFrame을 사용하면 칼럼에 이름을 붙여 줄 수 있다.
Numpy에서는 지원하지 않는 기능이다.
왼쪽에 0 , 1 , 2 , 3 숫자는 인덱스라고 부르고 각 로우의 이름이다.

Numpy 개념들이 Pandas에서도 대부분 적용 가능하다.
Pandas는 Numpy를 기반으로 만들어진 라이브러리이기 때문이다.

df['quantity']

quantity 컬럼에 있는 데이터만 가져올 수 있다.

좌측에 있는 0 , 1 , 2 , 3 은 인덱스
우측에 있는 10 , 15 , 60 , 11 은 데이터 값이다.
칼럼의 이름(name)과 데이터 타입(dtype) 도 확인할 수 있다.

quantity의 칼럼의 데이터 타입을 확인해 보면

type(df['quantity'])

pandas.core.series.Series

이렇게 데이터 타입이 확인된다.

칼럼 하나를 데이터 타입으로 받아오면 더 이상 pandas DataFrame 이 아니라 pandas Series 가 된다.
DataFrame 이 데이터를 표 형태, 즉 2차원으로 다루는 거라면 Series는 데이터를 1차원으로 다루는 것이다.

DataFrame 은 2차원 Numpy array에 보너스 기능이 추가된 거라고 보면 되고
Series는 1차원 Numpy array에 보너스 기능이 추가된 거로 보면 된다.
DataFrame는 여러 개의 Series로 구성되어 있다고 볼 수 있다.


df ['quantity']을 계산해 보자

df['quantity'].mean() # 평균
df['quantity'].sum() # 합계
df['quantity'].min() # 최솟값

df['quantity'] * df['price']

Series * Series 두 시리즈를 곱하게 되면 어떻게 될까? 
Numpy 랑 비슷한 개념이다. 0번 인덱스끼리 값을 곱하고 , 1번 인덱스끼리 값을 곱한다.
각 인덱스의 값끼리 곱해서 새로운 Series 가 만들어진다.

df ['quantity'] * df ['price'] 은 항목별로 총판매량을 계산한 것이다. Numpy와 비슷한 방식이다.


DataFrame 을 만드는 다양한 방법

2차원 Numpy array를 가지고 DataFrame 을 만들어보자.

import pandas as pd
import numpy as np

dict_df = pd.DataFrame({
    'category': ['skirt', 'sweater', 'coat', 'jeans'],
    'quantity': [10, 15, 6, 11],                                     
    'price': [30000, 60000, 95000, 35000]
})

two_dimensional_list = [
    ['skirt', 10, 30000],
    ['sweater', 15, 60000],
    ['coat', 6, 95000],
    ['jeans', 11, 35000]
]
two_dimensional_array = np.array(two_dimensional_list)

list_df = pd.DataFrame(two_dimensional_list)
array_df = pd.DataFrame(two_dimensional_array)

two_defemsional_list 라는 2차원 리스트 (list of lists) 를 가지고 list_df 를 만들었다.

two_dimensional_array 라는 2차원 Numpy array 를 가지고 array_df 를 만들었다.

list_df 와 array_df 를 출력해보면 결과가 위에처럼 만들어지는데 컬럼의 이름을 따로 설정하지 않아서 0부터 시작하는 숫자값이 들어가있다.

DataFrame 을 만들 때  columns 라는 옵션을 사용해서 컬럼명을 설정하는 것도 가능하다.

마지막으로 Dictonary 가 담겨 있는 List 로 DataFrame 을 만들 수 있다.

dict_list = [
    {'category': 'skirt', 'quantity': 10, 'price': 30000},
    {'category': 'sweater', 'quantity': 15, 'price': 60000},
    {'category': 'coat', 'quantity': 6, 'price': 95000},
    {'category': 'jeans', 'quantity': 11, 'price': 35000}
]

dict_list_df = pd.DataFrame(dict_list)

dict_list_df