빅데이터 분석기사[python]/pandas와 기본 데이터 처리

[python 파이썬, pandas 판다스] pandas와 numpy 전환

sunning 2022. 5. 11. 20:37
728x90

판다스와 넘파이는 서로 간단하게 변환이 가능하다. 머신러닝, 딥러닝에서는 numpy로 분석해야 연산의 속도가 빨라지기 때문에 pandas로 기본 분석을 수행한 후 넘파이로 변환하여 머신러닝이나 딥러닝을 수행한다. 반면에 numpy는 데이터를 눈으로 확인하기 어려워 pandas로 변환하여 데이터를 확인한다.

 

1) 판다스(pandas)를 넘파이(numpy)로 변경하기 : df.to_numpy()

먼저 판다스로 데이터프레임 형태의 데이터를 불러오자.

 

import pandas as pd

DF = pd.read_csv('IRIS.csv', engine = 'python')
DF.head()

 

 

이것을 DF.to_numpy()를 사용하면 간단히 numpy로 변경하여 불러올 수 있다. 하지만 이때 넘파이로 변환하면 행 인덱스와 열 이름을 지정할 수 없다는 것이 단점이다.

 

NP = DF.to_numpy()
NP

 

 

2) 넘파이(numpy)판다스(pandas)로 변경하기 : pd.DataFrame(넘파이)

다음은 아래의 A와 같은 넘파이 행렬을 판다스로 변환해보자. 

 

import numpy as np

A = np.array([
    ['Minsoo','Minju','Yeomin','Hyeri','Junghun','Sunny','Bummee','Luna'],
    [33,25,19,25,32,36,23,36],
    ['M','W','W','W','M','W','M','W'],
    [91,50,69,98,72,85,43,61], 
    [65,77,56,82,79,91,71,63],
    [30,95,64,88,34,69,15,25],
])

 

A. 인덱스 없이 데이터프레임 만들기

간단히 pd.DataFrame()의 괄호 안에 A를 넣어주면 된다. 이때는 넘파이 형태 그대로 데이터프레임이 만들어지는데 그럼 행과 열을 뒤집고 싶으면 어떻게 하면 될까?

DF1 = pd.DataFrame(A)
DF1

 

B. 인덱스 없이 데이터프레임 만들기 (행과 열 전치하기)

행과 열을 전치한 데이터프레임을 만들고싶다면 numpy이름.T를 사용하여 전치한 후에 그것을 데이터프레임 형태로 변환하면 된다.

 

DF2 = pd.DataFrame(A.T)
DF2

 

 

C. 특정 칼럼명을 사용하여 데이터프레임 만들기

A와 B의 경우 칼럼 이름을 지정해주지 않아서 0부터 5까지의 번호가 매겨진 것을 확인할 수 있다. 이때 특정 칼럼명으로 설정하고 싶다면 columns = []를 사용하여 칼럼명을 지정해주면 간단히 해결할 수 있다.

 

DF3 = pd.DataFrame(A.T, columns = ['name','old','sex','score1','score2','time'])
DF3

 

728x90