반응형

Python/Pandas 17

[DataAnalysis] Kmeans 결과 해석

Kmeans 장점 - 변수들에 대한 배경지식, 역할, 영향도에 대해 모르더라도 데이터 사이의 거리만 구할 수 있다면 쉽게 사용 가능 - 알고리즘이 비교적 쉬운 수식으로 이루어졌기 때문에 이해와 해석이 용이합니다. Kmeans 단점 - 데이터의 영향력을 반영하지 못함. - 최적의 클러스터 개수인 k를 정하는 게 어렵다 - 이상치에 영향을 많이 받음 - 이상치가 포함된 데이터일 경우 클러스터의 중심(Centorid)을 업데이트하는 과정에서 Centroid의 위치가 크게 변동 - 클러스터가 원하지 않는 방식으로 묶일 수 있음 model = KMeans(n_clusters=5, random_state=123) model.fit(scaled_df) # 학습 모델 결과 추가 sales_df['label'] = mo..

Python/Pandas 2024.02.01

[DataAnalysis] Elbow Method

Elbow Method : 최적의 클러스터 갯수 찾는 방법 - 클러스터마다 속한 데이터와 Centroid 사이 거리의 합이 작아야 함. inertia : 각 클러스터에 속한 데이터들과 Centroid 사이의 거리를 제곱해서 전부 더한 값 Elbow Method 지점 찾기 import pandas as pd from sklearn.cluster import KMeans import seaborn as sns %matplotlib inline scaled_df = pd.read_csv('data/scaled_data.csv', index_col=[0]) inertias = [] for k in range(1, 16): model = KMeans(n_clusters=k, n_init=10, random_sta..

Python/Pandas 2024.02.01

[DataAnalysis] Clustering

import pandas as pd # 판다스 출력 결과를 소수점 둘째 자리 까지로 제한 pd.options.display.float_format = '{:,.2f}'.format sales_df = pd.read_csv('data/sales_data.csv', index_col=['customer_id']) sales_df import seaborn as sns sns.set(style="darkgrid", rc={'figure.figsize':(16,9)}) # 데이터 시각화 sns.scatterplot(x=sales_df['total_buy_cnt'], y=sales_df['total_price'], s=200) 이상점 제거 outlier_idx_cust_df = get_outlier_mask(sa..

Python/Pandas 2024.01.31

[Pandas] Data Merge

가격데이터, 수량데이터 가져오기 import pandas as pd %matplotlib inline price_df = pd.read_csv('./data/vegetable_price.csv') quantity_df = pd.read_csv('./data/vegetable_quantity.csv') price_df quantity_df Inner Join (Product 컬럼 기준으로 데이터 합치기) pd.merge(price_df, quantity_df, on='Product') - Product 컬럼에서 공통적으로 가지고 있는 값만 출력 Left Outer Join pd.merge(price_df, quantity_df, on='Product', how='left') - price_df 에 있는 c..

Python/Pandas 2024.01.22

[Pandas] groupby 카테고라이징

import pandas as pd df = pd.read_csv('data/occupations.csv') occ_groups = df.groupby('occupation') # type(age_groupsBy) mean_occ_groups = occ_groups.mean(numeric_only=True) mean_occ_groups.sort_values('age') 직업별 여성 비율 높은 순서 구하기 import pandas as pd df = pd.read_csv('data/occupations.csv') # 여기에 코드를 작성하세요 # df.head() occ_group = df.groupby('occupation') df_male = df.loc[df['gender']=='M'] male_gro..

Python/Pandas 2024.01.22

[Pandas] 문자열 필터링

데이터 컬럼 출력 df['Genre'].unique() 문자열 포함 데이터 출력 df[df['Genre'].str.contains('Blues')] 특정 문자열로 시작하는 데이터 출력 df[df['Genre'].str.startswith('Blues')] 새로운 열에 값 넣기 df['Contains Blue'] = df[df['Genre'].str.contains('Blues')] 문자열 쪼개기 address = df['소재도로명주소'].str.split(n=1, expand=True) df['관할구역'] = address[0] import pandas as pd df = pd.read_csv('data/museum_2.csv') phone_number = df['운영기관전화번호'].str.split(p..

Python/Pandas 2024.01.16

[Pandas] 데이터 클리닝

갖추어야 할 조건 : 완결성 / 유일성 / 통일성 / 정확성 완결성 (Completeness) : 필수정보가 누락됨이 없이 전부 존재해야 함 NaN 값이 있는 데이터 df = pd.read_csv('./data/attendance.csv', index_col=0) print(df, end='\n\n') 결측값 합계 isnull() print(df.isnull().sum(), end='\n\n') dropna(행) df.dropna(inplace=True) print(df, end='\n\n') dropna(column) df.dropna(axis='columns', inplace=True) print(df, end='\n\n') NaN을 0으로 대체 df.fillna(0, inplace=True) pri..

Python/Pandas 2024.01.05

[Pandas] DataFrame index/column

rename 함수 - position 컬럼을 Position으로 대문자 변경 - columns 사용 liverpool_df = pd.read_csv('./data/liverpool.csv', index_col=0) liverpool_df.rename(columns={'position' : 'Position'}) print(liverpool_df, end='\n\n') ∴ 바뀌지 않음 - rename 함수가 새로운 DataFrame을 만들어 컬럼을 변경 → 원래 DataFrame에는 영향이 없음 → inplace=True 적용 liverpool_df = pd.read_csv('./data/liverpool.csv', index_col=0) liverpool_df.rename(columns={'positio..

Python/Pandas 2024.01.02
반응형