본문 바로가기

Computer Science/Jupyter notebook

Pandas로 cvs 파일 편집하기 with Feature Engineering

 

앞의 게시물에서 타이타닉 생존자를 찾기 위한 Feature Engineering을 진행했습니다.

273k.tistory.com/6

 

데이터 사이언스 입문

더보기 *시작에 앞서 세 가지 프로그램의 설치가 필요합니다.* 1. Anaconda - 파이썬과 데이터 분석에 필요한 각종 도구를 포함하고 있습니다. 2. Chrome - 데이터 분석이 이루어지는 주피터 노트북을 �

273k.tistory.com

특징 선택, 특징 생성, 특징 추출의 단계를 거쳐 데이터를 직접 가공했었는데요. 오늘은 Pandas를 이용한 데이터 처리를 진행해보겠습니다.

 

 

1. 특징 선택

 

 

판다스로 csv 파일을 불러옵니다.

* 같은 폴더에 넣으면 위치를 표시하지 않아도 됩니다.

* 엑셀파일이면 엑셀에서 다른이름으로 저장, csv 파일 선택해주시고 인코딩 오류 뜰 경우에는 csv 파일을 메모장으로 연 후 다른이름으로 저장, 아래 부분 인코딩 UTF-8 선택해서 저장해주시면 됩니다.

 

확인하고자 하는 일부 항목들만 추출할 수 있습니다. 이제 다음 단계에서 이 부분들을 채워보도록 하겠습니다.

* 엑셀에서는 빈칸이 Pandas에서는 NaN으로 표현됩니다.

 

 

2. 특징 생성

 

 

# Age의 Nan을 평균으로 채우기

 

df[항목].fillna() 사용했습니다.

 

# Age 구간 나누기

 

 

 

# Fare의 Nan을 평균으로 대체하기

 

* 코드 끝에 세미 콜론을 붙이면 결과 표시가 생략됩니다.

 

 

# 형제 수 + 부모 수 = FamilySize

 

 

# 객실 빈칸 채우기

 

객실 빈칸만 채워주면 됩니다

* 객실 뒷 번호는 삭제하고 앞 알파벳만 남깁니다.

* 앞자리 알파벳 통계를 보니 C가 제일 많아 나머지 빈칸들을 C로 채워줍니다.

* 최종 빈칸 통계를 내면 모두 다 0인 것을 확인할 수 있습니다.

 

결측 값 채우는 기타 함수들

1. 결측 값을 특정 값으로 채우기 : df.fillna(0)
2. 결측 값을 앞/뒷 값으로 채우기 : fillna(method='ffill') fillna(method='bfill')

                                             fillna(method='pad') fillna(method='backfill')

    +) 앞/뒷 값으로 채우는 횟수 제한하기 : fillna(method='  ', limit=number)

3. 결측 값을 평균으로 대체하기 : df.fillna(df.mean())   /  df.where(pd.notnull(df), df.mean(), axis='colums')

    +) 한 colum의 평균으로 나머지 colum 결측 값 채우기 : df.fillna(df.mean()['C1'])

    ++) 일부 colum만 평균으로 채우기 : df.fillna(df.mean()['C1':'C2'])

 

 

# Embarked의 NaN을 가장 많은 값으로 채우기

 

 

# Cabin의 문자값 데이터를 숫자로 변환

 

 

 

# Embarked, Sex의 문자값을 숫자로 변환

 

 

# IsAlone(혼자 탑승했는가?) 열 추가하기

 

 

 

 

 

3. 특징 추출

 

 

# 데이터 통계에 의미 없는 5개의 열을 삭제

 

 

 

 


Decision Tree :: 의사결정 나무

 

그 이름처럼 의사를 결정하는데 도움을 주는 나무 형태의 예측 모델입니다. 경영학, 경제학, 컴퓨터 공학 등 여러 학문에서 사용되는 모델이고 일상생활에서도 항상 무의식적으로 사용하고 있습니다.

* 일반적으로 빠르게 정답에 도달할 수록 더 우수한 트리라고 볼 수 있습니다. / 그러나 항상 높은 성공율을 가지는 것은 아닙니다.