데이터 분석 기초
09. 데이터 선택(조건)
세용용용용
2023. 3. 11. 23:59
9.데이터 선택(조건)¶
조건에 해당하는 데이터 선택
In [1]:
import pandas as pd
df = pd.read_csv('score.csv')
df
Out[1]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | 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 [2]:
df['키'] >= 185 #학생들의 키가 185 이상인지 여부를 true/false 형태로
Out[2]:
0 True 1 False 2 False 3 True 4 True 5 True 6 True 7 True Name: 키, dtype: bool
In [3]:
filt = (df['키']>=185)
df[filt]
Out[3]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 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 [4]:
df[~filt] #filter를 역으로 적용
Out[4]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 정대만 | 북산고 | 184 | 40 | 35 | 50 | 55 | 25 | Java |
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
In [5]:
df[df['키']>=185]
Out[5]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 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 [6]:
#df.loc[row조건, col조건]
df.loc[df['키']>=185, '수학'] #키가 185이상인 학생들의 수학 데이터를 가져옴
Out[6]:
0 100 3 70 4 10 5 95 6 45 7 90 Name: 수학, dtype: int64
In [8]:
df.loc[df['키']>=185, ['이름','수학','과학']] #키가 185이상인 학생들의 이름, 수학, 과학 데이터 가져옴
Out[8]:
| 이름 | 수학 | 과학 | |
|---|---|---|---|
| 0 | 채치수 | 100 | 95 |
| 3 | 서태웅 | 70 | 75 |
| 4 | 강백호 | 10 | 35 |
| 5 | 변덕규 | 95 | 85 |
| 6 | 황태산 | 45 | 40 |
| 7 | 윤대협 | 90 | 95 |
다양한 조건¶
& 그리고¶
In [9]:
#키가 185 이상이고 학교가 북산고인 학생의 데이터를 가져온다
df.loc[(df['키']>=185) & (df['학교']=='북산고')]
Out[9]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 채치수 | 북산고 | 197 | 90 | 85 | 100 | 95 | 85 | Python |
| 3 | 서태웅 | 북산고 | 187 | 40 | 60 | 70 | 75 | 80 | NaN |
| 4 | 강백호 | 북산고 | 188 | 15 | 20 | 10 | 35 | 10 | NaN |
또는¶
In [11]:
#키가 170보다 거나 200보다 큰 학생 데이터
df.loc[(df['키']<170) | (df['키']>200)]
Out[11]:
| 이름 | 학교 | 키 | 국어 | 영어 | 수학 | 과학 | 사회 | SW특기 | |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 송태섭 | 북산고 | 168 | 80 | 75 | 70 | 80 | 75 | Javascript |
| 5 | 변덕규 | 능남고 | 202 | 80 | 100 | 95 | 85 | 80 | C |