본문 바로가기

Data handling/Pandas

[Pandas] Series, DataFrame의 이해와 생성

What is Pandas

import pandas as pd

 

판다스(Pandas)는 파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있는 라이브러리입니다. 

특히, 행과 열로 이뤄진 2차원 데이터를 효율적으로 가공/처리하고 데이터를 분석할 수 있는 다양한 기능들을 제공합니다. 

 

판다스는 파이썬의 리스트, 컬렉션, 넘파이 등의 내부 데이터뿐만 아니라 CSV, Excel, json 파일 등을 쉽게 DataFrame으로 변경해 데이터의 가공과 분석을 편리하게 수행할 수 있게 합니다.

 

판다스에는 3가지의 데이터 구조체가 있습니다:

 

    1. DataFrame : 2차원 - # col

    2. Series : 1차원 - 1 col

    3. Pannel

 

이 중 판다스의 핵심 객체는 DataFrame입니다. 그리고 이를 온전히 이해하기 위해서는 다른 중요 객체인 Series와 Index를 이해해야 합니다. 간단하게 말하자면, DataFrame은 Series들로 이루어졌으며, 둘은 모두 Index를 key값으로 가지고 있다고 말할 수 있습니다. 

 

이것이 무슨 말인지는 밑의 코드를 보면서 확인해봅시다.

 

 


 

Series

간단하게 말하자면, Series는 1차원 배열에 인덱스를 부여하는 구조체입니다. 

 

# Series
# 1차원 배열의 값에 인덱스 부여하는 구조

sr = pd.Series([17000,18000,1000,5000], index=["a", "b", "c", "d"])
print(sr)
print(sr.values)
print(sr.index)

 

[OUTPUT]
> a    17000
b    18000
c     1000
d     5000
dtype: int64

> [17000 18000  1000  5000]

> Index(['a', 'b', 'c', 'd'], dtype='object')

 

DataFrame

DataFrame은 2차원 리스트입니다. 다른 말로는 행렬로 이해하시면 됩니다.

2차원이기 때문에, Series와는 달리, 행 방향인 인덱스(index) 외에, 열 방향인 칼럼(column)을 지정해줄 수 있습니다. 

즉, Series가 인덱스와 값으로 구성된다면, DataFrame은 열, 인덱스, 값으로 이루어집니다. 

 

DataFrame이 중요한 이유는 우리가 흔히 데이터를 관리할 때, 어떤 형태로 관리하는지를 생각해보면 편합니다. 

단순하게는 엑셀 파일을 생각해보면 되겠죠!

 

# DataFrame
# 2차원 리스트를 매개변수로 전달. 
# 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)이 존재함. 
# 시리즈가 인덱스와 값으로 구성된다면, 데이터프레임은 열, 인덱스, 값으로 이루어짐

values = [[1,2,3],[4,5,6],[7,8,9]]
index = ['one', 'two', 'three']
columns = ['A','B','C']

df = pd.DataFrame(values, index=index, columns=columns)
print(df)
print(df.index)
print(df.columns)
print(df.values)

 

[OUTPUT]
>      A  B  C
one    1  2  3
two    4  5  6
three  7  8  9

> Index(['one', 'two', 'three'], dtype='object')

> Index(['A', 'B', 'C'], dtype='object')

> [[1 2 3]
 [4 5 6]
 [7 8 9]]

 


 

DataFrame의 생성

기본적으로 DataFrame은 파이썬의 리스트, 딕셔너리, 넘파이 ndarray 등 다양한 데이터로부터 생성 가능합니다.

또한 이를 csv, txt 파일 등으로 뽑아내는 것도 가능하죠!

List, Dict, Ndarray => DataFrame

 

  • 예시1: 파이썬 리스트를 이용한 데이터 프레임 생성 
# 예시1 _ 리스트를 이용한 데이터 프레임 생성
data = [
    ['1000', 'Steve', 90.72], 
    ['1001', 'James', 78.09], 
    ['1002', 'Doyeon', 98.43], 
    ['1003', 'Jane', 64.19], 
    ['1004', 'Pilwoong', 81.30],
    ['1005', 'Tony', 99.14],
]
df = pd.DataFrame(data)
print("**기본 상태**")
print(df)

print("\n**열 지정 상태**")
df = pd.DataFrame(data,columns = ['학번', '이름', '점수'])
print(df)

 

 

  • 예시2: 파이썬 딕셔너리를 이용한 데이터 프레임 생성
# 예시 2: 딕셔너리를 이용한 데이터프레임 생성

data = { '학번' : ['1000', '1001', '1002', '1003', '1004', '1005'], 
        '이름' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
        '점수': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]}

df = pd.DataFrame(data)
print(df)

 

[OUTPUT]
> `학번      이름   점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

 

 

  • 예시 3: 넘파이 ndarray를 이용한 데이터 프레임 생성
# 예시 3: 넘파이 ndarray를 이용한 데이터프레임 생성

import numpy as np

col_name = ['A', 'B', 'C']

a = np.array([[1,2,3], [11,12,13]])
df = pd.DataFrame(a, columns = col_name)

DataFrame => List, Dict, Ndarray

많은 머신러닝 패키지가 기본 데이터 형으로 넘파이 ndarray를 사용합니다. 따라서 판다스로 데이터 핸들링을 하더라도 다시 ndarray로 돌려주어야 하는 경우가 빈번합니다.

 

굉장히 많이 사용되므로 밑의 코드는 꼭 알아두자!

# DataFrame을 ndarray로 변환

a = df.values
print(type(a)) 

# DataFrame을 list로 변환
b = df.values.tolist()
print(type(b))

# DataFrame을 dictionary로 변환
c = df.to_dict('list')
print(type(c))

'Data handling > Pandas' 카테고리의 다른 글

[Pandas] DataFrame의 수정과 삭제  (0) 2020.06.12
[Pandas] 외부 데이터 읽기: csv, txt, json  (0) 2020.06.11

출처: https://privatedevelopnote.tistory.com/81 [개인노트]