Data Analysis & AI/E-commerce Data Analysis

Data analysis using python_D8. 13rd of Sep, Mon.

makeany 2021. 9. 13. 17:41

Ch02. 고객별 연간 지출액 예측 - 09. 파이썬 Tip 1. Numpy와 Pandas

 

넘파이 설명.

넘파이, 판다스 모두 데이터를 다루기 위한 모듈. 

리스트 개념. 대괄호로 묶여 있는 일련의 데이터 집합. 쉼표로 나눈다. '' 쓰기도 한다. 

 

넘파이에서 리스트 데이터를 불러와 보면,

  

또는 이렇게 된다.

  

넘파이를 넘파이 어레이라는 형태로 불러오는게 일반적이다. 명령어는 np.array.

 

넘파이 어레이라는 데이터 타입으로 변형이 것이다. 보기에는 같지만 앞의 리스트와 넘파이 어레이는 전혀 다른 형태이다.

a, b 어레이로 불러오면 두개의 리스트를 감싸고 있는 형태를 있다.

 

넘파이는 2차원 행렬을 굳이 이렇게 표현을 해준다.

가독성은 떨어지지만, 넘파이 어레이의 가장 장점은 연산이 굉장히 빠르다 계산 시간이 단축된다. 나중에 딥러닝할 다른 알고리즘에 비해 엄청난 연산이 필요하다.  그래서 GPU 필요한거고. 거기서 연산을 때도 넘파이 형태로 계산이 된다.

넘파이 데이터를 경우가 많지는 않다. 하다보면 특정 펑션에서는 넘파이를 써야 경우도 생긴다. 어떤 펑션을 쓸때 판다스를 집어 넣었는데 결과물은 넘파이로 바뀌어서 나올 수도 있다. 

넘파이는 판다스와 상호호환이 가능하다. 만약에 넘파이나 또는 판다스여야 한다고 에러가 생기면 편하게 넘파이나 판다스로 바꾸어 주면 된다. 호환 되니까.

 

판다스 설명.

판다스는 넘파이에 비해서 훨씬 자주 접한다. 판다스는 가지 데이터 형태가 있다. 첫째는 '판다스 시리즈', 다른 '판다스 데이터 프레임' 이라는 이름이다. 시리즈와 데이터 프레임의 차이는 시리즈는 1차원 데이터, 데이터 프레임은 2차원 데이터 이다.

여기에서 보면 첫번째 숫자가 1 시작하지 않고 0부터 시작한다. 따라서 인덱싱을 해줄 때도 첫번째를 지칭할 1 아닌 0 지정해야 한다. 헷갈리지 맙시다.

  

컬럼 이름을 바꾸어 보자. columns 써주고 리스트 형태로 텍스트를 써준다.

  

행의 이름도 바꾸어 보면 이름은 index. x, y 바꾸면,

  

x, y, a, b, c 컬럼과 행의 이름이고 안에 있는 부분이 데이터 값들이다. 

이번엔 판다스 시리즈를 보자. 시리즈는 1차원 데이터이다. 줄만 나올 있다. 1, 2, 3 이렇게. 앞의 0, 1, 2 그냥 행의 이름이다. (Value) 착각하지 말자. 

  

판다스 데이터 프레임과 판다스 시리즈는 서로 연결된 관계이다. 

일단 이커머스 데이타를 불러와 보자.

  

아까 실행해본 데이터 프레임 형태와 비슷하게 불러와 졌다. 그렇다. 지금 이커머스 데이터는 데이터 프레임으로 불러와 지는게 맞다. csv 엑셀 파일을 판다스에서 불러오면 자동으로 판다스 데이터 프레임으로 불러온다.

  

이걸 확인할 있는 방법은 type이란 명령어를 쓰면 된다. 여기에서 보듯이 DataFrame으로 불러와 졌다.

  

리니어 리그레션 간단하게 인덱싱을 보여줬다. 판다스 데이터 프레임과는 다르게 컬럼 이름이 없어지고 내려가 있고 색깔 구분도 없어졌다. 

  

타입이 뭔지 확인해 보자. 시리즈 형태다. 이게 무슨 말이냐면, 한줄만 불러오면 판다스 시리즈로 불러와 지고 줄을 불러오면 2차원이 되었기 때문에 판다스 데이터 프레임이 되는 거다.

 

판다스 시리즈 말고 판다스 프레임을 써야 상황인데 밖에 없다. 이걸 억지로라도 프레임으로 불러오고 싶다면,  pd.DataFrame안에 집어넣어서 불러오면 된다. 지금 1 x 500이라는 데이터 프레임 형태로 불러와 졌다. 판다스는 기본적으로 하나의 컬럼일 때는 데이타 프레임 형태를 지원하지 않고 데이터 시리즈로 불러온다. 만약에 바꿔줘야 한다면 이런 식으로 데이터 프레임과 시리즈를 오고 있다. 

  

경우에 따라서 가지 타입을 동시에 사용하면 문제가 발생할 수도 있다. 어떤 특정 펑션에서 특정 데이터 타입을 요구할 수도 있다. 그럴때 바꿔서 에러를 없앤다.

 

넘파이와 판다스 데이터 프레임간의 호환성을 살펴 보자. 위에서 실행한 넘파이 어레이다

 

이걸 pd.DataFrame으로 감싸서 변환하면 넘파이 형태도 데이터 프레임으로 다시 바뀐다.

 

반대도 해보자. 이커머스 데이터를 np.array 써서 넘파이 어레이로 바꾸면 이렇게 되는데, 보기엔 어수선해도 잘 불러와 진거다. 

따라서 필요에 따라서 서로 바꾸어서 쓴다. 

, 어떤 펑션을 쓰면 넘파이로 나올때도 있다. 데이터 프레임으로 받고 싶은데 결과값이 넘파이로 나오면 데이터 프레임 형태로 바꾸고 컬럼이름을 다시 지정해준다. 예를 들어, 스탠다드 스케일링(Standard Scaling) 펑션 값이 넘파이 어레이로 나오는데 이럴때 데이타 프레임으로 바꾸어주는 수고가 필요하다.

정리하자면,

판다스와 넘파이에 대한 기본적인 개념 즉, 모두  데이터를 처리하는 기법 중에 하나다. 데이터의 각각 다른 형태인데 밸류는 똑같고 데이터 타입은 서로 호환이 가능하다. 우리는 판다스를 더 많이 쓰게 될거고, 기본적으로 판다스 데이터 프레임이 우리가 다루어야 할 기본적인 데이터 형태이다.