Python

Pandas DataFrame 만들기

summerorange 2022. 4. 22. 10:51
반응형
def __init__(data=None, index: (Axes | None)=None, columns: (Axes | None)=None, dtype: (Dtype | None)=None, copy: (bool | None)=None)

파이썬 판다스를 이용하면 표 형태의 데이터를 다룰 수 있다는 장점이 있다. 그런데 이러한 표 형태를 만들기 위해서는 뼈대를 잘 만들어야 한다. 인덱스엔 뭘 넣고, 해당 데이터엔 뭐가 들어가는지. 데이터는 어떻게 나열할 것인지 등을 세워야 한다. 보통은 엑셀과 CSV로 만들어진 데이터를 불러와서 index가 무엇인지 지정하는 코드를 친다. 한국어 데이터 경우에는 encoding ='euc-kr' 이나 encoding='utf-8'이 붙는다.

pd.read_csv('../Data.csv', index_col='Date', parse_dates=True)

이번엔 자체적으로 리스트나 넘파이 형태의 데이터를 만들어서 데이터 프레임으로 만들어보겠습니다.

import numpy as np
import pandas as pd
createDataframe = pd.DataFrame({'Index': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07'],
                               'Price': [30, 35, 22, 23, 40, 39, 38],
                               'Value': [135, 234, 423, 333, 235, 293, 236]})

pd.DataFrame() 내부에 {}  JSON형태의 데이터를 입력해주는 방법이 있다. 단점은 손으로 일일이 다 해당 숫자를 작성해야한다는 것.

그리고 인덱스도 다시 설정해주어야 한다.

createDataframe["Index"] = pd.to_datetime(createDataframe['Index']) #dtype형태 변환
createDataframe.set_index('Index',inplace=True) #index로 설정
createDataframe.index #index확인

인덱스는 날짜이기 때문에 해당 데이터를 날짜형태로 반환하고 인덱스로 만들어주었다.

데이터를 확인하면 인덱스와 해당 데이터 프레임 형태가 제대로 만들어졌다.

요 방법 이외에도 넘파이를 활용해서 간단하게 만드는 방법도 있다.

idx = pd.date_range('2022-01-01', periods=14, freq='D') #인덱스생성
idx

data = np.random.randn(14,2) #데이터 값 무작위로 생성
cols = ['Price1','Price2'] # 열 이름 지정
data

각각 배열 데이터와 열 이름, 인덱스 값을 객체값으로 각각 생성해준 뒤, 데이터 프레임 형태로 만든다.

anotherFrame = pd.DataFrame(data,idx,cols) #pd.DataFrame(data, index=idx, columns=cols)

pd.DataFrame(data값, index=인덱스값, columns=열 이름) 으로 만들어주면 쉽게 판다스 데이터 프레임으로 만들 수 있다.

그 외에도 

finalDataframe = pd.DataFrame()
finalDatafrmae['Class'] = ['English', 'Math', 'Korean']
finalDataframe['Middle'] = [88, 100, 92]
finalDataframe['Final'] = [100, 100, 100]

이렇게 미리 데이터 프레임을 만들어 두고 각각 데이터 값을 넣어주는 방법이 있다.

+추가

pd.DataFrame()의 생성자 파라미터는 다음과 같다. data = , index = , columns, dtype = , 등으로 칠 수 있다.

def __init__(data=None, index: (Axes | None)=None, 
columns: (Axes | None)=None, 
dtype: (Dtype | None)=None, 
copy: (bool | None)=None)

-끗-

반응형