Lesson 08: pandas 공부 3단계

Author

최규빈

Published

July 24, 2023

강의영상

imports

import numpy as np
import pandas as pd

pandas 공부 3단계: 필터링

np.random.seed(43052)
att = np.random.choice(np.arange(10,21)*5,20)
rep = np.random.choice(np.arange(5,21)*5,20)
mid = np.random.choice(np.arange(0,21)*5,20)
fin = np.random.choice(np.arange(0,21)*5,20)
key = ['2022-12'+str(s) for s in np.random.choice(np.arange(300,501),20,replace=False)]
df = pd.DataFrame({'att':att,'rep':rep,'mid':mid,'fin':fin},index=key)
df.head()
att rep mid fin
2022-12380 65 55 50 40
2022-12370 95 100 50 80
2022-12363 65 90 60 30
2022-12488 55 80 75 80
2022-12312 80 30 30 100

query (\(\star\))

- 예제1: att==90 and fin>30

df.query('att ==90 and fin >30')
att rep mid fin
2022-12354 90 90 80 90

- 예제2: att<rep and mid<fin

df.query('att<rep and mid<fin')
att rep mid fin
2022-12370 95 100 50 80
2022-12488 55 80 75 80
2022-12458 50 55 15 85

- 예제3: att < rep < 80

df.query('att<rep<80')
att rep mid fin
2022-12318 55 75 35 25
2022-12458 50 55 15 85

- 예제4: 50 < att <= 90 and mid < fin

df.query('50<att<=90 and mid<fin')
att rep mid fin
2022-12488 55 80 75 80
2022-12312 80 30 30 100
2022-12463 65 45 45 90
2022-12452 65 55 15 45
2022-12354 90 90 80 90

- 예제5: (mid+fin)/2 >=60

df.query('(mid+fin)/2>=60')
att rep mid fin
2022-12370 95 100 50 80
2022-12488 55 80 75 80
2022-12312 80 30 30 100
2022-12463 65 45 45 90
2022-12396 95 30 30 95
2022-12354 90 90 80 90

- 예제6: att > mean(att)

df.query('att> att.mean()')
att rep mid fin
2022-12370 95 100 50 80
2022-12312 80 30 30 100
2022-12377 75 40 100 15
2022-12400 95 65 20 10
2022-12469 90 80 80 20
2022-12432 95 95 45 0
2022-12443 95 55 15 35
2022-12396 95 30 30 95
2022-12354 90 90 80 90

query 사용금지