내일배움캠프

[본캠프] 데이터기반 QA/QC 부트캠프 14일차

min0jun 2026. 5. 29. 19:51

1. 오늘 학습 목표

- VS Code에서 데이터 전처리하기


2. 오늘 학습 한 내용

2-1. 컬럼이란?

  • 데이터프레임의 열을 나타낸다.
  • 데이터프레임은 행과 열로 구성된다.
  • 데이터프레임의 세로 방향에 있는 데이터들을 컬럼이라고 부른다.

※컬럼 예시

import pandas as pd

# 데이터프레임 생성
data = {
    '이름': ['Alice', 'Bob', 'Charlie'],
    '나이': [25, 30, 35],
    '성별': ['여', '남', '남']
}

df = pd.DataFrame(data)

# 각 컬럼 출력
print(df['이름'])  # '이름' 컬럼 출력
print(df['나이'])  # '나이' 컬럼 출력
print(df['성별'])  # '성별' 컬럼 출력
  • 컬럼 응용
#컬럼명 변경하기
pd.read_csv('./data/file.csv' , names = [’컬럼명1’, ‘컬럼명2’, … ,‘컬럼명 19’])

#컬럼 확인하기
data.column

#리스트 형태를 활용해서 컬럼명을 새롭게 입력할 수 있습니다.
data.column = ['축구', '농구', '배구', '야구']
data

 

2-2. 데이터 확인

data.head() # head()은 기본 5개 행에 대한 데이터를 보여줌
data.head(3) # ()안에 숫자만큼 데이터를 보여줌

data.info() 
# null 값을 확인할때도 활용

data.describe()
# 숫자값에 대해서만 기초통계량 확인이 가능합니다.

# 결측치 확인 : isnull()
df.isnull().sum() # 이렇게하면 결측치가 몇개있는지도 알 수 있어요 !

# 결측치 제거 : dropna()
df.dropna()

# 중복 데이터 확인
df.duplicated(subset=['컬럼1', '컬럼2', '컬럼3'])

# 중복 데이터 제거
df.drop_duplicates(subset=['컬럼1', '컬럼2', '컬럼3'])

# IQR (Interquartile Range) 방법 찾아보기
# 참고 : https://www.scribbr.com/statistics/interquartile-range/

# IQR 계산
Q1 = df['컬럼1'].quantile(0.25)
Q3 = df['컬럼1'].quantile(0.75)
IQR = Q3 - Q1

# 이상치 기준 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 이상치 제거
df[(df['컬럼1'] >= lower_bound) & (df['컬럼1'] <= upper_bound)]

# 데이터 타입 변경을 원한다면 ! 
df['column_name'].astype(int)
df['column_name'].astype(float)
df['column_name'].astype(str)
df['column_name'].astype(bool)
df['column_name'].astype('category')
df['column_name'].astype('datetime64[ns]')
df['column_name'].astype(complex)
df['column_name'].astype(object)

astype을 이용한 데이터 타입 변경

DataFrame['column_name'] = DataFrame['column_name'].astype(new_dtype)

 

2-3. 데이터 선택 - .iloc과 .loc

- iloc정수 기반의 인덱스를 사용하고, loc레이블 기반의 인덱스를 사용한다.

#.iloc[로우,컬럼] : 인덱스 번호로 선택하기
import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50],
    'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)

# iloc을 사용하여 특정 행과 열 선택
selected_data = df.iloc[1:4, 0:2]  # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택
print(selected_data)


#.loc[로우,컬럼] : 이름으로 선택하기
data.loc['행이름' , '컬럼명']
# 행이름과 컬럼명을 통해서도 특정 데이터를 선택할 수 있음

import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 30, 40, 50],
    'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# loc을 사용하여 특정 행과 열 선택
selected_data = df.loc['b':'d', 'A':'B']  # 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택
print(selected_data)


#한개의 컬럼 전체를 선택할 경우
data.loc[: , '컬럼명']

#또는 데이터프레임['컬럼명'] 으로도 동일한 값을 선택할 수 있습니다.
data['컬럼명']

data[   ['컬럼명1', '컬럼명2', '컬럼명3' ]   ] 

# 2개 컬럼명을 선택할 경우
data.loc[  '행이름'  , ['컬럼명1' , '컬럼명2']   ]

# 2개 행이름을 선택할 경우
data.loc[  ['행이름1', '행이름2'] , '컬럼명1'    ]

# 리스트 슬라이싱 : 을 활용해서 특정 범위를 지정하여 선택할 수 있습니다.
data.loc[ '행이름' , '컬럼명1' : ] # '컬럼명1' : ==> 컬럼명1부터 끝까지라는 의미

2-4. 불리언 인덱싱

  • 단일 조건으로 필터링
# 'age' 열에서 30세 이상인 행 필터링
df[df['age'] >= 30]
  • 여러 조건으로 필터링
# 'age' 열에서 30세 이상이면서 'gender' 열이 'Male'인 행 필터링
df[(df['age'] >= 30) & (df['gender'] == 'Male')]
  • 조건에 따른 특정 컬럼 필터링
# 'age' 열에서 30세 이상인 경우의 'name' 열만 선택
df.loc[df['age'] >= 30, 'name']
  • isin을 활용한 필터링
# 'gender' 열에서 'Male' 또는 'Female'인 행 필터링
df[df['gender'].isin(['Male', 'Female'])]

 

2-5. 데이터 정렬

#sort_values() 함수
import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 22, 30, 18, 27],
    'Score': [85, 90, 75, 80, 95]
}
df = pd.DataFrame(data)

# 정렬
sorted_by_score = df.sort_values('Score') # 'Score' 열을 기준으로 오름차순 정렬
sorted_by_score = df.sort_values('Score',ascending=False) # 'Score' 열을 기준으로 내림차순 정렬

print(sorted_by_score)

#sort_index() 함수
import pandas as pd

# 샘플 데이터프레임 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'Age': [25, 22, 30, 18, 27],
    'Score': [85, 90, 75, 80, 95]
}
df = pd.DataFrame(data)

# 정렬
sorted_by_index = df.sort_index() # 인덱스를 기준으로 오름차순 정렬
sorted_by_index = df.sort_index(ascending=False) # 인덱스를 기준으로 내림차순 정렬
print(sorted_by_index)

 

Tip.
isin() 메소드란? - 시리즈나 데이터프레임의 값들 중에서 특정 값이나 리스트 안에 포함된 값들을 찾아내는 메소드
                              원하는 조건에 해당하는 데이터를 빠르게 필터링하거나 선택할 수 있음

 


나의 간단 소감

- 거의 지금 같은 내용만 3번째인 것 같은데 이젠 세뇌당하는 느낌이다..ㅋㅋㅋㅋㅋㅋㅋㅋ 코드까진 외우진 못했지만 무슨 기능이 있는지 필요할 때 뭘 찾아봐야 하는지는 이제 확실히 감을 잡은 것 같다.