im=SimpleImputer여기서 im은 SimpleImputer 클래스의 인스턴스입니다 인스턴스화된 im 객체는 SimpleImputer 클래스의 기능을 활용할 수 있습니다.
im.fit_transform(x_miss) fit_transform() 메서드를 호출하여 x_miss 데이터에 대해 결측값을 처리하고 대체된 값을 반환할 수 있습니다. fit() 메서드와 transform() 메서드를 결합한 것으로, 학습과 변환을 한 번에 수행합니다. 즉,x_miss 데이터를 im 객체를 사용하여 학습하고, 결측값을 대체한 후 변환된 데이터를 반환한다.라고 생각하시면 될것 같습니다.
③ 데이터 통합(Data Integration)
▪ 여러 개의 데이터 파일을 하나로 합치는 과정으로 Pandas의 merge()함수 사용합니다.
#'Store' 열의 고유한 값들의 개수를 출력합니다. 이는 데이터프레임에 있는 다른 매장 수를 나타냅니다.
print(len(df['Date'].unique()))
#Date' 열의 고유한 값들의 개수를 출력합니다. 이는 데이터프레임에 포함된 고유한 날짜 수를 나타냅니다.
1115
942
len() 함수는 시퀀스(리스트, 튜플, 문자열 등)의 길이를 반환합니다. 이를통해 고유한 값의 개수를 확인할수 있습니다. 예를 들어, .df['Store']열에는 [1, 2, 3, 1, 2, 3, 4]와 같은 값들이 있다고 가정해봅시다.df['Store'].unique()를 호출하면 [1, 2, 3, 4]와 같은 고유한 값들을 얻게 됩니다. 그리고len(df['Store'].unique())를 호출하면 4라는 결과를 얻게 됩니다.
이번에는 'DayOfWook'를 확인해보겠습니다.
print(df['DayOfWeek'].value_counts())
5 145845
4 145845
3 145665
2 145664
1 144730
7 144730
6 144730
Name: DayOfWeek, dtype: int64
'DayOfWeek' 열의 각 값들의 빈도를 출력합니다. 이는 데이터프레임에 포함된 각 요일별 레코드 개수를 나타냅니다.value_counts()함수는 Pandas 시리즈에서 각 값의 발생 빈도를 계산합니다. 이 함수는 주로 범주형 데이터나 이산형 데이터의 분포를 파악할 때 사용됩니다.value_counts()함수를 호출하면, 해당시리즈의 고유한 값과 해당 값이 시리즈에서 발생하는 횟수를 반환합니다. 결과는 내림차순으로 정렬되어 반환되기 때문에, 가장 빈번하게 등장하는 값부터 확인할 수 있습니다.
#열의 데이터를 datetime 객체로 변환합니다. datetime 객체는날짜를 년도, 월, 일 등으로 분류할 때 사용됩니다. infer_datetime_format 매개변수를 True로 설정하여 날짜 형식을 자동으로 추론하게 합니다. 이렇게 한다면 날짜변수 분류작업 속도 높입니다.
df['Month']=df['Date'].dt.month#변환된 'Date' 열에서 월 정보를 추출하여 새로운 'Month' 열을 생성합니다.
df['Quarter']=df['Date'].dt.quarter#'Date' 열에서 분기 정보를 추출하여 새로운 'Quarter' 열을 생성합니다.
df['Year']=df['Date'].dt.year#'Date' 열에서 연도 정보를 추출하여 새로운 'Year' 열을 생성합니다.
df['Day']=df['Date'].dt.day#Date' 열에서 일 정보를 추출하여 새로운 'Day' 열을 생성합니다.
df['Week']=df['Date'].dt.isocalendar().week #Date' 열에서 ISO 주차 정보를 추출하여 새로운 'Week' 열을 생성합니다.
통합이후 시각 자료도 있으면 좋을것 같습니다. 다음은 df의 각 수치형 열에 대한 히스토그램을 생성하고 출력합니다. 히스토그램은 변수의 값 분포를 시각적으로 표현하는 도구로, 값 범위를 일정한 구간으로 나눈 뒤, 각 구간에 속하는 데이터의 개수를 막대로 표현합니다. 이를 통해 각 변수의 분포와 데이터의 형태를 쉽게 확인할 수 있습니다.
df.hist(figsize=(20,20))
figsize=(20, 20)는 생성되는 그래프의 크기를 설정합니다. 여기서 20은 가로 길이, 20은 세로 길이를 나타냅니다. 이 값은 인치 단위로 설정됩니다.
만들기는 했지만 처음에 저도 그래서 뭐? 라는 심정이 들긴 했습니다. 그래서 여기서 어떤것을 가볍게 확인 할 수 있는지 설명드리겠습니다.
예를들어 빨간 박스는 목적변수 Sales가 20,000 이하가 대부분임을 확인할수 있고 보라색 박스는 0 또는 1의 값만 갖는 이항변수임을 확인 할 수 있습니다.
추가적으로 자료의 결측 정도를 확인할수 있습니다.
▪ 10% 이하: 결측치 대체 노력이 필요합니다.
▪ 30% 이상: 해당변수를 제거하는 것이 모형의 bias(편향)를 피할 수 있습니다.
코드로 데이터프레임 df에서 각 열별 결측값의 비율을 계산하여 반환하겠습니다.
df.isnull().sum()/df.shape[0]*100
#df.isnull(): 데이터프레임 df의 각 값이 결측값인지 아닌지를 판별하고, 결과를 True(결측값) 또는 False(결측값이 아닌 값)로 반환합니다.
#df.isnull().sum(): 각 열의 결측값 수를 계산합니다. True는 1, False는 0으로 취급되므로, 이를 합산하면 결측값의 개수를 얻을 수 있습니다.