MLOps 부트캠프 by 한경+토스뱅크 76

DataFrame - 그룹별로 분석하기

groupby()netflix_df.groupby('genre').count()# 컬럼별로 결측값을 제외한 각 데이터가 몇개씩 있는지 알 수 있음netflix_df.groupby('genre').size()# genre컬럼을 기준으로 그룹화# .size(): 각 장르별로 로우가 몇개인지 한 줄의 시리즈로 표현됨(*결측값 포함)netflix_df.groupby('genre').min(numeric_only=True)# min에 문자데이터가 적용될 경우, 문자 데이터의 최소값은 오름차순을 했을 때 가장 첫번째 값# 숫자 데이터만 요약해서 보고 싶다면 'numeric_only=True'를 설정해줘야 함# min 외 max, mean, sum 모두 사용법 동일함netflix_df.groupby('genre')[..

DataFrame - 데이터 합치기

pd.concat()pd.concat([english_df1, english_df2], ignore_index=True) # ignore_index: index값을 합친 데이터 기준으로 재설정pd.concat([english_df, math_df], axis=1)# axis=1: 컬럼을 기준으로 합침 예제2020년부터 2022년까지 3년 간의 월별 매출액 데이터를 한 번에 모아서 보려고 합니다. 각 연도의 데이터는 sales_2020, sales_2021, sales_2022라는 변수에 각각 저장되어 있는데요. 세 개의 DataFrame을 하나로 합쳐서 sales_df라는 변수에 저장해 주시면 됩니다.import pandas as pdsales_2020_df = pd.read_csv('data/sales..

DataFrame - 날짜와 시간 연산

order_df['shipping_time'] - order_df.indextimedelta: 두 시점 사이의 시간 차이를 나타내는데 사용됨pd.to_timedelta(order_df['days_for_shipping(expected)'], unit='D']# unit='D': day인 1을 기준으로 timedelta가 설정됨# H: 시간 / P: 분 / S: 초 단위예제 배달 음식이 고객에게 도착한 시각을 계산해 봅시다. 주문 시각(order_time)과 배달 소요 시간(time_taken)을 가지고 배달 완료 시간을 계산해서 DataFrame에 delivery_time이라는 컬럼을 추가해 주세요! 참고로 time_taken 컬럼은 배달에 몇 분이 소요되었는지를 의미하므로, 아래 출력 결과처럼 분을 ..

DataFrame - 날짜와 시간 연산

timedelta: 두 시점 사이의 시간 차이를 나타내는데 사용됨order_df['shipping_time'] - order_df.indexpd.to_timedelta(order_df['days_for_shipping(expected)'], unit='D']# unit='D': day인 1을 기준으로 timedelta가 설정됨# H: 시간 / P: 분 / S: 초 단위예제 배달 음식이 고객에게 도착한 시각을 계산해 봅시다. 주문 시각(order_time)과 배달 소요 시간(time_taken)을 가지고 배달 완료 시간을 계산해서 DataFrame에 delivery_time이라는 컬럼을 추가해 주세요! 참고로 time_taken 컬럼은 배달에 몇 분이 소요되었는지를 의미하므로, 아래 출력 결과처럼 분을 ..

DataFrame - 날짜와 시간 데이터 다루기

데이터를 불러올 때 형식 지정하기pd.to_datetime(): Timestamp로 된 시리즈parse_dates()목적: 데이터프레임의 특정 열을 날짜형으로 변환하여, 날짜와 시간을 보다 쉽게 조작하고 분석할 수 있게 해준다.사용법: parse_dates는 pd.read_csv() 또는 pd.read_excel() 같은 데이터 읽기 함수의 인자로 사용된다. # parse_dates 파라미터에 '날짜' 데이터로 불러올 컬럼명을 입력함order_df = pd.read_csv('data/order.csv', parse_dates=['order_time', 'shipping_time'])pandas datetime의 기본 형식은 '연도-월-일' 이다. 이를 parse_dates=[]에 넘겨주면 pandas가 ..

DataFrame - 데이터 구간화(cut(), apply())

df.cut()# cut()함수를 통해 데이터 구간화patient_df['age_group'] = pd.cut(patient_df['age'], bins=[20, 30, 40, 50, 60, 70], right=False, labels=['20s', '30s', '40s', '50s', '60s'])# bin: 구간화 할 범위# right=False: 오른쪽 구간을 포함하지 않음(기본값은 True)# labels: 구간에 이름을 붙여줌예제환자들의 비만도를 BMI 값에 따라 분류하려고 합니다. 아래 기준에 따라 비만도를 분류해서 obesity라는 컬럼에 저장해 주세요.18.5 미만(저체중): under18.5 이상 25 미만(정상): healthy25 이상 30 미만(과체중): over30 이상(비만..

DataFrame - 숫자 데이터 가공하기

스케일링정규화(Normalization)예제)import pandas as pdpatient_df = pd.read_csv('data/patient.csv')w_min = patient_df['weight'].min()w_max = patient_df['weight'].max()patient_df['weight'] = ((patient_df['weight'] - w_min) / (w_max - w_min))patient_df#######################import pandas as pdpatient_df = pd.read_csv('data/patient.csv')patient_df['weight'] = (patient_df['weight'] - patient_df['weight'].min()..

DataFrame - 문자열 분리, 변경, 제거하기

대소문자 처리하기airbnb_df['state'].unique()# 모두 소문자 통일airbnb_df['state'].str.lower() # str()함수로 시리즈와 문자열 처리 함수를 연결# 모두 대문자 통일airbnb_df['state'].str.upper()# 앞글자만 대문자, 나머진 소문자airbnb_df['state'].str.capitalize()문자열 분리하기df.split()# ,(콤마) 값을 기준으로 'location'컬럼의 문자열 분리하여 0번째 값을 가져오기 airbnb_df['location'].str.split(',').str[0]df.strip()# 문자열 내 공백 제거airbnb_df['city'].str.strip()df.replace()# 특정 문자열 변경(* .온점 ->..

DataFrame - 이상점 찾고 처리하기

이상점이란?이상점 찾기q1 = airbnb_df['price'].quantile(0.25) # 1분위수q3 = airbnb_df['price'].quantile(0.75) # 3분위수iqr = q3 - q1 # iqr계산# 이상점 판단 기준 찾기lower_limit = q1 - 1.5*iqrupper_limit = q3 + 1.5*iqr# 가격이 낮은 이상점airbnb_df[airbnb_df['price'] upper_limit]# 가격이 낮거나 높은 이상점 모두 확인airbnb_df[(airbnb_df['price'] upper_limit)] 이상점 처리하기1. 아무것도 하지 않음 -> 실제로 엄청 크거나 작은 값들일 수 있으며, 결과에 영향을 미치는 경우2. 모든 데이터가 이상점 안에 있도록 데이..

DataFrame - 중복값 찾고 처리하기

df.duplicated()중복값 확인 시, 가장 먼저 나온 데이터는 중복값이 아닌 데이터로 보고 나머지값들을 중복값으로 인식한다.모든 컬럼의 값이 동일해야 '중복값'으로 본다. airbnb_df.duplicated() # 중복값 여부 확인, True면 중복값이고 False면 아님airbnb_df.duplicated().sum() # 중복된 값의 총합 계산airbnb_df[airbnb_df.duplicated(subset='id')] # 'id'가 중복된 값의 데이터 확인# 중복값을 리스트로 줄 수도 있음airbnb_df[airbnb_df.duplicated(subset=['id', 'n_review', 'price')] # subset의 3개의 값이 모두 동일하면 중복값# keep='first'가 기본..