본문 바로가기

데이터 분석/Python - 정리하자

전처리 중 컬럼 정리 및 시각화 해보기

반응형

**해당 데이터는 제가 학원 강의를 수료하며 받은 데이터이며 원본 데이터는 기업으로부터 제공받은 데이터라서 공유할 수 없습니다.
**본문은 공부를 하며 과정을 이해하며 생각하기 위함이니 참고 해주시면 감사드리겠습니다.

## Environment : Anaconda-navigator
## Programming Language : Python 3
## Import Pandas
## import seaborn as sns
## import matplotlib as mpl
## import matplotlib pyplot as plt
## Data provided by DS school & Origin data from Kmong.
## Kmong is a company that has a dream as below.
Kmong은 "비합리적인 서비스 시장을 정보기술로 혁신하여 새로운 일자리를 만들고 사람들이 행복하게 일하는 세상을 만든다."는 미션을 가지고 있는 프리랜서 마켓 플랫폼입니다.
Kmong팀은 디자인, 마케팅, IT&개발, 컨텐츠 제작, 통번역 등 다양한 서비스 카테고리를 기반으로 직업과 직장의 경계를 허물며 사람들이 스스로 경제 주체가 되어 행복하게 일하는 세상을 만들고 있습니다.

Target

  1. 데이터를 불러오기 및 전반적인 정보 확인
  2. 불러온 데이터들을 전처리
  3. 데이터들 목적에 맞게 병합

저번 글에 이어 데이터들 전처리를 진행하도록 하겠습니다.

이번에는 'devicemanufacturer' 라는 컬럼을 정리해보도록 하겠습니다.

해당 컬럼은 스마트폰 제조사가 명시되어 있으며 가장 비율이 높은 3개 브랜드를 제외하고는 나머지의 총 합이 전체의 2프로 미만이므로 데이터 관리 편의 측면을 위해 정리하도록 하겠습니다.

raw_log_data['devicemanufacturer'].value_counts()

결과를 보시면 삼성과 애플 그리고 LG가 많은 부분을 차지하고 있는걸로 보입니다.

통일감을 주고 많이 쓰이는 명칭으로 변경을 해보겠습니다.
samsung -> Samsung, Apple은 유지, LG 내용이 들어간 부분 -> LG 그 외에는 Others로 묶도록 하겠습니다.

def device_clean(devicemanufacturer):
    if "samsung" in devicemanufacturer:         # 해당 컬럼에 samsung이 있을시
        return "Samsung"                        # Samsung 으로 반환한다
    if "LGE" in devicemanufacturer:             # 해당 컬럼에 LGE가 있을시
        return "LG"                             # LG 로 반환한다
    if "LG Electronics" in devicemanufacturer:  # 해당 컬럼에 LG E~~가 있을시
        return "LG"                             # LG 로 반환한다
    if "Apple" in devicemanufacturer:           # 해당 컬럼에 Apple이 있을시
        return "Apple"                          # Apple 로 반환한다
    else:                                       # 그 외에는
        return "Others"                         # Others 로 반환한다

device_clean 이라는 definition을 만들었습니다. 변경하려는 컬럼에 적용하며 원하는 값을 볼 수 있도록 새로운 컬럼을 생성합니다.

raw_log_data['device_clean'] = raw_log_data['devicemanufacturer'].apply(device_clean)
raw_log_data['device_clean'].value_counts()

내용이 잘 적용 되었습니다.

 

아래 과정을 통해 Others의 비율이 어느정도인지 확인해보겠습니다.

device_brand_count = raw_log_data['device_clean'].value_counts() # count한 값들 변수 지정
print(device_brand_count)  # 내용 확인
print('총 개수 = ',device_brand_count.sum()) # 총합 확인
print('Others의 비율은 = ', device_brand_count['Others'] / device_brand_count.sum())  # Others의 비율

아래와 같이 각 브랜드별로 시각화를 해볼수도 있습니다.

## 코딩 초기 시작시 아래 3가지 import 해놓고 시작했으니 참고 해주세요.
## import seaborn as sns
## import matplotlib as mpl
## import matplotlib pyplot as plt

%matplotlib inline  # 만약 jupytor notebook에서 그래프를 못 불러오면 왼쪽 명령어 입력
%config InlineBackend.figure_format = 'retina'  # 그래프상 명칭에서 한글이 깨지면 폰트 지정

plt.figure(figsize=[10, 5])  # 그래프의 크기 지정
sns.countplot(data = raw_log_data, x='device_clean'\
              , palette=sns.color_palette('coolwarm', 4))  # palette를 사용하여 그래프 bar 색 지정

 

다음 페이지에서는 본 환경을 이어서 동일한 데이터를 가지고 추가적인 전처리를 진행하도록 하겠습니다.

*** 본 페이지는 본인의 공부를 위해 작성되었으며, 협찬이나 문의를 받고 기재한 내용이 아닙니다. 혹시 문의사항이 있으시거나 문제가 될 경우 연락 주시기 바랍니다.***

반응형