AI/부스트 코스

[부스트캠프 AI Tech 3기 Pre-Course] 꼭 알아야 하는 파이썬 기초 지식Python Data Analysis Library Panel Data (Pandas 1)

hae-koos 2021. 12. 7. 04:57
728x90
반응형
모든 게시물은 macOS Monterey 12.0.1 버전을 기준으로 작성하였습니다.
부스트캠프 AI Tech 3기 예비 캠퍼를 위한 Pre-Course 강좌를 바탕으로 작성하였습니다.

https://www.boostcourse.org/

 

Pandas

 

구조화된 데이터의 처리를 지원하는 Python 라이브러리이다.

Python계의 Excel이라고 이해를 하면 좋다.

Numpy와 통합하여 강력한 "스프레드시트" 처리 기능을 제공한다.

Tabular Data를 다룸에 있어 가장 최적화 되어있는 도구이다.

 

 

 

sep는 data를 나누는 기준이고, regular expression으로 되어있다.

s는 single blank에 +는 여러개라는 의미를 가지고 있기에

즉, 띄어쓰기가 여러개 있을텐데 이를 separation 기준으로 삼겠다.

header는 column 값에 들어가는 앤데 굳이 지정하진 않겠다.

 

리스트 형태로 df_data.columns에 넣어주면 column에 이름이 생긴다.


Series

 

 

 

series는 하나의 column vector를 표현하는 object로

series가 모여 Data Frame을 구성한다.

series data의 인덱스를 문자로 지정할 수 있다는 점에서 numpy와 다르다.

 

 

아래는 자주 사용하는 함수들이다.

 

 

series data는 기본적으로 index가 기준이 되기에 index만 존재하는 부분에는

NaN값이 해당 index의 값으로 표시된다.

 

Data Frame

 

 

 

Index와 Column을 모두 알아야 한다.

 

 

DataFrame을 정의해서 만드는 경우는 거의 없고, csv나 엑셀 불러와 사용한다.

그 indexing 방법이 특이한데 아래와 같다.

loc은 인덱스 이름, iloc은 인덱스 넘버다.

 

추가적으로 column을 없애는 방법에는 두 가지가 있는데

 

df.drop("column 이름", axis = 1)
del df["column 이름"]

 

첫 번째는 df 자체의 변화는 없고, drop된 df를 출력해주는 것이다.

두 번째는 메모리 주소 자체를 삭제해서 다시 호출하면 그 column 제거되어 있다.


Selection & Drop

 

Data Frame을 분석해야 할 경우 df.head()를 사용하는 것도 좋지만

보기 좋게 하는 방법은 df.head(n).T 로 전치하는 것이다. 아래 사진을 보자.

 

 

아래 전치를 한 데이터 프레임이 눈에 더 잘 들어오는 것을 확인할 수 있다.

또, df["account"]로 출력하면 Series 형태로 출력되고,

df[["account"]]로 출력하면 Data Frame 형태로 출력된다는 것에 유의하자.

 

 

같은 결과를 추출하는 세 가지 방법에 대해 알아보자.

첫째, column 이름을 넣은 데이터 프레임을 만들어 index를 통해 가져오는 방법

둘째, loc을 통해 row의 인덱스 이름을 쓰고 column 이름을 넣는다.

-> index 명을 기억하는 경우에 사용할 수 있어서 인덱스를 굳이 안바꾸는 것 추천.

셋째, iloc을 통해 리스트 인덱싱하는 방법과 유사하게 가져오는 방법.

 

편한 방법을 선택하면 좋지만 둘째 방법을 많이 이용하는 것이 데이터를 불러서

할당하는 경우에 더욱 좋다고 하니 익숙해지자.

셋째 방법을 이용하고 싶어서 기존 인덱스를 없애고 싶다면

df.reset_index(inplace = True)를 사용할 수 있는데 여기서 inplace를 True로

두면 df 자체가 변화한다. (보통 original df는 두고 다른 객체 만들어 활용)


Data Frame Operations

 

Index가 겹쳐야만 계산을 하고, 겹치지 않으면 NaN 값이 들어간다.

fill_value = 0으로 넣어줌으로써 NaN 대신에 0을 넣어줄 수도 있다.

 

 

Series와 Data Frame의 계산을 그냥 더해주면 모두 NaN 처리되지만

axis로 기준을 정해주면 Broadcasting이 일어나 계산이 가능하다.

 

 

lambda, map, apply

 

 

map 함수는 아래와 같이 가장 많이 사용된다. dataframe의 성별을 str이 아닌

int로 코드화시키고 싶다면 df.sex.map({"male" : 0, "female" : 1}) 을 통해

column을 추가할 수 있다.

 

 

혹은 성별 column 자체를 성별코드로 바꾸고 싶다면 아래와 같이

replace 함수를 활용할 수 있는데 사전형 혹은 리스트 두 개를 활용한다.

 

 

 


Pandas Built-in Functions

 

필요할 때마다 찾아서 쓰겠지만 자주 사용되는 것을 정리해놓자.

 

\

 

데이터 프레임을 관찰하려고 df.head()를 사용할텐데 그냥 사용하면

사이가 ... 으로 나오고 끝 부분 데이터가 나오는 것을 확인할 수 있다.

이를 조절하기 위해 pd.options.display.max_rows = 숫자 를 이용하여

출력값에 보이는 데이터프레임의 최대 행을 결정할 수 있다.

728x90
반응형