빅데이터 분석기사 66

Machine Learning 사전 학습 1 전처리, 탐색, 타입 확인, 인코딩

2유형 과정 주의사항 객체 출력 안 됨 -> print()사용 ! 코랩환경 아님 -> 코드를 길게 쭉 입력해야 함 ! 전처리 파트 문제지 요구사항ㅇㅔ 제시된 칼럼의 타입이 파일에서 읽어온 데이터와 동일한가? 숫자가 아닌 문자 포함 -> object로 표기되며 해당 문자를 찾아서 없애기 1. astype('int') or float로 변환 시도 -> 오류시 2. series.replace(regex=True) or Series.str.replace()사용 3. 다시 astype() 변환 날짜/시간 1. pd.to_datetime(Series, forma='%Y%m%d') 사용 1.1 일반적으로 astype('datetime64')로 가능 # 새로운 칼럼으로 추가하는 것이 좋음 # 원본으로 돌리지 않아도 됨..

결측치 확인/채우기, rename으로 컬럼명 변경

df['칼럼명'].fillna(값) : 칼럼명의 na를 값으로 채우기 astype() # [4-13] bread의 '폐업일자'에 대해 결측치인 것을 0.0으로 채우기 한 뒤, # 데이터 타입을 'int64'로 수정합니다. bread['폐업일자'] = bread['폐업일자'].fillna(0.0).astype('int64') bread.dtypes 인허가일자 int64 상세영업상태코드 int64 폐업일자 int64 소재지전체주소 object 사업장명 object 업태구분명 object 구명 object 동명 object dtype: object 결측치 확인 정수 -> isna().sum().sum() 불린타입 -> isna().any().any() # [4-14] bread의 전체 결측치의 개수를 하나의 ..

데이터 전처리를 위한 str Accessor

accessor - str 종류 str.strip() 제거 str.split() 분리 str.join() 합치기 str.replace() 변경 data = {'A': [' 김 수민 ', ' 이 나라 ', ' 황 소 라 '], 'B': [' d2021-10-29. ', ' \n\t\r2021-10-30c \n', '2021-11-01c '], 'C': ['*7', '6', '*7']} temp = pd.DataFrame(data) print(temp) A B C 0 김 수민 d2021-10-29. *7 1 이 나라 \n\t\r2021-10-30c \n 6 2 황 소 라 2021-11-01c *7 A str.split() 나누기 str.split().str.join('') 분리된 문자열을 구분자 사이에 넣어..

문자열 분리(split) - 주소 분리하기

문자열 엑세서 str 사용해 split() 메서드 사용 str.split() bread['소재지전체주소'].str.split() 0 [광주광역시, 서구, 치평동, 1177-2번지, (106,107호)] 1 [광주광역시, 서구, 유촌동, 868-1번지, (102호)] 2 [광주광역시, 서구, 화정동, 1611번지, 101호102호103호, 상가2동] 3 [광주광역시, 북구, 운암동, 110-5번지] 4 [광주광역시, 북구, 오치동, 578-4번지, 1층] str.split().str[0] : 문자 분리하고 첫번째 인덱스 추출 # [4-8] bread 의 '소재지전체주소' 중 시/도에 대한 정보(목록)를 추출합니다. # 광주광역시 부분만 필요함 # split은 그냥 사용 x -> str 엑세서와 함께 사용함..

행/열이 많은 csv 읽고 구조 확인하기

경고 메세지 제거 way 1 경고 메세지 없애기 low_memory = False way2 칼럼 디타입 설정 dtype{'건물소유구분명':object, '전통업소지정번호': object}를 # [4-1] 제과점에 대한 파일 './data_03/bread_data.csv'을 # encoding='cp949' 를 사용하여 읽어와 df라는 이름을 붙인다 # low_memory=False 경고메세지 없애기 # dtype={'건물소유구분명': object, '전통업소지정번호': object}를 사용하여 Warning를 제거할 수 있음 df = pd.read_csv('bread_data.csv', encoding='cp949') df.dypes.to_frame() : 시리즈 -> 데이터프레임 변경 # 시리즈 -> ..

5/16 그룹별 통계 심화 학습 (groupby, pivot_table)

데이터 값 실수, 소수점 넷째자리 표시 pd.option.display.floa_format = '{:.2f}'.format # 데이터 값 실수. 소수점 넷째자리까지 표시 pd.options.display.float_format = '{:.2f}'.format 월/년 별 미세먼지의 mean, min, max df.pivot_table(index=, columns=, values, aggfunc=) # [3-48] df_dust의 월/년 별 미세먼지의 'mean', 'min', 'max' 구하기 # pivot_table 사용, values의 경우 목록으로 지정시와 단독 지정시가 다르게 표시됨 # way 1 칼럼 명 안 보여주기 df_dust.pivot_table(index=['월'],columns=['년'..

평균을 사용한 결측치 대체

측정일시별 미세먼지별 평균 way 1 df.groupby('칼럼')['칼럼'].agg(['mean']) way 2 df.groupby('칼럼')['칼럼'].mean() -> 인덱스 바뀜 # 측정일시별 미세먼지별로 평균 # way 1 df_dust.groupby('측정일시')['미세먼지(㎍/㎥)'].agg(['mean']) # way2 df_dust.groupby('측정일시')['미세먼지(㎍/㎥)'].mean() 측정일시 20160101 70.736842 20160102 53.789474 20160103 98.861111 20160104 76.205128 20160105 34.333333 ... 20200814 31.660000 20200815 37.400000 20200816 22.380000 20200..

5/15 결측치 제거하기

결측치 제거에 사용되는 메서드 df.dropna() 중에서 df.dropna(how='all', subset =['컬럼'..]) 모든 데이터가 결측치인 행 삭제 + 지정된 컬럼만 삭제 검색 대상 # [3-30] df_dust 에서 ['오존농도(ppm)','미세먼지(㎍/㎥)', '초미세먼지(㎍/㎥)']에서 # 모든 데이터가 결측치인 행을 제거하여 결과를 temp1으로 저장합니다 temp1 = df_dust.dropna(how='all',subset=['오존농도(ppm)','미세먼지(㎍/㎥)', '초미세먼지(㎍/㎥)']) # df_dust와 temp1의 행의 수 (len)을 확인하여 제거된 행의 개수를 확인합니다. print(len(df_dust)-len(temp1)) df.dropna(how='all', ..

그래프로 결측치 확인하기 feat.heatmap

데이터 모두 출력 # 데이타가 많은 경우 모두 출력 안되고 ... 으로 생략해서 출력됩니다. # 생략되지 않는 행, 열의 개수를 설정하여 생략되지 않고 출력되도록 합니다. pd.set_option('max_rows', 800) #출력할 max row를 지정 pd.set_option('max_columns', 100) #출력할 max columns를 지정 데이터 복제 df = df2.copy() 행별 결측치 개수 세기 전체 개수 df.isna().sum().sum() # [3-23] df의 행별 결측치를 조사합니다. # sum(axis=0) 축이 0인 것이 기본값이기 때문에 0부터 시작 df.isna().sum() df.set_index('측정일시 ') : 측정일시 index 설정, sort_index()..

날짜타입으로 변경하기

dtypes : 데이터타입 확인 # [3-12] df의 컬럼별 데이터 타입을 확인합니다. # df.info()가 아닌 데이터 타입만 보기 # 디타입 df.dtypes pd.to_datetime(df['칼럼명'], format='~') 날짜타입 변경 # [3-14] df의 '측정일시'에 대해서 format='%Y%m%d'을 지정하여 데이터 타입을 datetime으로 변경합니다. # 올바르게 변경되는 것을 확인할 수 있습니다. # format은 필수 아님 일반적인 날짜 형식은 변경 안 해도 ㄱㅊ pd.to_datetime(df['측정일시'],format='%Y%m%d')​ 1축에 측정일시 2 칼럼을 format %Y%m%d%로 삽입 # [3-15] df의 '측정일시'에 대해서 format='%Y%m%d'을 ..