본문 바로가기

Skill Sets/Python

[python/pandas] 판다스(pandas) 활용한 데이터 전처리(1)

SMALL

안녕하세요! 데코입니다!

오늘은 빅데이터분석기사(빅분기) 실기를 공부하면서

알아두면 좋을 데이터 전처리에 대하여 포스팅하려고 합니다!

(출처 : https://www.datamanim.com/dataset/99_pandas/pandasMain.html)

 

출처에 있는 "1.2 데이터 전처리 100문제"를 python과 pandas를 활용해 풀면서

제가 잘 활용 안 하던 전처리 내용을 설명하려고 해요!

바로 시작하겠습니다! :)

 


# 1. dataframe에서 수치형/범주형 변수 출력하기(select_dtypes 이용)

수치형 변수는 숫자로 표현되는 변수를 의미해요!
수치형 변수를 통해 정량적인 데이터를 나타내고, 연속적인 값이나 이산적인 값으로 표현됩니다.
ex) 나이, 키, 몸무게, 온도, 시간 

범주형 변수는 명목척도 혹은 서열척도로 분류되는 변수를 의미해요!
범주형 변수는 어떤 분류체계 안에서 서로 다른 카테고리에 속하는 값들을 가집니다. 
ex) 성별, 혈액형, 지역, 직업, 학력

 

저는 주로 "DF.info()"를 통해 데이터 구조를 파악했는데, select_dtypes()도 있더라고요!

Pandas의 DataFrame 객체에 대해서 select_dtypes() 메서드를 사용하면, 

해당 데이터프레임에서 원하는 데이터 타입을 가진 열(컬럼)만 선택할 수 있습니다!

 

# 데이터 불러오기
DataUrl = 'https://raw.githubusercontent.com/Datamanim/pandas/main/lol.csv'
DF = pd.read_csv(DataUrl, sep = '\t')

# [11] 수치형 변수를 가진 컬럼을 출력하라
DF.select_dtypes(exclude=object).columns

# [12] 범주형 변수를 가진 컬럼을 출력하라
DF.select_dtypes(include=object).columns

 

[11]과 [12]의 출력 결과는 아래와 같이 나와요!

 

 


# 2. dataframe에서 특정 컬럼의 분위수 계산하기(quantile() 이용)

분위수(quantile)란 데이터의 분포를 나누는 기준값으로,

데이터를 크기순으로 정렬하고 일정한 간격으로 나눈 값을 의미해요!

 

주로 사용되는 분위수는 사분위수(quartile)로,

데이터를 크기순으로 정렬하였을 때 1/4, 2/4(중앙값), 3/4 지점의 값을 의미해요!

이를 각각 1사분위수, 2사분위수, 3사분위수라고 부르고 상자그림에서 많이 보셨을 거예요!

 

Pandas의 DataFrame 객체에서 quantile() 메서드는

주어진 컬럼에서 분위수(quantile) 값을 계산하는 함수입니다!

 

# 데이터 불러오기
DataUrl = 'https://raw.githubusercontent.com/Datamanim/pandas/main/Jeju.csv'
DF = pd.read_csv(DataUrl, encoding='cp949')

# [17] 평균 속도 컬럼의 4분위 범위(IQR) 값을 구하여라
DF['평균 속도'].quantile(0.75) - DF['평균 속도'].quantile(0.25)

 

[17]의 출력 결과는 아래와 같이 나와요!

 

 


# 3. dataframe에서 특정 컬럼 선택하기(DF.iloc이용)

 

저는 해당 문제를 "range(0,len(DF.columns),2)"를 사용하여 0부터 컬럼의 개수까지 2씩 증가하며 인덱스를 지정해 주고

 

이 인덱스를 iloc 속성에 사용하여 해당 인덱스의 컬럼만을 선택하도록 풀었는데!

 

정답과는 다르더라고요!

 

정답에서는 "::2"를 사용하여 0부터 컬럼의 개수까지 2씩 증가하며 인덱스를 지정해 주고

 

이 인덱스를 마찬가지로 iloc 속성에 사용하여 해당 인덱스의 컬럼만을 선택하였더라고요!

 

동일한 내용인데 다르게 표현이 되고 저에게는 덜 친숙해서 이렇게 기록해 봅니다! 

 

# 데이터 불러오기
DataUrl = 'https://raw.githubusercontent.com/Datamanim/pandas/main/chipo.csv'
DF = pd.read_csv(DataUrl)

# [30-1] df의 짝수번째 컬럼만을 포함하는 데이터프레임을 출력하라
DF.iloc[:,range(0,len(DF.columns),2)]

# [30-2] df의 짝수번째 컬럼만을 포함하는 데이터프레임을 출력하라
DF.iloc[:,::2]

 

[30-1]과 [30-2]의 출력 결과는 아래와 같이 나와요!

 

"::2"과 유사한 코드 아래에 적어둘게요!

DF.iloc[:,1::2] # 두 번째 컬럼부터 2씩 건너뛰며 컬럼을 선택하는 코드
DF.iloc[:,::3]  # 세 번째 컬럼부터 3씩 건너뛰며 컬럼을 선택하는 코드
DF.iloc[:,:10:2] # 0부터 9번째까지의 컬럼 중에서 2씩 건너뛰며 컬럼을 선택하는 코드

 


오늘은 빅데이터분석기사(빅분기) 실기를 공부하면서

 

python과 pandas를 이용한 데이터 전처리에 대하여 포스팅하였습니다!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

 

그리고 더 궁금한 내용이 있다면

 

언제든지 댓글로 남겨주세요!

 

빠르게 궁금증을 해결해드릴게요!

 

공감과 댓글은 큰 힘이 됩니다!

 

오늘도 블로그 방문해 주시고

 

포스팅 읽어주셔서 감사합니다!

 

다들 오류 없는 파이썬 코딩 해보아요!

 

빅데이터 분석기사 실기 공부도 화이팅입니다! :)

 

LIST