본문 바로가기
Python/Pandas

DataFrame의 생성(from_dict, from_record) - pandas(5)

by 콩돌 2019. 10. 13.
반응형

파이썬 버전 3.7 기준

pandas 버전 0.25.1 기준



 DataFrame의 하위 메서드를 사용한 DataFrame의 생성


본 포스팅에서는 DataFrame을 구축하기 위한 from_dict() 메서드와, from_records() 메서드를 다룬다.


DataFrame과 Series에 관한 상세 사항은 타 포스팅을 참고하자.



 DataFrame.from_dict() 메서드와 DataFrame.from_records() 메서드


 DataFrame.from_dict() 메서드

DataFrame.from_dict() 메서드는 다음과 같은 자료형을 입력으로 가진다.

  ○ 딕셔너리로 구성된 딕셔너리

  ○ array-like 시퀀스의 딕셔너리


위의 데이터를 입력받아 DataFrame을 반환한다.

기본적으로는 DataFrame() 함수와 동일하게 작동하나 일부 차이점이 존재한다.

  ○ orient라는 입력변수를 가지며 'columns'를 기본값으로 가진다. 

    ▷ 'columns'는 딕셔너리의 키를 열의 레이블로 설정하게 한다. 

    ▷ 그러나 'index'가 입력되면 딕셔너리의 키를 행의 레이블로 설정한다. 


DataFrame.from_dict() 메서드 사용 예)

# pandas와 numpy의 import

In[2]: import pandas as pd

In[3]: import numpy as np


# from_dict 사용 예제

In[4]: ex_dict = {'a': [1,2,3], 'b': [4,5,6], 'c':[7,8,9]}

In[5]: pd_data1= pd.DataFrame.from_dict(ex_dict)

In[6]: pd_data1

Out[6]: 

   a  b  c

0  1  4  7

1  2  5  8

2  3  6  9


# orient와 columns 변수의 활용

In[7]: pd_data1= pd.DataFrame.from_dict(ex_dict, orient='index', columns=['C0', 'C1', 'C2'])

In[8]: pd_data1

Out[8]: 

   C0  C1  C2

a   1   2   3

b   4   5   6

c   7   8   9


 

 DataFrame.from_records() 메서드

DataFrame.from_records() 메서드는 다음과 같은 자료형을 입력으로 받는다.

  ○ 튜플의 리스트 

  ○ 구조체 자료형을 사용하는 ndarray


이 메서드는 기본적인 DataFrame() 함수와 유사하게 작동한다.

출력되는 DataFrame의 인덱스는 입력된 데이터 중 하나의 필드를 설정할 수 있다. 

  ○ index 입력변수를 사용하면 된다. 


DataFrame.from_records() 메서드 사용 예)

# pandas와 numpy의 import

In[2]: import pandas as pd

In[3]: import numpy as np


# from_records 사용 예제

In[9]: ex_ndarray= np.array([(0, 1, 'str0'), (2, 3, 'str1')], dtype=[('a', 'i8'), ('b', 'f8'), ('c', 'S10')])

In[10]: pd_data2=pd.DataFrame.from_records(ex_ndarray)

In[11]: pd_data2

Out[11]: 

   a    b        c

0  0  1.0  b'str0'

1  2  3.0  b'str1'


# index 입력변수의 사용

In[12]: pd_data2=pd.DataFrame.from_records(ex_ndarray, index='c')

In[13]: pd_data2

Out[13]: 

         a    b

c              

b'str0'  0  1.0

b'str1'  2  3.0


 

 각 메서드의 세부사항



 DataFrame.from_dict(data, orient='columns', dtype=None, columns=None)

array-like나 딕셔너리로 구성된 딕셔너리를 사용해 DataFrame을 구축한다.

딕셔너리 객체로부터 DataFrame을 만들때, dtype의 형태를 허가하여 열 혹은 행에 의해 객체를 구성한다.

 

data: dict

아래 형태의 딕셔너리를 입력받는다.

  ○ {field1: array-like, ... }

  ○ {field1: dict, ... }


orient: {'columns', 'index'}

기본값은 'columns' 이다.

데이터의 방향(orientation)을 설정한다. 

만약 입력된 딕셔너리의 key들이 열의 레이블로 배정하고 싶다면 'columns'을 입력하자.

반대로 행의 레이블(index)로 배정하고 싶은 경우에는 'index'


dtype: dtype

기본값은 None이다.

출력되는 DataFrame의 dtype을 이 입력변수에 입력되는 값으로 강제적으로 설정한다.

None이 입력될 경우(기본값), 기존의 데이터에서 dtype을 추측한다.


columns: list

기본값은 None이다.

orient='index'일 경우, 열 레이블을 설정한다.

orient='columns'일때, 이 입력변수가 사용되면 ValueError를 발생시킨다.



 DataFrame.from_records(data, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)

 

data: ndarray(structured dtype), list of tuples, dict, or DataFrame 

ndarray(구조체 자료형), 튜플의 리스트, 딕셔너리 혹은 DataFrame을 입력받는다.


index: string, list of fields, array-like

기본값은 None이다.

인덱스로 사용할 배열의 필드를 입력받는다.

이 변수가 입력될 경우 입력 데이터에서의 인덱스 레이블은 무시된다. 


exclude: sequence

기본값은 None이다.

출력데이터에서는 제외할 열 혹은 필드를 입력받는다.


columns: sequence

기본값은 None이다.

사용하기 위한 열의 레이블을 입력받는다.

입력된 data에 열의 레이블이 없는 경우에, 이 변수를 입력함으로써 열의 레이블을 입력할 수 있다.

반대로 입력된 data에 열의 레이블이 있다면, 이 변수는 결과에서 열의 순서를 설정한다. 


coerce_float: boolean

기본값은 False이다. 

문자열이 아니고 숫자형 객체가 아닌 자료형(예제: decimal.Decimal)을 float 형태로 변환하는 것을 시도한다. 

이는 SQL 결과 세트로 만드는데 유용하다.


nrows: int 

기본값은 None이다. 

data가 이터레이터가 입력됬을 시 읽어들이는 열의 수를 설정한다. 



 

 

 

 

 참고자료

  https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html

  https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html

  https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_records.html

 

 

 

 


반응형

댓글