본문 바로가기
Boostcamp

[부스트캠프]Pandas 정리

by Yonghip 2023. 3. 18.

Pandas는 Numpy보다 처음보는 문법이 많았고 내용도 방대해 내용이 상당히 길다.

말이 정리지 사실상 강의 내용의 대부분을 따라쳐보고 출력을 확인하는 과정을 포스팅해보겠다.

 

 

 

Dataframe functions

loc, iloc

loc은 dataframe의 index를 기반으로

iloc는 dataframe의 row기준 순서를 기반으로 행을 슬라이싱 or 인덱싱한다.

체크해야할 부분은 괄호로 ( )가 아니라 [ ]를 쓴다는 점!

temp = [[i+1,i+2,i+3,i+4,i+5]for i in range(10)]
df = pd.DataFrame(temp).T
df.index = ["a","b","c","d","e"]

prnt(df)
print(df.loc["a"])
print(df.iloc[0])
   0  1  2  3  4   5   6   7   8   9
a  1  2  3  4  5   6   7   8   9  10
b  2  3  4  5  6   7   8   9  10  11
c  3  4  5  6  7   8   9  10  11  12
d  4  5  6  7  8   9  10  11  12  13
e  5  6  7  8  9  10  11  12  13  14

0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
Name: a, dtype: int64


0     1
1     2
2     3
3     4
4     5
5     6
6     7
7     8
8     9
9    10
Name: a, dtype: int64

상당히 보기힘든데...이번글만 이미지 설명으로 대체하겠다.

 

basic, loc, iloc을 이용하여 원하는 행렬을 뽑는 예

 

 

 

 

drop, del

drop은 값을 삭제하므로 원래 값을 삭제하려면 inplace=True로 설정하거나 원래 데이터에 넣어줘야한다.

del은 메모리 기반 삭제이므로 사용 시 바로 데이터프레임이 변경됨

 

 

 

 

 

map, replace, apply

map을 이용해서 Series의 모든 값에 원하는 함수 적용가능

replace는 dictionary를 기반으로 Series의 값 중 원하는 값만 변경 가능

apply는 Dataframe전체 값에 한번에 함수를 적용함

 

Dataframe과 Series에 적용되는 함수가 각각 다르며

Series에 적용가능한 모든 함수는 Dataframe[컬럼명]에서 반환되는 Series에 사용가능

 

 

 

Groupby

이전까지가 1강이고 Groupby부터 2강인데 내용이 상당히 어려워진다.

 

Groupby연산은 대게 categorical데이터에 적용되므로 이를 위한 컴럼 두개를 추가했다.

 

 

 

Groupby

df.groupby(컬럼명)으로 범주형 컬럼을 기준으로 데이터프레임을 쪼개 연산할 수 있다.

 

 

 

 

두개 이상의 범주에도 적용가능하다.

 

 

 

unstack, reset_index

unstack은 2개 이상의 index로 묶여진 Series를 Dataframe으로 만들어준다

reset_index는 모든 index를 없애고 Dataframe의 column으로 만들어준다

 

 

조금 신기한점은 Series뿐만 아니라 Dataframe에도 동일한 함수가 있다는 점

아마 하나 이상의 컬럼에서 값을 뽑아낼때 사용할때 편의를 위해 있는거라 생각한다.

 

 

swaplevel

Multiindex의 index의 순서를 바꿔줌

3개이상인 경우엔 매개변수를 이용해 바꿔줄 인덱스 지정 가능

 

이후에 groupby group간 연산, pivot_table과 crosstab을 활용하여 groupby와 유사한 기능을 사용해보는데

딥러닝 및 머신러닝 데이터 전처리를 위해 사용할 내용은 이정도면 충분할꺼라 생각한다 

솔직히 너무 많은 내용을 머리에 때려박으니 더이상 읽지를 못하겠다...

Merge, Concat

merge

특정 열을 기준으로 Dataframe을 합칠 수 있다.

특정인덱스를 공유하는 df를 두개 생성했다.

 

 

 

merge를 통해 둘을 합칠 수 있고 how에 [inner, join, left, right]중 하나를 넣어 범위를 지정할 수 있다.

 

 

 

 

concat

같은 column을 가진 Dataframe을 하나로 묶어준다

 

 

 

column명이 다를시 불가능!(axis=1 설정 시에는 col이 연장되므로 가능함)

 

 

Appendix

 

pd,read_csv( )사용시 sep에 정규표현식 지정 가능

data_url = "/temp/url"
data = pd.read_csv(data_url, sep="\s+")

감상은 넘파이와 비슷하다. 복습할 수 있는 좋은 기회였으나

Groupby이후부터는 Dataframe을 이용해 이런기능이 가능하구나...하면서 그냥 입이 벌어진 상태로 들었다.