파이썬

pandas를 이용해 데이터를 생성하는 방법

단델x 2022. 1. 25. 23:41

NumPy는 같은 데이터 타입의 배열만 처리한다. 

반면, pandas는 데이터 타입이 다양하게 섞여 있을 때도 처리할 수 있다. 

 

pandas도 아나콘다를 설치할 때 이미 설치되어있으므로 따로 설치할 필요가 없이

불러와서 사용할 수 있다. 

 

import pandas as pd

 

<Series를 활용한 데이터 생성>

pandas에서 가장 기본적으로 데이터를 생성하는 방법은 Series()를 이용하는 것이다. 

Series()를 이용하면 Series 형식의 구조적데이터 = 라벨을 갖는 1차원 데이터를 생성할 수 있다. 

Series의 인자로는 시퀀스 데이터(seq_data)가 들어간다. 

시퀀스 데이터로는 리스트와 튜플 타입이 있지만, 주로 리스트 데이터를 이용한다. 

 

s = pd.Series(seq_data)
s1 = pd.Series([10,20,30,40,50])
  ↓↓
0    10
1    20
2    30
3    40
4    50
dtype: int64

 

Serise데이터에서 세로축 라벨을 index라고 하고, 입력한 시퀀스 데이터를 values라고 한다. 

Serise데이터를 출력하면 데이터의 앞에 index가 함께 표시되는데, index는 데이터 생성 시 자동으로 만들어진 것으로 데이터를 처리할 때 이용한다. 

 

Series데이터는 index와 values를 분리해서 가져올 수 있다. 

 

s1.index
→ RangeIndex(start=0, stop=5, step=1)

s1.values
→ array([10, 20, 30, 40, 50], dtype=int64)

 

RangeIndex는 index를 범위로 표시한다. (start ~ stop-1, step간격으로 증가)

pandas의 경우 원소의 데이터 타입이 달라도 가능하다. (문자와 숫자가 혼합된 리스트를 인자로 이용가능)

 

s2 = pd.Series(['a', 'b', 'c', 1, 2, 3])
  ↓↓
0    a
1    b
2    c
3    1
4    2
5    3
dtype: object

 

데이터가 없으면 numpy를 임포트한 후에 np.nan으로 데이터가 없다고 표시할 수 있다. 

데이터를 위한 자리(index)는 있지만 실제 값은 없다. 

 

import numpy as np

s3 = pd.Series([np.nan, 10, 30])
  ↓↓
0     NaN
1    10.0
2    30.0
dtype: float64

 

Series 데이터를 생성하면서 index를 지정할 수도 있다. 

인자로 index를 명시적으로 입력하여 자동생성되는 index대신 index_seq가 들어간다. 

단, seq_data의 항목 개수와 index_seq의 항목 개수가 같아야 한다. 

index_seq는 리스트 형식의 데이터를 이용해서 따로 index 인자만 넣거나,

딕셔너리 데이터를 이용하여 index와 values를 동시에 넣을 수 있다. 

 

s4 = pd.Series([10,20,30], index=['a','b','c'])
또는
index_data = ['a','b','c']
s4 = pd.Series([10,20,30], index=index_data)
또는
s4 = pd.Series({'a':10, 'b':20, 'c':30})

↓↓
a    10
b    20
c    30
dtype: int64

 

<DataFrame을 활용한 데이터 생성>

DataFrame을 표와 같은 2차원 데이터 처리를 위해 사용한다.

라벨이 있는 2차원 데이터를 생성하고 처리할 수 있다. 

DataFrame()의 인자인 data에는 리스트와 형태가 유사한 데이터 타입은 모두 사용할 수 있다.

세로축 라벨은 index, 가로축 라벨은 columns, 그 외 부분은 values이다.

index와 columns는 선택사항이라 입력하지 않아도 생성이 되며, 자동을 0부터 숫자가 생성되어 채워진다.

 

df = pd.DataFrame(data [, index = index_data, columns = columns_data])

df1 = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])
또는
data_list = np.array([[1,2,3], [4,5,6], [7,8,9]])
df1 = pd.DataFrame(data_list)
        ↓↓
	0	1	2
0	1	2	3
1	4	5	6
2	7	8	9

df2 = pd.DataFrame(data_list, index=['a','b','c'], columns=['A','B','C'])
        ↓↓
	A	B	C
a	1	2	3
b	4	5	6
c	7	8	9

df3 = pd.DataFrame({
    'A':[1,2,3],
    'B':[4,5,6],
    'C':[7,8,9]
}, index = ['a','b','c'])
        ↓↓
	A	B	C
a	1	4	7
b	2	5	8
c	3	6	9