**해당 데이터는 제가 학원 강의를 수료하며 받은 데이터이며 원본 데이터는 기업으로부터 제공받은 데이터라서 공유할 수 없습니다.
**본문은 공부를 하며 과정을 이해하며 생각하기 위함이니 참고 해주시면 감사드리겠습니다.
## 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
- 데이터를 불러오기 및 전반적인 정보 확인
- 불러온 데이터들을 전처리
- 데이터들 목적에 맞게 병합
이전 글들에서 목적에 맞게 새로 생성했던 컬럼들이 있습니다.
이번 글에서는 기존에 활용했던 컬럼을 지우고 아래 조건에 맞게 새로 생성한 컬럼과 필요한 컬럼들을 활용해 보도록 하겠습니다.
osversion - 이제 이 컬럼을 버린 뒤 osversion(number)을 사용할 것입니다.
devicemanufacturer - 이제 이 컬럼을 버린 뒤 device_clean을 사용할 것입니다.
canonicaldeviceuuid - 이제 이 컬럼을 버린 뒤 userid를 사용할 것입니다.
channel - 이제 이 컬럼을 버린 뒤 channel(clean)을 사용할 것입니다.
event_rank - 이 컬럼은 애초부터 사용할 필요가 없기 때문에 제거해줘도 됩니다.
우선 컬럼명들을 확인해봅니다.
raw_log_data.columns
방법이 크게 두가지가 있을것으로 보입니다.
가지고 있는 컬럼들만 리스트업해서 사용하거나 필요없는 컬럼들을 지우거나.
저는 불필요한 컬럼들을 삭제하는 것으로 진행하겠습니다.
# 위에서 명시한 필요하지 않은 컬럼들을 전부 담은 drop_columns라는 이름의 리스트를 생성합니다
drop_columns = ["osversion", "devicemanufacturer",
"canonicaldeviceuuid", "channel", "event_rank"]
# 판다스(Pandas)의 drop 함수를 활용하여 unnessery_columns에 명시한 컬럼들을 전부 버립니다
# 여기서 axis = 0 옵션을 넣으면 row를 버릴려고 시도하고, axis = 1 옵션을 넣으면 column을 버릴려고 시도합니다
# 이 결과를 copy 함수를 활용해서 사본으로 복사한 뒤 clear_log라는 이름의 새로운 변수에 할당합니다
# (이렇게 하면 clear_log 변수에 들어간 값을 고쳐도 raw_log_data 변수에 들어간 값이 바뀌지 않습니다)
clear_log = raw_log_data.drop(drop_columns, axis = 1).copy()
print(clear_log.shape) # new_log의 행렬 사이즈를 출력합니다
print(clear_log.columns) # new_log의 컬럼들을 출력합니다
clear_log.head() # 상위 5개 데이터를 출력합니다
내용이 잘 반영되었습니다.
데이터를 분석할 때 컬럼명의 형식을 동일하게 유지하는 것이 중요합니다.
가령 회사 내부 데이터 팀에서 컬럼에서 두 개의 단어를 하이픈(-)으로 연결하기로 합의했다면
모든 컬럼을 하이픈으로 연결해야 하고, 언더바(_)로 연결하기로 합의했다면 모든 컬럼을 언더바로 연결해야 합니다.
그래서 현재 데이터도 아래 조건에 따라 컬럼명에 통일성을 갖춰 보겠습니다. (ex: eventcategory vs params_term)
단어와 단어 사이는 언제나 언더바(_)로 구분합니다.
가령 하이픈(-)으로 구분하거나, 띄어쓰기를 사용하면 안 됩니다.
(ex: event_category는 허용하지만, eventcategory나 event-category, 또는 event category는 허용하지 않습니다)
컬럼명에 (clean)이라고 들어간 표현은 이제는 지워줘도 될 것 같습니다. (ex channel(clean) -> channel)
# 위에서 명시한 형식에 맞게 컬럼명을 새롭게 변경합니다
# 이를 new_columns라는 이름의 변수에 파이썬 리스트로 집어넣습니다
new_columns = ['event_category', 'is_first_activity', 'app_package_name', 'app_version',
'device_type', 'source_type', 'params_campaign', 'params_medium',
'params_term', 'in_app_event_category', 'in_app_event_label',
'event_datetime', 'row_uuid', 'is_first_goal_activity', 'os_type',
'os_version', 'device_manufacturer', 'user_id', 'channel',
'event_datetime_year', 'event_datetime_month', 'event_datetime_day',
'event_datetime_hour', 'event_datetime_minute', 'event_datetime_second',
'view_id', 'view_action', 'view_category']
new_log.columns = new_columns # new_log 변수에 들어간 데이터의 컬럼명을 위에 명시한대로 변경합니다
print(new_log.shape) # new_log의 행렬 사이즈를 출력합니다
print(new_log.columns) # new_log의 컬럼들을 출력합니다
new_log.head() # 상위 5개 데이터를 출력합니다
통일된 새로운 컬럼들이 잘 되었습니다. (**기존 컬럼과 새로 들어가야할 컬럼수는 동일해야 값이 잘 적용되니 참고해주세요.)
마지막은 컬럼을 용도에 맞게 잘 정렬해주도록 하겠습니다.
정렬할 때는 보통
1) 중요한 컬럼을 좌측으로, 상대적으로 중요하지 않은 컬럼을 우측으로 옮겨주고,
2) 비슷한 역할을 하는 컬럼이나 서로간에 연관되어있는 컬럼은 같은 위치로 묶어줍니다.
(**해당 정렬방식은 회사나 팀에따라 다를 수 있으니 참고해주세요.)
# 위에서 명시한 형식에 맞게 컬럼의 순서를 변경합니다
# 이를 oredered_columns라는 이름의 변수에 파이썬 리스트로 집어넣습니다
oredered_columns = ['row_uuid', 'app_package_name', 'user_id',
'event_datetime', 'event_datetime_year', 'event_datetime_month',
'event_datetime_day', 'event_datetime_hour', 'event_datetime_minute',
'event_datetime_second', 'device_manufacturer', 'device_type',
'os_type', 'os_version', 'app_version', 'event_category',
'view_category', 'view_id', 'view_action', 'in_app_event_category',
'in_app_event_label', 'source_type', 'channel', 'params_campaign',
'params_medium', 'params_term', 'is_first_activity',
'is_first_goal_activity']
# new_log 데이터에서 위에서 명시한 컬럼 순서대로 다시 컬럼을 검색합니다
# 이를 다시 new_log라는 이름의 변수에 할당합니다
new_log = new_log[oredered_columns]
print(new_log.shape) # new_log의 행렬 사이즈를 출력합니다
print(new_log.columns) # new_log의 컬럼들을 출력합니다
new_log.head() # 상위 5개 데이터를 출력합니다
정렬된 컬럼으로 잘 반영되었습니다.
다음 페이지에서는 본 환경을 이어서 동일한 데이터를 가지고 추가적인 전처리를 진행하도록 하겠습니다.
*** 본 페이지는 본인의 공부를 위해 작성되었으며, 협찬이나 문의를 받고 기재한 내용이 아닙니다. 혹시 문의사항이 있으시거나 문제가 될 경우 연락 주시기 바랍니다.***
'데이터 분석 > Python - 정리하자' 카테고리의 다른 글
정리된 데이터 병합해보기 (0) | 2024.07.05 |
---|---|
퍼널(Funnel) 데이터를 정리 해보자 (2) | 2024.07.05 |
컬럼값 정리 후 결과 확인 해보기 (0) | 2024.07.05 |
전처리 중 컬럼 정리 및 시각화 해보기 (2) | 2024.07.05 |
데이터 전처리 연속하기 (0) | 2024.07.05 |