목록Data Science Lv.2 (12)
Seongho Jang
Groupby 후 상위 n개 행 가져오기 이 용도의 nlargest 와 nsmallest API를 제공하고 있다. 하지만, 가장 빠른 방법은 데이터프레임을 원하는 값으로 정렬한 후에 groupby 하고, head 로 가져오는 것이다. id, name, total 로 구성된 데이터프레임이 있고, 각 name의 값을 total 로 정렬해 상위 3개만 가져오고 싶다면 아래와 같이 처리하는 것이 빠르다. df.sort_values(by='total', ascending=False).groupby('name').head(3) DataFrame.groupby 문서에 의하면, sort : boolean, default True Sort group keys. Get better performance by turning..
모의고사 1회차 Question10 각 job에 따라 divorced/married 인원의 비율을 확인 했을 때 그 값이 가장 높은 값은? df2 = df.groupby(['job', 'marital']).size().reset_index() df2.columns = ['job', 'marital', 'count'] df2 = df2.pivot(index = 'job', columns = 'marital', values = 'count') df2.columns = df2.columns.values df2['rate'] = df2['divorced'] / df2['married'] df2.sort_values(by = 'rate', ascending = False) pivot을 걸면 컬럼명이 list 형식..
*sklearn에서는 fit 뒤에 종속변수/독립변수 입력해서 fitting하기 단순회귀분석 from statsmodels.formula.api import ols model = ols(formula = "종속변수 ~ 독립변수", data = df).fit() 예측값 : df_test["독립변수"].fittedvalues 잔차 : df_test["독립변수"].resid 다중회귀분석 from patsy import dmatrices from statsmodels.stats.outliers_influence import variance_inflation_factor y, X = dmatrices(formula, return_type = 'dataframe') formula = "casual ~ " + " + ..

다중 회귀분석 연속형 종속변수와 두 개 이상의 독립변수 간 선형관계 및 설명력을 확인하는 기법 독립변수가 명목형 변수인 경우 가변수 변환 후 모델 적합 다중공선성 독립변수 간 강한 상관관계가 나타나는 문제 회귀모델 생성 후 분산팽창계수(VIF)를 확인하여 관련 변수를 처리(제거 등) VIF import pandas as pd from patsy import dmatrices from statsmodels.stats.outliers_influence import variance_inflation_factor as vif VIF를 계산하는 방법은 공식처럼 되어있는 것 같은데, 1) dmatrices를 써서 원하는 변수를 matrix 형태로 구성하고, 2) columns를 나열하는 열, VIF를 계산하는 열을..

crosstab : 데이터프레임의 두 변수의 원소 조합 빈도를 확인하는 함수 value와 aggfunc에 변수와 요약함수를 지정하면 별도의 산술연산 가능 normalize = 0 : row에 대한 정규화 normalize = 1 : column 에 대한 정규화 aggfunc를 지정 시 별도의 연산이 가능하며, (여기서는 pd.Series.mean으로 평균) Clustering에 자주 활용된다. 위 연산을 Long Form으로 계산 가능하다. sort_values: 데이터 정렬 함수 정렬 기준을 2개 이상으로 할 경우, 리스트 형식으로 작성하면 된다. melt : Wide form 형태의 데이터를 Long form으로 바꾸는 함수 pivot : Long form 형태의 데이터를 Wide form으로 바꾸는..

3. 데이터 병합 bike_sub = bike.sample(n=4, random_state = 123) bike_sub = bike_sub.reset_index(drop = True) bike_sub = bike_sub.set_index("datetime") reset_index(drop = True)로 기존 index를 지우고, set_index(df["datetime"])으로 datetime을 index로 설정하기 bike_1 = df.iloc[:3, :4] bike_2 = df.iloc[5:8, :4] pd.concat([bike_1, bike_2]) concat: 데이터를 row 또는 column 방향으로 이어붙이는 함수 데이터 병합 시에 서로 다른 변수 속성 또는 인덱스에 주의 index가 다른..

1. 결측치/이상치 처리 df.isna().sum() df.isna().sum(axis = 1) axis = 0 : column 방향 (각 변수별 결측치 개수) axis = 1 : row 방향 (각 row별 결측치 개수) df.fillna(value = {"Sepal_Length" : df_na["Sepal_Length"].mean()}) 특정 column만 결측치를 수정하고 싶다면, value 뒤에 dictionary 형태로 작성하면 됨 그 외 다양한 method가 있는데 나중에 천천히 읽어보기... value : scalar, dict, Series, or DataFrame Value to use to fill holes (e.g. 0), alternately a dict/Series/DataFram..

의사결정나무 : 의사결정 규칙을 나무 구조로 도식화하여 관심대상이 되는 집단을 몇 개의 소집단으로 분류하거나 예측하는 계량적 분석 방법 Root Node: 모든 자료를 포함하는 의사결정 나무의 출발점 Leaf Node : 최종 결과를 나타내는 마디로 자료들은 더이상 나누어지지 않음 Depth: 뿌리 마디부터 끝 마디까지 중간 마디들의 수 분류 나무: 범주형 목표 변수를 기준으로 마디를 나눔 끝마디에 포함된 자료의 범주가 분류 결과값이 됨 회귀 나무: 연속형 목표 변수를 기준으로 마디를 나눔 끝마디에 포함된 자료의 평균값이 각 끝마디의 회귀값이 됨 의사결정 나무의 알고리즘 : 불순도를 감소시키는 방향으로 분리 = Information Gain이 증가하는 방향으로 분리 불순도 - 범주형 목표 변수 : Gin..