isin() 사용해서 데이터 프레임에서 데이터 값으로 행 추출하는 방법
데이터 프레임에서 데이터 값으로 그 행을 가져오는 방법은 isin 함수를 사용하는 것이다.
isin 함수를 사용하지 않고 데이터 프레임 필터 기능을 사용해서 가져오는 방법도 물론 가능한데
이 경우 여러개를 가져오고 싶을때 여러번 써줘야 한다는 단점이 있다.
지정하려는 데이터가 있는 열을 index로 지정하여 가져오는 방법도 있지만, 그 데이터가 이후에 접근해야 하는 데이터라면 index에서 다시 데이터로 변환해주어야 하기 때문에 isin 함수를 사용하는 것이 편리할 것이라 생각한다.
코드로 보면 더 이해가 될 것 같다.
1. 데이터 프레임 준비
import numpy as np
import pandas as pd
score = {'Year' : ['2016', '2017', '2018', '2019', '2020', '2021', '2022'],
'Mary': [90, 68, 70, 80, 92, 68, 78],
'Kate': [90, 68, 70, 80, 92, 68, 78],
'Mark': [39, 59, 60, 73, 84, 87, 92],
'Maxi': [83, 92, 71, 56, 79, 93, 85],
'Jess': [np.nan,0, 0, 0, 44, 74, 49]}
df = pd.DataFrame(score) # 임의의 데이터프레임을 생성했음
df
임의의 데이터 프레임 df를 만들었다.
이전 글에서 사용했던 데이터 프레임을 재활용 한 것이다.
2. 데이터 프레임 필터 기능 이용하기
여기서 2019년도의 데이터를 가져온다고 하자.
df_filter = df[df['Year'] == "2019"]
df_filter
이렇게 df의 'Year' 열이 '2019' 인 행을 모두 가져왔다.
만약 2019년도랑 2022 년도 데이터 두 개를 한 번에 가져오려면 ?
df_1 = df[(df['Year'] == "2019")]
df_2 = df[(df['Year'] == "2022")]
# 하나씩 만든 다음 concat으로 합쳐주어야 함
df_filter = pd.concat([df_1, df_2])
df_filter
이렇게 데이터 프레임의 필터를 사용하게 되면 여러개를 가져와야 할 경우 concat을 써줘야 해서
두 개가 아니고 만약 다섯 개를 가져와야 한다면 정말 번거로울 것이다.
*참고* 여기서 index 를 reset 하려면
df_1 = df[(df['Year'] == "2019")]
df_2 = df[(df['Year'] == "2022")]
df_filter = pd.concat([df_1, df_2], ignore_index=True) # ignore_index 를 True로 해주면 됨!
df_filter
index가 0, 1로 잘 reset 된 것을 확인할 수 있다. 그냥 참고
2. isin 함수 사용하기
isin 함수를 사용해서 2019년도 데이터를 가져와보자.
isin( [이렇게 리스트 형식으로 데이터를 적어주어야 한다.] )
df_isin = df[df['Year'].isin(['2019'])]
df_isin
만약 2019년도랑 2022 년도 데이터 두 개를 한 번에 가져오려면 ?
df_isin = df[df['Year'].isin(['2019', '2022'])]
df_isin
이렇게 데이터를 여러개 가져오고 싶을 때는 isin을 사용하는 것이 훨씬 편하다.
*참고* 여기서 index 를 reset 하려면
df_isin = df[df['Year'].isin(['2019', '2022'])].reset_index(drop = True)
df_isin
index가 0, 1로 잘 reset 된 것을 확인할 수 있다. 그냥 참고
만약 2019년도랑 2017, 2020, 2022 년도 데이터를 모두 한 번에 가져오려면 ?
year = ['2017', '2019', '2020', '2022']
df_isin = df[df['Year'].isin(year)].reset_index(drop = True)
df_isin
이렇게 잘 가져와진 것을 확인할 수 있다.
이렇게 가져오는 경우 Year을 여전히 열로 접근할 수 있다는 점이 장점이다.
df_isin['Year'] 이 가능하다는 것이다.
'self.python' 카테고리의 다른 글
[python] 0 으로 채워진 데이터 프레임 만들기! - zeros (0) | 2022.05.31 |
---|---|
[python] 데이터프레임 조건에 맞는 행 index 뽑아오기 - index (0) | 2022.05.30 |
[python] 데이터 프레임 행(row) 추가하기 (0) | 2022.05.22 |
[python] 입력 받은 수를 이진수 변환 - 재귀함수 이용 (0) | 2022.05.20 |
[python] loc , iloc 으로 행 데이터 접근하기 (0) | 2022.05.19 |
댓글