세상을 바꾸는 데이터

[Pandas] 판다스 - 데이터프레임과 넘파이 상호 변환 본문

ML/Pandas

[Pandas] 판다스 - 데이터프레임과 넘파이 상호 변환

Industriousness 2022. 1. 23. 14:42

 

DataFrame은 파이썬의 리스트, 딕셔너리, 넘파이 ndarray 등 다양한 데이터로부터 생성될 수 있다. 반대로 DataFrame은 파이썬의 리스트, 딕셔너리, 넘파이 ndarray 등으로 변환될 수 있다.

 


리스트, ndarray에서 DataFrame으로 변환

  • pandas.DataFrame( )

DataFrame은 리스트와 넘파이 ndarray와 다르게 칼럼명을 가지고 있으며, 이는 리스트와 넘파이 ndarray보다 상대적으로 편하게 데이터 핸들링이 가능하다. DataFrame은 기본적으로 행과 열을 가지는 2차원 데이터로, 2차원 이하의 데이터들만 DataFrame으로 변환이 가능하다.

 

  • 1차원 형태의 리스트와 넘파이 ndarray로부터 DataFrame으로 변환
import numpy as np
import pandas as pd

col_name1=['col1'] #칼럼명 지정
list1 = [1, 2, 3] # 데이터셋
array1 = np.array(list1) # ndarray 배열 생성

print('array1 shape:', array1.shape) # array1 shape: (3, )
df_list1 = pd.DataFrame(list1, columns=col_name1) #1차원 리스트로 만든 DataFrame
df_array1 = pd.DataFrame(array1, columns=col_name1) # 1차원 배열로 만든 DataFrame

 

  •  2차원 형태의 데이터를 기반으로 DataFrame 생성
# 3개의 컬럼명 생성
col_name2=['col1', 'col2', 'col3'] 

# 2행x3열 형태의 리스트와 ndarray 생성 한 뒤 이를 DataFrame으로 변환. 
list2 = [[1, 2, 3],
         [11, 12, 13]]
array2 = np.array(list2)
print('array2 shape:', array2.shape ) # array2 shape: (2, 3)

df_list2 = pd.DataFrame(list2, columns=col_name2) # 2차원 리스트로 만든 DataFrame

df_array1 = pd.DataFrame(array2, columns=col_name2) # 2차원 배열로 만든 DataFrame

 

  • 딕서녀리를 DataFrame으로 변환
# Key는 컬럼명으로 매핑, Value는 리스트 형(또는 ndarray)
dict = {'col1':[1, 11], 'col2':[2, 22], 'col3':[3, 33]}
df_dict = pd.DataFrame(dict) # 딕서녀리를 DataFrame으로 변환

 


DataFrame을 ndarray, 리스트, 딕셔너리로 변환

  • DataFrame.values
  • DataFrame.values.tolist( )
  • DataFrame.to_dict( )

많은 머신러닝 패키지가 기본 데이터 형으로 넘파이 ndarray를 사용한다. 따라서 데이터 핸들링은 DataFrame을 이용하더라도 머신러닝 패키지의 입력 인자 등에 적용하기 위해 다시 넘파이 ndarray로 변환하는 경우가 빈번하게 발생한다.

DataFrame을 넘파이 ndarray로 변환하는 것은 DataFrame 객체의 values를 이용해 쉽게 할 수 있으며, 매우 많이 사용된다.

  • DataFrame.values
  • DataFrame을 넘파이 ndarray로 변환
# DataFrame을 ndarray로 변환
array3 = df_dict.values
print('df_dict.values 타입:', type(array3), 'df_dict.values shape:', array3.shape)
# df_dict.values 타입: <class 'numpy.ndarray'> df_dict.values shape: (2, 3)

 

  • DataFrame.values.tolist( )
  • DataFrame.to_dict( )
  • DataFrame을 리스트, 딕셔너리로 변환
# DataFrame을 리스트로 변환
list3 = df_dict.values.tolist()
print('df_dict.values.tolist() 타입:', type(list3))
# df_dict.values.tolist() 타입: <class 'list'>

# DataFrame을 딕셔너리로 변환
dict3 = df_dict.to_dict('list')
print('df_dict.to_dict() 타입:', type(dict3))
# df_dict.to_dict() 타입: <class 'dict'>

 

판다스 데이터프레임 변환

 

 

Reference


https://github.com/chulminkw/PerfectGuide

https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C

 

 

728x90
반응형
Comments