※ 참고 사항 - 활용 데이터 셋은 EPL 프로 축구 리그 데이터
축구에 관심이 있으신 분들이 보면 재미있게 데이터 분석을 공부할 수 있는 좋은 데이터셋입니다. 또한 실전 데이터라고 봐도 무방할 만큼 아주 좋은 데이터셋입니다.
원래 데이터가 생긴 모습
1. Query 활용법 요약 - 1분도 길다. 결론부터!!
Query 기능 | 설명 | 코드 논리 및 예시 |
1. 비교 연산자 검색 | <, >, ==, != 등을 활용한 데이터 검색 | df.query(' column 비교연산자 숫자 ') e.g. df.query(' col != 10') |
2. in 논리 검색 | in, not in 을 활용한 데이터 검색 | df.query('column == [원하는 조건]') df.query('column == ["1","fj10","asd","b" ]') |
3. 인덱스 기준 검색 | 행(row) number을 기준으로 검색 | df.query('index 비교연산자 숫자') e.g. df.query('index < 10') |
4. 논리 연산 검색 | and, or, not 등을 활용한 검색 | df.query('원하는 조건 or/and 원하는 조건') e.g. df.query('team == "Liverpool" and jerseyno == 10') |
5. 문자열을 통한 검색 | 특정 문자가 포함 되어있는가 기준 | df.query(' 컬럼명.str.contains("찾는 문자")') df.query(' 컬럼명.str.startswith("찾는 문자")') df.query(' 컬럼명.str.endswith("찾는 문자")') |
2. Query 기능별 상세 정보
(1) 비교 연산자 검색 - 등호 & 부등호
- 등호: ==, !=
- 부등호: <, >, <=, >=
- 논리 : df.query(' 컬럼명 비교 연산자 기준 ')
- 코드 활용 예시
Q1. 첼시 선수만 추출하고 싶다면?
Q2. 이번 시즌 10골 이상 넣은 선수만 추출하고 싶다면?
1
2
3
4
5
|
## Q1 Code
r1.query('team == "Chelsea"')
## Q2 Code
r1.query('goals >= 10')
|
cs |
![]() |
![]() |
(2) in 논리 검색
- 코드 논리
방법1. query(' 컬럼명 == [원하는 조건 리스트] ')
방법2. query(' 컬럼명 in [원하는 조건 리스트] ')
- 코드 활용 예시
Q1. 미드필더와 수비스만 보고 싶다면?
1
2
3
4
5
6
|
## 기본적인 in 활용법
r1.query('position in ["Defender", "Midfielder"]')
## ==을 활용한 in
r1.query('position == ["Defender", "Midfielder"]')
|
cs |
(3) 인덱스(Row, Index) 기준 검색
- 코드 논리
방법1. query(' 컬럼명 == [원하는 조건 리스트] ')
방법2. query(' 컬럼명 in [원하는 조건 리스트] ')
- 코드 활용 예시
Q1. 특정 Row에 있는 선수가 궁금하다면?
Q2. 20골 이상 넣은 선수는? - Set Index 함수 동시 활용
1
2
3
4
5
6
|
## index의 기본 논리
r1.query('index >= 20')
## Set Index를 활용하면 원하는 정보를 더 쉽게 찾을 수 있어요
r1.set_index('goals').query('index >= 20')
|
cs |
(4) 논리 연산 - or, and, not
- 코드 논리
AND 검색. query(' 컬럼명1 원하는 조건 and 컬럼명2 원하는 조건')
→ and 논리는 "and" 혹은 "&"활용하시면 됩니다.
OR 검색. query(' 컬럼명1 원하는 조건 or 컬럼명2 원하는 조건')
→ or 논리는 "or" 혹은 " | "활용하시면 됩니다.
Not 검색. query(' 컬럼명 not in 원하는 조건 ')
→ not은 반드시 소문자로 해주셔야 합니다.
- 코드 활용 예시
Q1. 이번 시즌 3골 이상 넣고 퇴장도 당한 선수가 궁금하다면?-AND 활용 예시
Q2. 이번 시즌 한 번이라도 카드를 받은 선수가 궁금하다면?-OR 활용 예시
Q3. 특정 팀들 이외의 선수를 조회하고 싶다면?-NOT 활용 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
## AND 조건 활용 예시
r1.query('goals >= 3 and redcards >= 1')
r1.query('goals >= 3 & redcards >= 1')
## or 조건 활용 예시
r1.query('yellowcards >= 1 or redcards >= 1')
r1.query('yellowcards >= 1 | redcards >= 1')
## not 조건 활용 예시
r1.query('team not in ["Liverpool", "Everton"]')
|
cs |
(5) 문자열(String)을 통한 검색
- 논리
함수1. 특정 문자열의 포함
query( ' 컬럼명.str.contains("문자열") ' )
함수2. 특정 문자로 시작하는 데이터
query( ' 컬럼명.str.startswith("문자열") ' )
함수3. 특정 문자로 끝나는 데이터 query
query( ' 컬럼명.str.endswith("문자열") ' )
- 코드 활용 예시
Q1. sal이 들어간 선수 이름이 정확이 기억이 나지 않는다면?
Q2. Owen으로 시작하는 선수들이 궁금하다면?
Q3. Mata로 이름이 끝나는 선수가 궁금하다면?
1
2
3
4
5
6
7
8
9
10
11
|
## Q1.문자열 포함 검색 - query(' column.str.contains("string") ')
r1.query('player.str.contains("Sal")', engine = 'python')
## Q2. 시작 문자열 검색 - query(' column.str.startswith("string") ')
r1.query('player.str.startswith("Owen")', engine = 'python')
## 끝 문자열 검색 - query(' column.str.endswith("string") ')
r1.query('player.str.endswith("Mata")', engine = 'python')
|
cs |
※ Type Error발생시 대처 방법 - engin = 'python'을 시도해보자
TypeError: 'Series' objects are mutable, thus they cannot be hashed
이럴 때는 engine = 'pyhon'을 입력하면 자동으로 해결이 된다. (아마도 default 값이 c여서 hash가 안 되는 듯 하다.)
'Python > Python 기초 연습' 카테고리의 다른 글
[Python] 데이터 추가 하기 - append, extend, insert 3분 마스터 (0) | 2022.09.28 |
---|---|
[python] for문 예상 시간 측정하기 - ipypb 및 tqdm 소개 (0) | 2022.06.23 |
[Python] Pandas의 Pivot Table 활용 마스터하기 (0) | 2022.05.28 |
[Python] argmax, argmin, max, min - 마스터 1분컷 (0) | 2022.05.27 |