반응형

pandas 15

[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

[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

[Seaborn] KDE

Seaborn : Statistical Data Visualization 확률밀도함수 PDF (Probability Desity Function) : 데이터 셋의 분포를 나타냄 : 특정 구간에서의 확률을 나타냄 선의 확률은 0 키가 170일 확률 = 0 KDE(Kernel Density Estimation) : 우리가 갖고 있는 데이터는 굴곡이 많은 데이터임 : KDE를 사용해 굴곡 많은 데이터를 추측을 통해 진짜 분포에 가깝게 부드러운 곡선으로 바꿀 수 있음 키 몸무게 데이터 가져오기 body_df = pd.read_csv('./data/body.csv', index_col=0) body_df.head() 데이터 정렬 body_df['Height'].value_counts().sort_index() 그..

Python/Seaborn 2024.01.05

[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

[Pandas] DataFrame 값 쓰기

특정 데이터 값(행, 열) 바꾸기 ##### DataFrame 값 쓰기 iphone_df.loc['iPhone 8', '메모리'] = '2.5GB' print(iphone_df, end='\n\n') 하나의 column의 모든 값 바꾸기 # 하나의 열 값 바꾸기 iphone_df.loc['iPhone 8'] = ['2016-09-22', '4.7', '2GB', 'iOS 11.0', 'No'] print(iphone_df) 리스트로 하나의 column의 값 전체를 바꿈 # 열 값 바꿈 (리스트) iphone_df['디스플레이'] = ['4.7in', '5.5in', '4.7in', '5.5in', '5.8in', '5.8in', '6.5in'] print(iphone_df, end='\n\n') 특정 값..

Python/Pandas 2023.12.31
반응형