데이터로 Deep Dive

데이터 분석과 개발 경험을 공유합니다.

한경아카데미 64

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'가 기본..

DataFrame - 결측값 처리하기(삭제/대체)

결측값 삭제하기df.dropna()airbnb_df.dropna() # 결측값 삭제하기 결측값을 다른 값으로 채우기df.fillna() airbnb_df['rating'].mean() # 1 - 'rating'컬럼의 평균값 확인rating_mean = airbnb_df['rating'].mean() # 2 - 1의 값을 rating_mean변수에 저장airbnb_df['rating'].fillna(rating_mean) # 3 - 결측값을 2의 값으로 채움 예제)효준이는 새로운 스마트폰을 구입하기 위해 애플과 삼성의 스마트폰 데이터를 수집했습니다. 그런데 실수로 특정 모델의 무게를 입력하는 것을 깜빡했다고 하는데요. 다행히 한 가지 모델만 누락되어 있고, 모델명이 같으면 용량이나 색상과 관계없이 무게가 ..

DateFrame - 결측값 찾기

Garbage in, Garbage out쓰레기를 넣으면, 쓰레기가 나온다 데이터의 퀄리티가 좋지 않다면, 의미있는 분석 결과를 얻기 어렵다. 이를 위해 원본 데이터를 분석하기 용이하게 다듬는 과정을 거치게 되는데, 이를 '데이터 전처리'라고 한다. df.info() airbnb_df.info() # 결측값을 제외한 데이터 수를 확인할 수 있음df.isna()airbnb_df.isna() # 데이터 프레임에서 결측값이면 True, 결측값이 아니면 False값을 출력함df.isna().sum()airbnb_df.isna().sum() # 컬럼별로 결측값의 개수가 계산됨(True=1, False=0)df.any()airbnb_df.insa().any(axis=1) # .any() 데이터프레임의 각 요소를 차..

DataFrame - drop() 함수로 데이터 삭제하기(feat.axis)

drop() 함수는 Pandas 라이브러리에서 데이터프레임이나 시리즈에서 특정 행이나 열을 삭제할 때 사용되는 메서드다. 주로 데이터 분석을 할 때 필요 없는 데이터나 특정 기준으로 데이터를 정리하고 싶을 때 유용하다.  로우를 삭제할 때는 함수 안에 바로 삭제할 로우의 인덱스 값을 넣어 주면 되고, 컬럼을 삭제할 때는 columns라는 파라미터를 사용해서 삭제할 컬럼의 이름을 넣어 주면 된다.# married 컬럼 삭제하기loan_df.drop(columns='married') import pandas as pd# 데이터프레임 생성df = pd.DataFrame({ '이름': ['철수', '영희', '민수', '지영'], '수학': [85, 92, 70, 88], '영어': [78, 8..

DataFrame - query() 함수 사용하기

query() 함수는 데이터 분석 라이브러리인 Pandas에서'DataFrame.query().' 메서드를 사용해 특정 조건을 만족하는 데이터를 쉽게 추출할 수 있다. 기본 사용법 - 불린 인덱싱하기query() 함수는 문자열로 표현된 조건식을 받아, 그 조건을 만족하는 데이터프레임의 행을 반환한다. 이는 SQL의 'SELECT ... WHERE...' 절과 유사하게 동작한다. 또, query() 함수를 사용한다면 보다 간결한 코드로 DataFrame에서 불린 인덱싱을 할 수 있다.내부적인 작동 방식은 대괄호를 사용하여 불린 인덱싱을 하는 것과 거의 동일하지만, 데이터가 많은 경우 query() 함수를 쓴다면 속도가 조금 느려질 수 있다.# 대출 신청자의 수입이 5,000 이상이다' 라는 조건식을 불린 ..