컴퓨터/Python
Pandas를 통해 여러 정보를 정제하였다면 이제 원하는 데이터를 분석할 수 있어야 합니다.
원하는 조건들을 설정하고 정리된 수많은 데이터들 중에서 필요한 데이터를 추출할 수 있어야 합니다.
본문에서는 Pandas로 정제된 DataFrame안에서 특정 조건을 만족하는 결과를 추출하기 위한 방법에 대해서 알아보도록 하겠습니다.
Pandas에서 가장 많이 사용하는 query함수는 정제된 데이터에서 특정 조건을 만족하는 결과를 추출하기 위해 사용합니다.
DB를 다뤄보셨다면 조금 더 친숙할 수 있는 개념입니다.
문자열의 형태로 조건을 보내기 때문에 가독성과 편의성이 뛰어나다는 장점이 있습니다.
해당 함수는 아래와 같은 기능으로 조건을 형성할 수 있습니다.
기능 설명 | 표현 방법 |
비교 연산 | ==, >, >=, <, <=, != |
in 연산 (포함) | in, not in |
논리 연산 | and, or, not |
외부 변수 또는 참조 연산 | @ |
인덱스 검색 | index 또는 index이름 |
문자열 부분 검색 | 문자열 함수르르 이용(contains,startswith,endswith..) |
해당 기능들을 문자열의 형태로 호출하면 손쉽게 결과를 얻을 수 있습니다.
특정 DataFrame에 가격이 있다고 가정하고 가격이 5000원 이하인 결과를 추출한다고 가정해 봅시다.
#df는 데이터가 정리된 DataFrame
Stringquery = "Price <= 5000"
Result = df.query(Stringquery)
print(Result)
이제 각각의 기능들을 예제를 통해 알아보도록 합시다.
우선, 아래와 같은 DataFrame이 존재한다고 가정하겠습니다.
import pandas as pd
data = {"Date":[2019,2020,2021,2022],
"Price":[3000,4000,5000,6000],
"Location":["인천","서울","제주도","부산"]}
df = pd.DataFrame(data)
비교 연산자들을 이용해서 문자열을 만들어서 결과를 얻어낼 수 있습니다.
Stringquery = "Price <= 5000"
Result = df.query(Stringquery)
print(Result)
in연산은 포함 여부를 통해 조건을 형성합니다.
Stringquery = "Location in '인천'"
Result = df.query(Stringquery)
print(Result)
in에 들어오는 인자는 리스트나 튜플의 형태 또한 가능합니다.
Stringquery = "Location in ['인천','서울']"
Result = df.query(Stringquery)
print(Result)
논리적 연산 또한 지원합니다. 여러 개의 조건들을 조합할 때 유리합니다.
Stringquery = "Price <= 4000 or Location in ['부산']"
Result = df.query(Stringquery)
print(Result)
문자열의 형태로 query를 형성하기 때문에 소스코드상에서 이용되는 변수들을 사용하는 것에 제약조건이 발생합니다.
이를 극복하기 위해 문자열에서 함수 또는 외부 변수를 인식하기 위해 @ 를 사용합니다.
MyLocation = '제주도'
Stringquery = "Location == @MyLocation"
Result = df.query(Stringquery)
print(Result)
DataFrame에는 index가 존재합니다 index를 통해서도 데이터를 추출할 수 있습니다.
인덱스명을 따로 지정하지 않았다면 아래와 같이 사용하면 됩니다.
Stringquery = "index == 2"
Result = df.query(Stringquery)
print(Result)
문자열 함수를 이용해서 특정 문자로 시작, 끝나는 문자 등 다양한 조건을 입력하여 사용 또한 가능합니다.
Stringquery = "Location.str.startswith('서')"
Result = df.query(Stringquery)
print(Result)
Python - 파이썬과 아나콘다 그리고 가상환경 (0) | 2022.11.09 |
---|---|
Python - [크롤링 실습]seleniu으로 번개장터 조회하기5 (몇가지 질의 해보기) (0) | 2022.08.17 |
Python - [크롤링 실습] selenium으로 번개장터 조회하기 4 (엑셀로 출력 및 데이터 조회하기) (0) | 2022.08.03 |
Python - [크롤링 실습] selenium으로 번개장터 조회하기 3 (Pandas로 정제) (0) | 2022.08.02 |
Python - [Pandas]자료 분석을 위한 Pandas 기초 (0) | 2022.08.01 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet