9.데이터 선택(조건)¶
str 함수¶
In [2]:
import pandas as pd
df = pd.read_csv('score.csv')
df
Out[2]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
In [3]:
filt = df['이름'].str.startswith('송') #'송'씨 성을 가진 사람
df[filt]
Out[3]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
In [5]:
filt = df['이름'].str.contains('태')#이름에 '태' 가 들어가는 사람
df[filt]
Out[5]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
In [6]:
df[~filt] #이름에 '태' 가 들어가는 사람 제외
Out[6]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 7 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
In [7]:
langs = ['Python','Java']
filt = df['SW특기'].isin(langs) #sw특기가 python이거나 java인 사람
df[filt]
Out[7]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
In [8]:
df
Out[8]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
| 7 | 윤대협 | 능남고 | 190 | 100 | 85 | 90 | 95 | 95 | C# |
In [9]:
langs = ['python','java']
filt = df['SW특기'].str.lower().isin(langs)
df[filt]
Out[9]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 6 | 황태산 | 능남고 | 188 | 55 | 65 | 45 | 40 | 35 | PYTHON |
In [12]:
filt = df['SW특기'].str.contains('Java',na=True) #NaN데이터에 대해서 True로 설정
df[filt]
Out[12]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
In [13]:
filt = df['SW특기'].str.contains('Java',na=False) #NaN데이터에 대해서 False로 설정
df[filt]
Out[13]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
구글에 pandas string치면 쓸수있는 string 확인할수 있음!!
'데이터 분석 기초' 카테고리의 다른 글
| 12.데이터 정렬 (1) | 2023.03.13 |
|---|---|
| 11.결측치 (0) | 2023.03.13 |
| 09. 데이터 선택(조건) (0) | 2023.03.11 |
| 08.데이터 선택(iloc) (0) | 2023.03.11 |
| 07.데이터 선택(loc) (0) | 2023.03.11 |