본문 바로가기
728x90

데이터분석과 AI/데이터분석과 AI 문법(Python)16

pd.describe() 사용법 파이썬에서 데이터를 로딩하고 가장 많이 사용하는 함수 중의 하나가 describe 함수입니다. 사용법은 간단한데, descirbe 함수가 범주형에 대해서도 통계정보를 생성해 준다는 것을 모르는 분들이 종종 있어서 정리해 놓습니다. 1. 예시 데이터 생성 import pandas as pd data = {'Age': [25, 30, 22, 40, 28], 'Height': [170, 160, 175, 162, 180], 'Weight': [65, 70, 60, 75, 85], 'Gender': ['Male', 'Female', 'Male', 'Female', 'Male']} df = pd.DataFrame(data) 2. 수치형 데이터에 대한 통계 생성 print("Numeric Data Summary:".. 2023. 8. 16.
로그와 지수 함수 - np.log(), np.exp() 회사에서 상품별 매출 추이를 분석할 일이 생겼습니다. 향후 매출 추이를 그려보고, 가입자가 감소하는 상품은 퇴출시키던지, 다시 활성화시키던지 판단을 하려고 합니다. 이때 단항의 선형 회귀선을 사용하니, 가입자가 증가 추세에 있는 상품은 너무 과하게 증가하고, 가입자가 감소 추세에 있으면 0 이하로 떨어져 버리는 문제가 있습니다. 그래서 지수함수를 회귀식에 사용하려고 하고, 지수함수 회귀를 위해 로그와 지수함수에 대해 먼저 정리하고 갑니다. 1. 자연상수 'e'에 대한 지수함수 - np.exp() 지수는 반복되는 곱셈을 나타냅니다. 예를 들어 n의 거듭제곱으로 된 a(a^n으로 표시됨)는 a를 n번 곱하는 것을 의미합니다. np.exp()는 여기서 밑수인 a가 자연 상수 'e'(약 2.71828)이고, 이.. 2023. 7. 15.
동일한 플롯에 스케일이 다른 그래프를 그리고 싶을 때 twinx() 오늘은 회사에서 스케일 차이가 많이 나는 수치형 데이터의 추이를 비교해 볼 일이 있었습니다. 한 개의 플롯에 두 개의 그래프(차트)를 그려 넣는 방법을 찾아보고 정리합니다. matplotlib.axes.Axes.twinx matplotlib에서 제공하는 twinx를 사용하면, 동일한 플롯 내에서 x축을 공유하는 또 다른 y축을 생성할 수 있습니다. 아래는 간단한 예제입니다. 이 예에서는 'y1'의 기본 y축으로 'ax1'을 사용하고 'y2'의 보조 y축으로 'ax2'를 사용합니다. twinx() 함수는 동일한 x축을 공유하는 두 번째 y축을 생성합니다. 각각의 y축에 있는 두 선 그래프를 구별하기 위해 서로 다른 색상과 레이블을 할당합니다. import matplotlib.pyplot as plt # S.. 2023. 7. 13.
수치형 데이터를 범주형으로 만드는 비닝(Binning)의 세 가지 방법 feat. Xverse 머신러닝 전처리를 하다 보면, 수치형 데이터를 범주형 데이터로 변경하는 경우가 있습니다. 연령을 구간별로 나누거나, 소득 수준을 구간별로 나누거나 하는 것인데요. 이런 작업을 비닝(Binning)이라고 합니다. 종종 이런 작업을 통해 모델의 성능이 개선되곤 합니다. 비닝에는 동일 너비 비닝(Equal-Width Binning), 동일 빈도 비닝(Equal-Frequency Binning), 모노토닉 비닝(Monotonic Binning)이 있습니다. 이 3가지에 대해 아래에서 설명드리겠습니다. 1. 동일 너비 비닝(Equal-Width Binning) 동일 너비 비닝에서는 변수의 범위를 동일한 너비의 고정된 수의 빈으로 나눕니다. 이 방법을 적용하려면 Bin의 개수와 각 Bin의 너비를 결정해야 합니다... 2023. 7. 6.
cross_val_score 할 때 scoring에 입력 가능한 파라미터 머신러닝 모델을 검증할 때, KFold, StratifiedKFold를 쓰지 않고, cross_val_score를 사용하여 편리하게 교차검증이 가능합니다. 그런데, 'cross_val_score' 함수는 평가지표로 사용할 scoring을 설정하게 되어있습니다. scoring str or callable, default=None A str (see model evaluation documentation) or a scorer callable object / function with signature scorer(estimator, X, y) which should return only a single value. Similar to cross_validate but only a single metric i.. 2023. 7. 2.
데이터분석 초보자가 자주하는 실수- 정확도, 정밀도, 재현율, F1-score 까지 모든 성능지표가 1인 경우 데이터 분석과 머신러닝을 처음 했을 접할 무렵에, 희한하게 모든 성능지표가 1이거나 1에 매우 가까운 경우를 종종 발견합니다. 분명히 무언가 잘못되었을 텐데, 처음에는 성능이 높다고 생각하기 쉽죠. 오류 메시지가 나오지 않지만, 코딩 오류이며, 일종의 과적합입니다. 예시로 두 가지를 들어보겠습니다. 1. 검증 데이터가 학습 데이터의 부분집합이 되면 발생합니다. 예를 들어 train_test_split 안 쓰고 행수 기준 20% 잘라서 쓰면서, 80%, 20%로 안 쓰고, 100%, 20% 쓰는 경우 발생합니다. import pandas as pd #학습데이터에서 검증데이터를 분리하고, 삭제하지 않음 X_train=pd.DataFrame({ 'ID':[1,2,3,4,5,6,7,8,9,10], 'age':[.. 2023. 6. 30.
[Python] 그래프에서 한글 깨질 때, 폰트 확인, 한글 폰트 설정, 마이너스 표기 방법 보호되어 있는 글 입니다. 2023. 6. 28.
Inplace=True 옵션을 썼는데, 데이터 변경이 안되는 경우 drop, fillna, replace 등 python pandas 함수를 쓰면서 Inplace=True 옵션을 자주 사용하였는데, 이 옵션이 동작하지 않는 경우가 있어서 공유합니다. 우선 아래 예제를 보겠습니다. 1. Inplace=True 옵션이 동작하지 않는 경우 이 예제는 Age와 Income 열의 값이 0인 경우 각 컬럼의 평균값으로 대체하는 예제입니다. import pandas as pd # 샘플 데이터프레임 생성 data = {'Name': ['John', 'Alice', 'Bob', 'Emily'], 'Age': [25, 30, 35, 0], 'Income':[100,200,300,0], 'City': ['New York', 'Paris', 'London', 'Sydney'], 'Gende.. 2023. 6. 11.
Label Encoidng 시 ValueError: y contains previously unseen labels:가 발생할 때 Label Encoding 시 "ValueError: y contains previously unseen labels:"가 발생할 때가 있습니다. 학습데이터에 fit을 하고, 테스트데이터에 transform을 했을 때, 테스트데이터에 학습데이터에 없는 범주값이 존재할 때 발생합니다. 초보자 분들의 경우에는 학습데이터와 테스트데이터 모두 fit_transform을 하는 경우가 있기도 하고, 학습데이터와 테스트 데이터를 합쳐서 fit 하고, 학습데이터와 테스트 데이터를 transform 해주기도 하지만, 원칙적으로 학습데이터와 테스트 데이터는 독립적이어야 하므로 실무적으로 권장되는 방법은 아닙니다.(Data Leakage 문제가 생기며, 대회 등에서는 탈락 사유가 됩니다.) LabelEncoder.class.. 2023. 6. 8.
728x90