권철민 저, '파이썬 머신러닝 완벽 가이드', 2019.02.28
내 맘대로 요약 공부 중(문제시 비공개 및 삭제)
최초 작성일 2020.09.12
2.1 Pandas란?
- 파이썬에서 2차원 데이터를 효율적으로 가공 및 처리할 수 있게 지원하는 패키지
- 행(Row) x 열(Column)로 구성. 엑셀의 시트와 닮아있다고 생각하면 된다.
- 핵심 객체는 DataFrame으로, DataFrame은 Column이 여러 개인 데이터 혹은 여러 개의 Series로 이루어진 데이터
- Series는 Column이 한 개인 데이터
- import pandas as pd
2.2 데이터 불러오기
- read_table() vs read_csv()
- 기본 필드 구분 문자가 read_table()은 탭('\t'), read_csv()는 콤마(','). 지정사용 가능 pd.read_csv('파일경로', sep='\t')
- .head()로 맨 앞에 있는 N개의 Row 데이터 확인, .shape로 DataFrame의 행과 열 크기 확인 가능
- .info(), 총 데이터 건수와 데이터 타입 Null수 확인 가능
- .describe(), 칼럼별 숫자형 데이터의 최대, 최소, 평균, 분산 등 확인 가능(숫자형 데이터만 가능)
- .value_counts(), 해당 칼럼의 유형과 건수를 확인 가능
2.3 데이터 변환(DataFrame, list, dict, ndarray)
- 1차원 list, ndarray to DataFrame
- 2차원 list, ndarray to DataFrame
- dict to DataFrame
- DataFrame to list, .values.tolist()
- DataFrame to ndarray, .values
- DataFrame to dict, to_dict()
2.4 데이터 생성, 수정 및 삭제
- DataFrame 칼럼 데이터 생성 및 수정, DataFrame['칼럼명'] = '값', '칼럼명' Series에 '값'을 할당하고 DataFrame에 추가
- 삭제, DataFrame.drop(label=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise)
- axis=0(행, Row), axis=1(열, Column)
- DataFrame.drop('칼럼명')
- inplace = True 원본 데이터도 수정 된다. False는 원본데이터는 수정되지 않고 그대로 유지
2.5 Index 객체
- 인덱스 객체만 추출, .index
- .values 로 ndarray 데이터로 변환
- Index를 추출하긴 했지만, 사실상 연속된 숫자 데이터랑 같다고 보면 된다
- 하지만, Index 객체는 함부로 변경할 수 없다. 연산에서 제외되며 오직 식별만 할 뿐
- .reset_index(), 새로운 인덱스 연속 숫자형으로 할당되며 기존 인덱스는 'index' 칼럼으로 생성 됨
- .reset_index(inplace=False, drop=True), inplace는 위와 같고 drop=True는 이전 인덱스는 삭제 한다는 뜻
2.6 데이터 선택 및 필터링
- DataFrame['칼럼명'], '칼럼명'에 대한 데이터 선택
- DataFrame[0:2], 인덱스 값이 '0'이상 '2'미만인 데이터 선택
- DataFrame[DataFrame['칼럼명'] ='값'], '칼럼명'의 데이터가 '값'인 데이터만 선택
- 위치기반 인덱싱, .iloc[](DataFrame의 첫번째 행, 첫번째 열의 데이터를 선택하고자 하면 DataFrame.iloc[0,0])
- 명칭기반 인덱싱, .loc[](DataFrame.loc['인덱싱','칼럼명'])
- iloc[], loc[]의 슬라이싱 차이(iloc[]은 마지막값 -1, loc[]은 마지막값 까지 반환)
- 불린 인덱싱, 데이터 필터링을 쉽게 할 수 있음
- 복합 조건(and 조건= & / or 조건= | / Not 조건= ~)
- 개별 조건을 변수에 할당하여, 변수를 결합해서 불린 인덱싱 가능
2.7 데이터 정렬(Aggregation, GroupBy)
- DataFrame, Series 정렬, .sort_values(by=['칼럼명'])
- 기본 ascending=False는 내림차순, True 오름차순 / 기본 inplace=False는 원본데이터 유지, True 원본데이터 수정
- Aggregation 적용(min(), max(), sum(), count() 등), DataFrame은 모든 칼럼 데이터에 대해 적용 됨
- groupby(by='칼럼명'), '칼럼명'을 기준으로 groupby(데이터 재배치) 됨
- groupby()로 정렬된 데이터의 Aggregation을 여러개 적용할 때, agg()의 인자로 사용하면 됨
- 복잡한 처리를 위해, 딕셔너리 형태로 aggregation 적용 가능
2.8 결손 데이터 처리(NULL, NaN)
- 결손 데이터 여부 확인, .isna() / 결손 데이터 수 확인 .isna().sum()
- 결손 데이터를 다른 값으로 대체, .fillna('대체 값') / inplace = True, False 적용 가능
- 결손데이터가 있던 Age, Cabin, Embarked 칼럼 NaN 데이터를 모두 대체함
2.9 lambda 데이터 가공
- 함수형 프로그래밍을 쉽게 만든 명령어, 일시적으로 사용하는 함수
- lambda 입력인자 : 입력인자를 기반으로 한 계산식
- 여러 개의 값을 입력 인자로 사용해야 할 경우, map() 함수와 결합해서 사용
- DataFrame, lambda, apply로 데이터 가공
- DataFrame, lambda, apply로 조건 데이터 가공
- 단, 조건이 너무 많이 필요할 경우 조건에 대한 함수를 따로 만들어서 사용하는 것이 편함
'코딩 > Machine Learning' 카테고리의 다른 글
5. 분류(Classification)_1 (0) | 2020.12.10 |
---|---|
4. 평가(분류 평가) (1) | 2020.11.29 |
3. Scikit-learn(사이킷런) (0) | 2020.10.24 |
1. Numpy (0) | 2020.09.08 |
Anaconda3로 Tensorflow-gpu 설치하기 (0) | 2020.03.29 |
댓글