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)

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번째인 것 같은데 이젠 세뇌당하는 느낌이다..ㅋㅋㅋㅋㅋㅋㅋㅋ 코드까진 외우진 못했지만 무슨 기능이 있는지 필요할 때 뭘 찾아봐야 하는지는 이제 확실히 감을 잡은 것 같다.
'내일배움캠프' 카테고리의 다른 글
| [본캠프] 데이터기반 QA/QC 부트캠프 16일차 (1) | 2026.06.02 |
|---|---|
| [본캠프] 데이터기반 QA/QC 부트캠프 15일차 (0) | 2026.06.01 |
| [본캠프] 데이터기반 QA/QC 부트캠프 13일차 (0) | 2026.05.28 |
| [본캠프] 데이터기반 QA/QC 부트캠프 12일차 (1) | 2026.05.27 |
| [본캠프] 데이터기반 QA/QC 부트캠프 11일차 (0) | 2026.05.26 |