-
pandas 데이터 분석 2 - 데이터 프레임 슬라이싱(loc, iloc), 데이터 필터링(isin)데이터분석/파이썬 2021. 12. 4. 13:22반응형
https://kbkb456.tistory.com/76
샘플 데이터
저번 시간에는 pandas에서 csv, 엑셀, json 파일을 데이터 프레임으로 가져오는 법에 대해서 배웠습니다. 오늘은 데이터 프레임을 슬라이싱 하고 데이터를 필터링해서 가져오는 법을 알아보도록 하겠습니다.
데이터 슬라이싱?
데이터 슬라이싱이란 데이터 프레임을 원하는 칼럼이나 크기로 잘라서 오는 행위를 말합니다.
pandas 데이터 프레임에서 데이터 프레임을 슬라이싱은 loc와 iloc 함수를 통하여 가능합니다.
해당 예시 데이터를 가지고 슬라이싱을 해보도록 합시다.
1. loc
loc는 행과 열의 조건을 가지고 데이터 프레임을 가져오는 함수입니다.
문법
- 데이터프레임. loc [데이터프레임[칼럼] == 행 조건 , 가져오고 싶은 열]
만약 위의 데이터 프레임에서 2월에서 이름과 야근 열(칼럼)을 가져온다고 생각해봅시다.
행 조건 : 월 == 2 -> 2월
열 조건 : ["이름", "야근"] -> 두 개의 칼럼
df.loc[df['월'] == 2,["이름","야근"]]
이런 식으로 코딩이 가능할 것입니다.
실행결과
그럼 만약에 2월에서 이름부터 수당까지 전부 가져오고 싶다고 생각해봅시다.
행 조건 : 월 == 2 -> 2월
열 조건 : "이름":"수당"-> 이름부터 전체의 칼럼
df.loc[df['월'] == 2,"이름":"수당"]
이런 식으로 코딩이 가능할 것입니다.
실행결과
2. iloc
iloc는 행과 열의 각각 인덱스로 데이터 프레임을 가져오는 것입니다. 여기서 인덱스는 각각 행렬의 위치를 이야기합니다. (인덱스는 파이썬 리스트에서 설명해두었습니다!)
문법
- 데이터프레임.iloc[시작 행 인덱스: 끝 행 인덱스 + 1 , 시작 열 인덱스: 끝 열 인덱스 + 1]
만약 첫 번째부터 세 번째 행을 가져오고 열은 두 번째부터 세 번째를 가져온다고 생각해봅시다.
행 : 첫 번째부터 세 번째 행
열 : 두 번째부터 세 번째 열
df.iloc[1:4,2:4]
이런 식으로 코딩이 가능할 것입니다. 보시면 세 번째 행을 가져오고 싶은데 4로 코딩한 게 보이시죠? 마지막에 원하는 행에 +1을 해줘야 원하는 행까지 출력이 됩니다.
실행결과
만약 첫 번째부터 세 번째 행인데 열은 전체를 들고 오고 싶다고 생각해봅시다.
행: 첫 번째부터 세 번째
열: 전체
df.iloc[1:4,:]
전체를 가져오고 싶을 때는 : 만 입력해주시면 됩니다.
실행결과
3. 하나의 칼럼만 가져오기
데이터 프레임에서 하나의 칼럼만 가져오고 싶다면 어떻게 해야 할까요?
문법
- 데이터프레임[컬럼명]
df["이름"]
이런 식으로 가능합니다.
데이터 필터링
데이터 필터링은 데이터 프레임에서 데이터를 원하는 조건으로 필터링하는 것으로써 보통 loc를 활용하여하는 경우가 많습니다.
어느 날 김대리가 야근을 2일 이상한 사람의 명단을 이름만 뽑아보고 싶다고 합니다.
이럴 땐 어떻게 뽑아볼 수 있을까요?
조건: 야근을 2일 이상 할 것
칼럼: 이름
df.loc[df['야근'] >= 2, "이름"]
이런 식으로 행 조건에 조건을 걸 수 있을 것입니다.
isin을 활용한 필터링
isin은 해당 칼럼에서 그 값들이 존재하는지 확인해주는 함수입니다.
만약 이름이 a, b인 사람들의 전체 데이터를 가져오고 싶다고 해봅시다.
조건: 이름이 a이거나 b일 것
열: 전체
df.loc[df['이름'].isin(["a","b"]), :]
이런 식으로 코딩이 가능할 것입니다. 조건이 2개 이상인 경우 대괄호로 묶어서 리스트로 만들어 주셔야 합니다.
오늘은 데이터를 슬라이싱 하고 필터링하는 법에 대해서 배웠습니다. 여러 개의 데이터셋을 조인하고 칼럼명을 바꾸는 법에 대해서 배워보도록 하겠습니다.
https://colab.research.google.com/drive/1zO7mDkQUv3dbp7PiisXgjGR7V90dBRIc?usp=sharing
반응형'데이터분석 > 파이썬' 카테고리의 다른 글