오늘 할 일: 끝내주게 숨쉬기
article thumbnail
[Tips] 범주형 변수의 카테고리 개수를 줄이는 방법들

들어가며 데이터 탐색을 하다보면 다양하게 골치아픈 상황들을 마주하게 됩니다. 컬럼의 대부분이 비어있다거나, 분명 동일한 값인데 대문자 버전과 소문자 버전이 있다거나, 값의 정의가 시점에 따라 다르거나.. 등등 전처리가 필요한 경우는 신기할 정도로 많이 존재합니다. 그 중 하나가 바로 범주형 변수가 가진 카테고리가 너무 많은 경우입니다. 카테고리가 너무 많은 경우, 타겟과의 연관성을 파악하기도 번거롭고 시각화를 하더라도 한 눈에 들어오질 않습니다. 그 상태로 원핫인코딩을 진행한다면 카테고리마다 변수가 생겨 데이터가 sparse해지고, 트리 계열 모델을 학습한다면 학습 시간이 길어지면서 과적합되는 상황도 발생할 수 있을 것입니다. 위와 같은 단점을 해결하기 위해서는 해당 변수 내 카테고리 개수를 줄여야하는데..

article thumbnail
[sklearn] LabelEncoder와 OrdinalEncoder 비교

들어가며 분석 과제를 하던 도중 범주형 변수를 숫자로 인코딩하기 위해 LabelEncoder가 필요하겠다 싶었습니다. 사용법을 확인하기 위해 사이킷런 공식문서를 살펴봤는데.. LabelEncoder는 타겟 변수 y를 하기 위해 사용하라고 써있더군요. label이 붙는 범주형 변수면 으레 사용 가능하다고 생각했었는데, 제가 오해를 하고 있었습니다. 공식문서를 다시금 잘 살펴보자는 교훈을 얻었네요. 이번 포스트는 LabelEncoder 와 OrdinalEncoder를 각각 소개하고 비교하고자 합니다. 두 인코더 모두 범주형 변수를 숫자로 인코딩하기 위해 쓰이는데요, LabelEncoder는 위에서 언급한 바와 같이 범주형 타겟 변수를, OrdinalEncoder는 범주형 입력 변수를 대상으로 합니다. 각각의..

article thumbnail
[pandas] style로 데꾸(데이터프레임 꾸미기)하는 방법

들어가며 오랜만에 파이썬을 사용하다가 유용해보이는 기능을 발견하여 공유하고자 합니다. 바로 pandas의 style 기능입니다. 데이터 분석을 하면 데이터프레임에 찍힌 숫자나 문자와 같은 값들을 보면서 무엇이 제일 크고 작은지, 관심있게 보려는 값이 어디있는지 찾아야하는 일이 생기죠. 이때 내가 원하는 값들이 쉽게 눈에 띄지 않은 경험을 한 번쯤은 해보셨을 것 같습니다. 행, 열이 많아지면 주의 깊게 봐야하는 값이 어디에 있는지 더욱 찾기 어려워지기도 하죠. 이런 일들을 해결하기 위해 데꾸, 데이터프레임 꾸미기를 활용할 수 있습니다. 판다스의 공식 문서를 보며 유용할 것 같은 일부 함수들을 가져와 소개 드립니다. 비어있는 값, nan 강조하기 import numpy as np import pandas a..

article thumbnail
[시각화][seaborn] 2) 시각화 커스터마이징하기

seaborn 1) 다양한 시각화 함수에 이어 2) 커스터마이징편입니다. 시각화를 수행할 때 자주 사용하는 커스터마이징 세팅 들을 소개하겠습니다! seaborn은 matplotlib를 기반으로 시각화를 수행하는 패키지라고 했었죠. matplotlib의 함수를 사용하면 쉽게 원하는 그림을 그릴 수 있답니다. 사용하는 데이터는 이전과 동일하니, 이전 포스트를 참고해주세요. 사용하는 패키지는 pandas, seaborn, matplotlib입니다. import pandas as pd import seaborn as sns import matplotlib.pyplot as plt 1. 그림 크기 변경하기 figure 함수의 figsize 파라미터를 변경하여 그림의 사이즈를 조절합니다. 튜플로 (가로 사이즈, 세..

article thumbnail
[시각화][seaborn] 1) 기본적인 데이터 시각화 함수들

seaborn은 파이썬 시각화의 대표 주자로, matplotlib를 기반으로 작동하는 패키지입니다. 데이터 분석을 하다보면 숫자만으로는 데이터를 파악하기 어려울 때가 있죠. 시각화는 분석가가 데이터를 이해하기 위해서, 더 나아가 데이터를 기반으로 상대를 설득하기 위해서 반드시 알아야할 기술입니다. 미적 감각이 갖춰져있다면 더 예쁘고 요약이 잘 된 그림을 그릴 수 있겠지만..😓 많은 분석가들에게 그런 스킬은 어렵기 때문에 seaborn의 도움을 많이 받고 있습니다. 데이터가 저장된 판다스 데이터프레임 객체를 쉽게 시각화할 수 있으니, 사용하지 않을 이유가 더욱 없죠. seaborn 1편에서는 seaborn에서 제공하는 다양한 시각화 함수(displot, scatterplot, regplot, countpl..

article thumbnail
[pandas] 칼럼 이름 변경하기: rename, set_index, columns

데이터 분석을 하다보면 파이썬에서 판다스 데이터프레임의 칼럼을 변경해야 하는 경우가 가끔 있습니다. 본 포스트에서는 칼럼 이름을 변경하는 방법에 대해 알아보겠습니다. 먼저 사용할 임의의 데이터프레임을 생성하겠습니다. import pandas as pd df = pd.DataFrame({'id': ['a', 'b', 'c'], 'date': ['20211030', '20211031', '20211031'], 'price': [1000, 2000, 2500]}) display(df) 칼럼명을 변경하는 방법은 크게 세 가지입니다. rename 메서드를 이용하는 방법, set_axis 메서드를 이용하는 방법, columns 어트리뷰트에 직접 할당하는 방법이 있는데요 하나씩 알아보겠습니다! 1. rename 메서..

article thumbnail
[pandas] 데이터 재구성: wide_to_long 함수와 melt 함수

데이터 분석을 하다보면 필요에 따라 기존에 구성되어 있는 데이터를 재구조화하기도 합니다. 본 포스팅에서는 파이썬에서 데이터프레임을 재구성하는 방법, 특히 wide하게 구성되어 있는 데이터를 long하게 변경하는 방법에 대해 알아보겠습니다. wide 데이터는 가로로 놓여진 데이터를, long 데이터는 세로로 늘어놓인 데이터라는 것을 이해하고 읽으시면 좋겠습니다. 사용할 데이터는 다음과 같습니다. import pandas as pd df = pd.DataFrame({"id" : ['a', 'b', 'c'], "pred1" : [0.5, 0.6, 0.8], "pred2" : [0.8, 0.6, 0.4], "pred3" : [0.2, 0.7, 0.5]}) display(df) unique한 아이디마다 세 종류의..

article thumbnail
[시각화] subplots와 반복문을 이용하여 그래프 여러개 그리기

데이터를 파악하기 위해서는 시각화가 필수입니다. 데이터가 어떻게 생겼는지 확인하기 위해 여러 그림을 그리다보면 한번에 그리고 싶을 때가 있죠. 본 포스팅에서는 matplotlib의 subplots 함수와 seaborn 라이브러리를 이용하여 그래프를 한번에 여러개 그려보도록 하겠습니다. 먼저 필요한 라이브러리들과 데이터를 불러옵니다. 데이터는 캐글에서 가져온 HR 자료를 사용했습니다. import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt df = pd.read_csv('./data/HR_comma_sep.csv') display(df.shape, df.head()) 위 데이터로부터 부서(Depa..

article thumbnail
[pandas] 딕셔너리를 데이터프레임의 열로 변경하는 방법

데이터프레임 형태를 갖는 어떤 데이터가 있다고 합시다. 이 데이터의 한 칼럼은 하나의 값이 아니라 여러 개의 값을 갖고 있습니다. 각각의 값들이 하나의 칼럼이 되어 새로운 값을 갖도록 하려면 어떻게 해야 할까요? 한 강의를 듣다가 문득 궁금증이 생겼는데, 강사님께서 직접 찾아보라고 하셔서 ㅎ.. 알아보았습니다. 유용하게 쓰일 법한 테크닉인데, 구현하는 방법은 굉장히 단순해서 놀랐어요. 데이터 준비 import os import pandas as pd import numpy as np from tqdm import tqdm path = '../data/movielens' movies_df = pd.read_csv(os.path.join(path, 'movies.csv'), index_col='movieId..

article thumbnail
Pandas 기초 - 데이터 프레임 개조하기(칼럼명 변경, 정렬, 결합)

지난 포스팅()에서는 Pandas 라이브러리를 활용하여 데이터프레임 만들기, 조회하기를 알아보았습니다. 이번 포스팅에서는 만들어진 데이터프레임을 활용하여 칼럼명 변경, 정렬, 결합 그리고 칼럼 순서 변경에 대해 알아보겠습니다. rename : 칼럼명 변경 특정 칼럼의 이름을 변경하기 위해 rename()을 사용합니다. 여기서는 Math 칼럼의 이름을 MATH로 변경하였습니다. print(grades.columns) grades.rename(columns = {'Math':'MATH'}, inplace = True) print(grades.columns) Index(['Math', 'Science', 'English', 'History'], dtype='object') Index(['MATH', 'Scie..

반응형