본문 바로가기

Python/Pandas15

[pandas] 기상 데이터(시계열) 결측치 선형 보간 시계열 데이터의 결측치 처리 단순히 평균/중앙값/최빈값으로 결측치 처리하는 것은 바람직하지 않음 시계열 데이터의 비정상성 때문에 시간의 흐름에 따라 평균과 분산이 변하므로 시계열 imputation은 다르게 해야함 👉 imputation : 불완전한 데이터를 표준이나 대표성이 있는 다른 데이터를 활용하여 대체하는 과정 ▶︎ 시계열 결측치 처리 방법 (1) Last observation carried forward(LOCF) : 직전 관측치 값으로 결측치를 대체 Next observation carried backward(NOCB) : 직후 관측치 값으로 결측치를 대체 Moving Average / Median : 직전 N의 time window의 평균치 / 중앙값으로 결측치를 대체 모델링(결측치를 맞추는.. 2023. 11. 16.
[pandas] 조건에 맞는 데이터 필터링 : where( ), query( ) 🥑 조건에 맞지 않는 값을 일괄 대체하고 싶을 때 : where( ) 코드 예제를 통해 확인 : num_actor 열의 값이 2이면 그대로 두고, 아닐 경우 False로 변경 형식 : .where(조건, 거짓일때의 값) copied_data = df.copy() copied_data['two_actors'] = copied_data['num_actor'].where(copied_data['num_actor'] == 2, "False") copied_data[['two_actors']].head(2) 🥑 코드를 효율적으로 작성하여 필터링하고 싶을 때 : query( ) query( ) 메서드는 문자열로 표현된 조건을 입력으로 받는다 조건식은 데이터프레임의 열 이름을 사용하여 작성된다 여러개의 조건은 논리 .. 2023. 9. 7.
[Pandas] cut(), qcut()을 이용한 데이터 구간화 🍐 cut( ) : 데이터 수에 관계없이 같은 길이로 나눔 pd.cut(구간화하고 싶은 컬럼, bins = 구간수, labels = ['라벨명1', '라벨명2'...]) [예제1] copied_data = df.copy() copied_data['binning'] = pd.cut(copied_data['box_off_num'], bins = 3) copied_data.head(3) [예제2] copied_data = df.copy() copied_data['binning'] = pd.cut(copied_data['box_off_num'], bins = 3, labels = ["A", "B", "C"]) copied_data.head(3) 🍐 qcut( ) : 각 구간에 동일한 수의 데이터가 들어가도록 나.. 2023. 9. 7.
[Pandas] groupby , 다중 열 정렬 데이터프레임 다중 열 정렬(1) .sort_values(by = ['열1', '열2'...] ) three_columns = df[['time', 'num_staff', 'num_actor']].copy() sorted_df = three_columns.sort_values(by = ['time', 'num_staff']) sorted_df.head(3) 데이터프레임 다중 열 정렬(2) four_columns = df[['time', 'num_staff', 'num_actor', 'box_off_num']].copy() sorted_dataframe = four_columns.sort_values(by = ['box_off_num', 'time'], ascending = True) sorted_dataf.. 2023. 9. 7.
describe() : 범주형 변수에 적용하여 기술 통계량 확인 describe( ) describe() 함수는 수치형 데이터의 기술통계량을 확인하는 것으로 많이 쓰이지만, 범주형 데이터의 통계값도 확인할 수 있다 include 인자에 object를 할당해주면 된다 예제 train.describe(include="object") 👉 train 데이터프레임의 문자열(object) 타입의 열(column)에 대한 요약 통계가 출력됨 결과 해석 count: type 열의 비어 있지 않은(non-null) 데이터의 개수 5497개 unique: type 열에서 고유한(unique) 값의 개수 열에는 고유한(unique) 값이 2개 있음 즉, red와 white 두 가지 값으로 구성되어 있음 top: type 열에서 가장 자주 나타나는 값 가장 빈도수가 높은 값은 white .. 2023. 8. 17.
display() 함수 : 여러 개 데이터프레임 동시에 확인 display() 함수 display 함수는 주피터 노트북이나 Ipython 환경에서 사용함 비교나 분석을 위해 여러 개의 데이터 프레임을 동시에 확인해야 할 때 유용! print() 함수와 달리, 데이터프레임이 표 형태로 보여져, 가독성이 높아 좋다 👍 아래는 사용 예시다 2023. 8. 14.
[pandas] pd.qcut() 과 pd.crosstab() pd.qcut()란 pd.qcut()은 pandas 라이브러리에서 제공하는 함수 연속형 데이터를 동일한 구간 또는 분위수로 나누는데 사용 이를 통해 데이터를 이산적인 범주로 나눌 수 있음 q는 quantile(분위수)의 약자 즉, 데이터를 주어진 분위수로 나누는 작업 다음 예시를 보면, totvars에 해당하는 컬럼만 covidtotlaonly에 따로 저장 새로운 컬럼 'total_cases_q'를 생성하는데, 이때 qcut을 사용한다 가장 먼저 나눌 데이터를 표시해준다 labels : 나눈 구간을 표현할 때 사용할 라벨 q : 나눌 구간의 개수나 분위수의 리스트 [참고] precision은 소수점 이하 자릿수를 나타내는 매개변수 (여기서는 0 이므로 정수형이 나옴) covidtotalsonly = co.. 2023. 8. 9.
Index Alignment란? Index Alignment란? 서로 다른 두 개 이상의 데이터 구조를 합칠 때 인덱스(또는 행 이름)를 기준으로 데이터를 정렬하고 맞추는 과정 데이터 구조의 크기가 다르거나 순서가 다른 상황에서도 데이터를 일관되게 조작하고 비교할 수 있다 예를 들어, 다음과 같은 두 개의 데이터프레임이 있다고 하자. 두 데이터프레임을 더하려고 할 때, 열이름이 다르거나 크기가 달라서 연산하기 어렵다. 그런데, index alignment가 동작하면 인덱스를 기준으로 데이터가 맞춰진다. df1: A B C 0 1.0 2.0 3.0 1 4.0 5.0 6.0 df2: B C D 0 7.0 8.0 9.0 1 10.0 11.0 12.0 결과적으로 각 셀에서 해당 인덱스의 데이터가 정렬되어 연산이 된다. result = df1 .. 2023. 8. 9.
[pandas] 결측치 처리하기 결측치 처리하기 [예제] 인구통계 컬럼에서 결측치 데이터 확인 1. 데이터 불러오기 DATA_PATH = './' covidtotals = pd.read_csv(DATA_PATH + "data/covidtotalswithmissings.csv") 2. 5가지 인구 통계를 나타내는 컬럼만 따로 객체에 저장 demovars = ['population','pop_density','median_age','gdp_per_capita', 'hosp_beds'] 3. 열 별로 결측치 수 파악 기본적으로 df['컬럼명'].isnull().sum() 을 사용한다 행/열 구분은 axis 로 하는데, axis = 0 이면 열 기준, axis = 1 이면 행 기준이다 # 열 별로 결측치 수 파악 covidtotals[demo.. 2023. 8. 9.
728x90