데이터로 Deep Dive

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

Python 8

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 - 날짜와 시간 데이터 다루기

데이터를 불러올 때 형식 지정하기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 - 숫자 데이터 가공하기

스케일링정규화(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 - 이상점 찾고 처리하기

이상점이란?이상점 찾기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. 모든 데이터가 이상점 안에 있도록 데이..

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 이상이다' 라는 조건식을 불린 ..

DataFrame - csv, 엑셀(xls) 파일을 DataFrame으로 불러오기 / 내보내기

엑셀(xls) 파일을 DataFrame으로 불러오기주로 csv 파일을 사용하지만xls도 사용하는 경우가 있으므로 정리하기로 함 df = pd.read_excel('data/df.xlsx', sheet_name=1, header=3, usecols='B:H') # df 이름으로 된 xlsx 파일을 불러와서 df라는 이름으로 저장함# sheet_name=1: xls파일에서 Sheet2의 파일을 불러와야 하므로 '1'을 넣어줌(0부터 시작하므로)# xls 파일의 Sheet2에선 header가 네 번째 줄부터 시작하므로, header=3 을 넣어줌# usecols라는 파라미터를 이용해 몇 번째 열부터 시작하는지 알려줌CSV 파일로 내보내기pandas의 to_csv() 함수를 사용하면 DataFrame을 CSV ..