[내일배움캠프] 데이터 트랙/본 캠프

[내일배움캠프] 29일 차 - 데이터 전처리&시각화 3, 기초 팀 과제 발표, KPT 회고

554083460 2025. 6. 23. 21:08

 

 

 

 데이터 전처리 & 시각화 Pandas - 3

 

 

더보기

 

데이터 전처리 & 시각화 강의 3주차 : Pandas 위주로 정리 - 3

 

5. 데이터 전처리 - 불리언 인덱싱

 

Boolean Indexing

  • 조건 이용하여 데이터프레임에서 특정 조건 만족하는 행 선택
  • 데이터 필터링하거나 원하는 조건 만족하는 행을 추출할 수 있음
  • Boolean 값을 가지는 조건식을 사용하여 데이터프레임 인덱싱
    • 조건식에 따라 각 행이 True 또는 False로 평가되며, 이를 바탕으로 데이터프레임 필터링

사용 방법 1: 단일 조건으로 필터링

  • 특정 열의 값을 기준으로 조건 설정
  • 해당 조건 만족하는 행 선택
# 'age' 열에서 30세 이상인 행 필터링
df[df['age'] >= 30]

 

사용 방법 2: 여러 조건으로 필터링

  • 여러 개의 조건 조합해 복합적 필터링
# 'age' 열에서 30세 이상이면서 'gender' 열이 'Male'인 행 필터링
df[(df['age'] >= 30) & (df['gender'] == 'Male')]

 

사용 방법 3: 조건에 따른 특정 컬럼 필터링

  • 조건을 만족하는 특정 열만 선택
# 'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df.loc[df['age'] >= 30, 'name']

 

사용 방법 4: isin()을 활용한 필터링

  • 리스트 활용
  • 여러 값 포함하는 행 선택
# 'gender' 열에서 'Male' 또는 'Female'인 행 필터링
df[df['gender'].isin(['Male', 'Female'])]
  • 특정 열에서 단일 값 포함되는지 확인
import pandas as pd

data = {'A': [1, 2, 3, 4, 5],
        'B': ['apple', 'banana', 'orange', 'grape', 'melon']}

df = pd.DataFrame(data)

# 'B' 열에서 'banana' 값이 있는지 확인
result = df['B'].isin(['banana'])
print(result)
  • 특정 열에서 여러 값 포함 여부 확인: 리스트
# 'A' 열에서 2 또는 4 값을 포함하는 행 찾기
result = df['A'].isin([2, 4])
print(result)
  • 데이터프레임 전체에서의 사용
  • 여러 열에 대해 isin() 사용
# 데이터프레임 전체에서 여러 조건을 확인하여 필터링
result = df.isin({'A': [1, 3], 'B': ['apple', 'orange']})
print(result)

 

실습: 특정 조건 만족하는 데이터 선택

  • 비교 연산자 활용
# data['number']이 숫자(int)값인 경우
data['number'] < 80

# 80보다 작으면 True 
# 80보다 크면 False 반환
  • 위의 비교 연산자 값을 변수에 할당, 조건으로 설정
condition = data['number'] < 80
condition
  • 여러 개 조건을 활용해서 값 불러오기
# 조건1 and 조건2

condition1 = data['num1'] < 80
condition2 = data['num2'] >= 50

condition = condition1 & condition2
data[condition]

# 조건1 or 조건2

condition1 = data['num1'] < 70
condition2 = data['num2'] >= 40

condition = condition1 | condition2
data[condition]

# 다른 방법: ()로 구분해서 조건 한번에 입력
condition = (data['column1'] < 50) & (data['column2'] >= 20)
data[condition]

# 더 간단하게
data[(data['column1'] < 50) & (data['column2'] >= 20)]

# 조건이 많아서 행이 길어질 경우, 줄바꿈하기
condition = (data['column1'] < 90) \
          & (data['column2'] >= 50) \
          & (data['column3'] >= 10)
data[condition]

 

 

데이터 추가하기

 

  • 데이터프레임에 컬럼 추가
    • data가 하나의 값인 경우
      전체 모두 동일한 값 적용
    • 리스트, 시리즈의 형태인 경우
      각 순서에 맞게 컬럼 값에 적용됨
df = pd.DataFrame()

df['컬럼명'] = data

# df라는 데이터프레임에 
# '컬럼명'이라는 이름의 컬럼이 추가
# 해당 컬럼에 data라는 값이 추가
df = pd.DataFrame()

# 컬럼 추가하기
df['EPL'] = 100
df['MLS'] = 60
df['NBA'] = 70

# 리스트 형태로 컬럼 값 추가하기
df['KFC'] = [50, 10, 30]
# 행 수에 맞춰서 입력해야 함

# 컬럼을 여러 조건 및 계산식을 통해 산출 값으로 추가 가능
df['ABC'] = (df['EPL'] + df['NBA'] * df['MLS'] * 2)

 


자료 출처

스파르타 코딩클럽 데이터 전처리 & 시각화 강의

 

 

 

 

 기초 팀 과제 발표, KPT 회고

 

 

우리 조 발표 피드백

 

  • 이탈 고객을 구매로 전환하기 위한 액션 플랜이 부족했다.

 

다른 조 발표 피드백

 

  • 컬럼명을 한글로 쓸 때의 장단점이 있다.
    https://jeho.page/essay/2023/07/28/coding-in-korean.html
  • 발표할 때는 코드보다는 분석 내용, 인사이트 등을 위주로 할 것
  • 가상의 회사를 만든 후 분석 진행하는 방향 좋다.
  • 페르소나 기법 → 뾰족한 문제정의 가능해짐
  • 상관관계: 변수 하나일 때 분석, 다중변수일 때의 분석
  • 복잡한 시각화는 짧은 설명 1줄정도 같이
  • 도메인 정보 활용해 분석 결과 해석, 설명
  • 이상치 제거 전에는 어떤 데이터가 정상 범주인지 판단한 후, 기준을 정하고 제거한다.
  • 해석에서 그치지 않고 비즈니스 액션 플랜까지 이어지면 더 좋다!

 

KPT 회고

 

K

  • 적극적인 태도
  • 결석하는 경우 제외하면 소통 원활했다

P

  • 과제 일정이 촉박했다.
  • 분석 과정을 체계적으로 문서로 남기지 못했다.
  • 노션으로 다같이 실시간 편집을 하려고 시도했는데 잘 되지 않았다.
  • 지표에 대한 정의를 명확히 하고 분석을 해야 하는데, 사전에 정의하지 않은 채 각자 쿼리, 코드를 짜서 결과값이 다르게 나와 혼선이 있었다.

T

  • 협업 툴을 정하고, 모든 팀원이 적극적으로 참여한다.
  • 지표 정의, 분석 방향을 모두가 합의한 다음에 코드를 짠다.