pandas를 이용해 데이터를 생성하는 방법
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