Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

나의 기록

[Python] 데이터전처리(2) Boolean Indexing, 본문

개발일지/Python

[Python] 데이터전처리(2) Boolean Indexing,

리베린 2024. 1. 25. 14:46
 특정 조건을 만족하는 데이터를 선택할 경우 (Boolean Indexing)

 

 

스파르타 코딩 클럽

 

  • Boolean Indexing 사용 방법 

1. 단일 조건으로 필터링

# 'age' 열에서 30세 이상인 행 필터링
df[df['age'] >= 30]

 

2. 여러 조건으로 필터링

# 'age' 열에서 30세 이상이면서 'gender' 열이 'Male'인 행 필터링
df[(df['age'] >= 30) & (df['gender'] == 'Male')]
df[(df['sex']== 'Male') | (df['smoker']=='Yes')]

여기서 '|' 는 or 역할

 

 

3. 조건에 따른 특정 컬럼 필터링

# 'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df.loc[df['age'] >= 30, 'name']
df.loc[df['size']>3, 'tip':'smoker']

 

 

4. isin()을 활용한 필터링:

  • 리스트를 활용하여 여러 값들을 포함하는 행을 선택할 수 있습니다.
# 'gender' 열에서 'Male' 또는 'Female'인 행 필터링
df[df['gender'].isin(['Male', 'Female'])]

 

 

어우 헷갈려 ;;

  • 실습해보기 : 특정 조건을 만족하는 데이터를 선택할 경우

1. 비교 연산자 활용 

# 예를들어, data['컬럼명1']이 숫자(int)값인 경우
data['컬럼명1'] < 80

# 80보다 작으면 True 
# 80보다 크면 False 을 반환합니다.

 

 

2. 조건을 통해 True/False 로 반환된 값을 활용해서 True에 해당하는 값만 불러올 수 있습니다.

condition = data['컬럼명1'] < 80
condition

 

3. 여러개 조건을 활용해서 값 불러오기 

# 조건1 and 조건2 ==>> 조건1,2 둘다 만족해야한다 True
## and 를 &로 대체해서 사용할 수 있음

condition1 = data['컬럼명1'] < 80
condition2 = data['컬럼명2'] >= 50

condition = condition1 & condition2
data[conditon]



# 조건1 or 조건2 ==>> 조건1과 조건2 둘중 하나만 만족하면 True
## or 를 |로 대체해서 사용가능

condition1 = data['컬럼명1'] < 80
condition2 = data['컬럼명2'] >= 50

condition = condition1 | condition2
data[conditon]




# ()로 구분해서 조건을 한번에 입력해도 동일하게 활용할 수 있습니다.
condition = (data['컬럼명1'] < 80) & (data['컬럼명2'] >= 50)
data[conditon]

# 이렇게도 가능합니다.
data[(data['컬럼명1'] < 80) & (data['컬럼명2'] >= 50)]

# 조건이 많아서 행이 길어질 경우, 줄바꿈을 통해 구분해주시면 훨씬 가독성이 올라갑니다.
condition = (data['컬럼명1'] < 80) \
			& (data['컬럼명2'] >= 50)\
			& (data['컬럼명3'] >= 10)
data[conditon]

 

 

  • 데이터 추가하기

 

df['created_at'] = '2024-01-01' 

2024-01-01 문자 형태 날짜 형태로 바꿔주기 

pd.to_datetime(df['created_at'])

df['created_at'] = pd.to_datetime(df['created_at'])

df['revenue'] = df['total_bill'] + df['tip']

df['tip_percentage'] = df['tip'] / df['revenue'] * 100