생각하는감자

Dataframe (3) 본문

Pandas

Dataframe (3)

토킹감쟈 2023. 3. 17. 15:31

행, 열 선택하기/필터 하기

 

import pandas as pd

book_list = [
	['name', ['The Call of Character', 'The Giver', 'Selfish Gene']],
    	['number', [2302, 1905, 2110]],
    	['location', ['A14-6', 'D03-8', 'J06-11']]
]

df = pd.DataFrame.from_items(book_list)

위와 같은 데이터프레임을 만들었다고 가정하고,

2번째와 3번째 정보만 보고 싶으면 간단하게 df[1:3]라는 명령어를 사용하면 된다.

*파이썬에선 배열의 정보를 불러올 때 첫 번째 값(예시에선 1)은 포함을 하고, :(콜론) 뒤에 오는 값(예시에선 3)은 포함하지 않는다.

 

여기서 주의할 점은 해당명령어는 데이터프레임 내의 정보를 확인하는 용도일 뿐이지 해당 데이터프레임이 완전히 바뀐 것이 아님을 알아야 한다.

만약 데이터프레임 자체를 바꾸고 싶다면,

df = df[1:3]

위와 같은 명령어를 통해 데이터프레임에 적용시켜주어야 한다.

 

 

비슷한 역할을 하는 다른 명령어는 loc이다.

df.loc[[0,2]]

해당 명령어는 0번째행과 2번째 행의 정보를 불러와준다. 위와 마찬가지로 데이터프레임에 적용되는 사항이 아니라 그저 정보를 보기 위함임을 주의해야 한다. 데이터프레임자체를 바꾸고 싶다면 df = df.loc[[0,2]] 라고 해주면 된다.

 

 

 

"column condition에 따라 row를 선택한다"

column의 정보에 제한을 걸어 정보를 확인할 수 있다는 것이다. 예를 들어 위의 리스트에서 number가 2300 이하인 것만 뽑아내고 싶다고 한다면,

df[df.number < 2300]

df.query('number<2300')

위의 두 가지 명령어를 통해 확인할 수 있다.

만약, 두 가지 condition을 정의하고 싶다면, 아래와 같이 작성하면 된다.

df[ (df.number<2300) & (df.title == 'Selfish Gene') ]

 

 

"column을 필터링하기"

  • index 사용
df.iloc[:,0:2]

iloc 내부에 들어가는 값 중 콤마 앞부분은 row(행)이다. 

콜론(:)은 데이터프레임 내부의 모든 row 값을 불러오는 것을 의미한다. 콤마 뒷부분은 column(열)이다.

위의 명령어처럼 작성했을 경우 0번부터 1번 row를 가지고 싶다는 것을 의미한다.

 

  • column 이름 사용

만약 만들어둔 데이터프레임에서 'location'정보가 필요 없는 새로운 데이터프레임을 만든다고 하면 아래와 같다.

df_filtered = df[['title','number']]

 

 

filter라는 함수를 사용할 수도 있는데,

df.filter(items=['title','number'])

라고 하면 title과 number만 있는 것을 확인할 수 있다.

 

 

또한, 다른 방식을 생각해 보면, 만약 column 이름에 'e'가 들어간 것만 추출하고 싶다고 해보자. 

df.filter(like='e', axis=1)

column은 언제나 축이 1이기 때문에 위와 같이 작성해 주면 title과 number에 해당하는 정보들만 추출될 것이다.

 

 

'Pandas' 카테고리의 다른 글

Dataframe (5)  (0) 2023.03.18
Dataframe (4)  (0) 2023.03.17
Dataframe(2)  (0) 2023.03.11
Dataframe(1)  (2) 2023.03.10
Pandas, Dataframe, Series  (1) 2023.02.13