정형 데이터 분석 / 데이터 시각화
1. Pandas
-
Numpy 기반의 정형데이터(엑셀 형태)를 핸들링 하기 위한 파이썬 라이브러리
-
주요 구성
- Series - 행과 열을 표현하는 단위(1차원), Key 값을 가진 List
- DataFrame - Series(행) + Series(열)를 묶어 만들어진 2차원 형태 (흔히 보는 엑셀과 유사한 형태)
- index 라는 key 값을 항상 가지고 있음
- Series 데이터와 DataFrame 데이터의 명령어가 다르니 주의
-
주요 명령어
-
엑셀 파일을 읽어
DataFrame
형태로 만들기(pd.read_csv
,pd.read_sql
등 여러가지 확장자로 읽기 가능)df = pd.read_excel('파일명.xlsx', encoding='utf-8-sig')
-
Index 를 기본값(0,1,2...n)이 아닌 별도의 열로 대체
df.set_index('열 이름')
-
DataFrame의 세부 내용을 간략하게 확인할 때
df.head() # 전체 중 일부를 확인 head() <-> tail(), default=5 df.describe() # DataFrame의 기술통계량(평균, 표준편차, 분위 ...) df.info() # DataFrame의 열 정보 (Dtype, Null Count ...)
-
Series 데이터 추출하기
df.loc[3] # Series로 반환 (3 = index) df.loc[3:6, 'col1':'col_N'] # 3~6행의 col1 ~ col_N까지 반환(슬라이싱이지만 뒤까지 포함) df['col'] # col 데이터 반환 ( Series 형태 ) df['col'].str.contains('data') # col 열에 data를 포함하는 열은 True 아니면 False 반환, data에 들어갈 수 있는 DataType str뿐이지만 '|'를 사용해 여러 조건을 한번에 찾아낼 수 있음(data = data1|data2|data3|...) df['col'].str.endswith('data') # col 열에 끝이 data를 포함하면 True 아니면 False 반환 <=> startswith df['col'].str.upper() # col 열에 str 데이터를 모두 대문자로 변환 <=> lower()
-
DataFrame에서 데이터 추출하기
- Series 추출 방식과 비슷하지만 대부분 대괄호로 2번 감싸지는 패턴이 있다.
df.loc[[3]] # DF로 반환, Series에 비해 DF의 시인성이 좋음, df.loc[[3,6,9]]처럼 여러개도 동시에 반환 가능 df.loc[df['col'].str.contains('data'), :] # col행의 data를 포함한 모든 열을 DF 형태로 반환 df.iloc[3:6, 0:3] # 3~5행 중 0~2번째 열까지만 DF로 반환 loc의 슬라이싱과 다르게 뒤를 포함하지 않는다. df[['col1', 'col2', 'col3']] # 전체 행의 col1 ~ col3 를 DF 형태로 반환
-
DataFrame 데이터 핸들링 예
df['new_col'] = df['col'].apply(lambda x : x + 1) # col열 data에 함수를 적용한 값을 새로 생성된 new_col행에 추가해준다.(apply + 함수가 for문에 비해 빠르다.) pivot_df = pd.pivot_table(df, index='col1', aggfunc=np.sum) # df 데이터를 col1 기준으로 모두 더해준 피벗테이블을 반환(엑셀의 피벗테이블과 같다, aggfunc = aggregation function(집계 함수)) del df['col'] # col 열 삭제 df.drop(['row']) # DF에서 row(행) 삭제 df.drop(['col'], axis=1) # DF에서 col(열) 삭제 (axis는 축 방향으로 1이면 열, 0이면 행 삭제(default=0)) list(df.columns) # DF의 Column명을 뽑아 list로 형변환 (df.index는 인덱스) df.rename(columns ={'col1':'열1', 'col2':'열2'}, inplace=True) #col1, col2 열의 이름을 열1, 열2로 변경(inplace는 원본 덮어쓰기 여부(default=False)) df.sort_values(by='col1', ascending=False, inplace=True) # col1 안의 Data를 기준 정렬, ascending 오름차순 여부 (<=>sort_index(인덱스명 기준 정렬)) new_df = df # 변수만 다르고 같은 메모리를 가르키기 때문에 원본에 영향을 주게 되는 복사 형태 new_df = df.copy(deep=True) # default deep=True, 다른 메모리를 가지기 때문에 원본에 영향을 주지 않는 복사
-
-
결측치 처리 방법
- 전체 열의 대푯값을 계산해 삽입
- 결측치 전후 데이터를 기반으로 평균으로 삽입(시계열 데이터인 경우)
- 행 단위로 그룹을 묶어 내 그룹 내 대푯값으로 삽입
- 예측 모델을 만들어 삽입
- 결측치가 일정 % 이하인 경우 열 데이터를 모두 제외
- 기타 다른 방법들
Author And Source
이 문제에 관하여(정형 데이터 분석 / 데이터 시각화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@watemelon_0718/정형-데이터-분석-데이터-시각화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)