Pandas의 SQL 쿼리 스타일에서 데이터 하위 집합을 선택하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-31 10:13:10
앞으로
1150명이 탐색했습니다.

如何在 Pandas 的 SQL 查询样式中选择数据子集?

소개

이 게시물에서는 Pandas를 사용하여 SQL 스타일 필터링으로 데이터 분석을 수행하는 방법을 보여 드리겠습니다. 대부분의 기업 데이터는 검색 및 조작을 위해 SQL이 필요한 데이터베이스에 저장됩니다. 예를 들어 Oracle, IBM, Microsoft와 같은 회사는 자체 데이터베이스와 SQL 구현을 보유하고 있습니다.

데이터가 항상 CSV 파일에 저장되는 것은 아니기 때문에 데이터 과학자는 경력의 특정 시점에서 SQL을 처리해야 합니다. 저는 회사의 대부분의 데이터가 Oracle에 저장되어 있기 때문에 개인적으로 Oracle을 사용하는 것을 선호합니다.

시나리오 – 1 영화 데이터세트에서 다음 기준을 가진 모든 영화를 찾는 작업이 있다고 가정해 보겠습니다.

  • 영화의 언어는 영어(en) 또는 스페인어(es)이어야 합니다.
  • 영화의 인기도는 500~1000 사이여야 합니다.
  • 영화 상태가 공개되어 있어야 합니다.
  • 투표수는 5000개 이상이어야 합니다. 위 시나리오의 경우 SQL 문은 다음과 같습니다.
SELECT
FROM WHERE
title AS movie_title
,original_language AS movie_language
,popularityAS movie_popularity
,statusAS movie_status
,vote_count AS movie_vote_count movies_data
original_languageIN ('en', 'es')

AND status=('Released')
AND popularitybetween 500 AND 1000
AND vote_count > 5000;
로그인 후 복사

이제 요구 사항에 맞는 SQL 문을 확인했으므로 Pandas를 사용하여 단계별로 실행해 보겠습니다. 두 가지 방법을 보여드리겠습니다.

방법 1: 부울 인덱스

1 Movies_data 데이터세트를 DataFrame에 로드합니다.

import pandas as pd movies = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
로그인 후 복사

각 조건에 변수를 할당하세요.

languages = [ "en" , "es" ] condition_on_languages = movies . original_language . isin ( languages )
condition_on_status = movies . status == "Released"
condition_on_popularity = movies . popularity . between ( 500 , 1000 )
condition_on_votecount = movies . vote_count > 5000
로그인 후 복사

3. 모든 조건(부울 배열)을 결합합니다.

final_conditions = ( condition_on_languages & condition_on_status & condition_on_popularity & condition_on_votecount )
columns = [ "title" , "original_language" , "status" , "popularity" , "vote_count" ]
# clubbing all together movies . loc [ final_conditions , columns ]
로그인 후 복사

title

original_언어

status

popularity

vote_count

< p>
95별

zh

게시됨

724.247784

10867

< /td>

788 데드풀

zh

게시됨

514.569956

10995

방법 2:- .query() 방법.

.query() 메서드는 SQL where 절 스타일로 데이터를 필터링하는 메서드입니다. 조건은 문자열로 이 메서드에 전달될 수 있지만 열 이름에는 공백이 포함되어서는 안 됩니다.

열 이름에 공백이 있으면 Python 바꾸기 기능을 사용하여 밑줄로 바꾸세요. < /p>

내 경험에 따르면 query() 메서드는 더 큰 DataFrame에 적용할 때 이전 메서드보다 더 빠르다는 것을 발견했습니다.

import pandas as pd movies = pd . read_csv ( "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" )
로그인 후 복사

4. 쿼리 문자열을 작성하고 메서드를 실행합니다.

.query 메서드는 여러 줄에 걸쳐 있는 삼중 따옴표 문자열에서는 작동하지 않습니다. ㅋㅋㅋ

인기

출시일 95724.247784

Relationship

프로그래밍 방식으로 값을 Python 목록으로 생성하고 (@)과 함께 사용할 수도 있습니다. ㅠㅠ

수익

런타임

st

165000000

157336

zh

interstellar

5월 11일 2014

675120017

169.0

관계

788

5 8000000

293660

zh

다이 웨이터

514.569956

2016년 9월 2일

783112979

108.0

p>외 다수, 일반적으로 내 코딩에는 여러 값이 있습니다. ​​내 "in" 절을 확인하려고요. 따라서 위의 구문은 이상적이지 않습니다. Python 변수는 at 기호(@)를 사용하여 참조할 수 있습니다.

인기

출시일

수익

런타임

st

95

165000000783112979관계

157336

zh

interstellar

724.247784

2014년 5월 11일 000000

293660

zh

Deadpool

514.569956

2016년 9월 2일

108.0

위 내용은 Pandas의 SQL 쿼리 스타일에서 데이터 하위 집합을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿