현재 데이터는 결측치 및 이상치 제거 작업을 위해 일부 가공되어 있음.
현재 위치 포함도 가능
data
로 지정해서 편리하게 불러올 것.data 폴더 안에는 새 파일을 만들 수 없음.
- 그 이유는 뭘까?
판다스 시리즈 형태: ex)특정 칼럼 볼 때(대신 컬럼 2개 이상 불러올 수 x)
2개 이상 보려면 -> 리스트로 묶기
판다스 시리즈 -> 판다스 프레임으로 강제 변경
판다스 프레임 -> 판다스 시리즈로 강제 변경
.describe()
.apply()
.sort_values()
.tail()
.replace()
pd.to_numeric()
.get_dummies()
Aggregation
.merge()
.value_counts()
생존 예측에는 랜덤 넘버들(고객 ID, 주민번호, 전화번호) 불필요!
KeyError : 기본적으로 drop은 기본축으로 데이터를 찾음. -> 축 변경해야함!
하지만, head 찍으면 다시 살아남.
덮어쓰기 허용으로 바로 적용하기
동시 제거
여러 개는 리스트로 묶자!
iloc은 줄의 이름(4, 5, 6 등)을 기반으로 불러옴.
이름을 바꿔서 어떻게 다르게 동작하는지 살펴보기
.isna().sum() -> 결측치 개수의 합이 나옴!
.isna().mean() -> ⭐️비율⭐️
Null 값 확인
index로 묶어서 저장
Age, Embarked
결측치 제거
특정 컬럼 기준
S의 경우, 약 72% 차지
가수 채워넣기
Age 아웃라이어 의심 -> 145 값
참고) 내림차순 정렬: ascending = False 사용
SibSp도 확인
첫번째 방법 : displot
SibSp
Age
문제점 : x축 값으로 데이터가 어디까지 맥시멈으로 퍼져있는지는 짐작이 가능하지만, x축 값 사이에 몇 개의 데이터가 계속 이어져 있는 것인지 혹은 그 사이 값이 아예 없는지 여부는 바로 알아차리기 어렵다!
두번째 방법 : scatterplot - 판정도 그리기(x축, y축 값 지정 필요)
SibSp
Age
세번째 방법 : boxplot
🚨 단점 : 극단적으로 값을 처리해서 이상치를 너무 많이 덜어내는 문제가 있음.
SibSp
Age
보는 방법 : 아래의 그림에서 시작점과 끝점을 벗어나 기준을 벗어나는 값이 아웃라이어!
- IQR : 75% - 25%
- 시작점과 끝점 : IQR * 1.5로 계산
간단한 머신러닝 모델을 사용한다고 간주하고 애매한 97값 조정
80세 이상 값은 80으로 변환
70 값도 반영
바로 적용하는 방법(람다 함수 사용)
상황 가정 : 중복된 데이터로 보여 이름을 부득이하게 삭제한 케이스
replace는 판다스 프레임, 시리즈 둘 다 가능하나, map은 시리즈에서만 작동
자릿수별로 인덱싱
lower : 문자를 소문자로 변경
upper : 문자를 대문자로 변경
lower로 바꾼 텍스트를 다시 upper로 바꾸기 -> 이어서 작성하면 됨.
split : 문자열 자르기
단순 인덱싱으로 원하는 결과가 안나올 것임.
데이터 우선 확인
띄어쓰기 기준으로 데이터를 나누기(컬럼으로 나눠서 보자)
숫자 파트만 볼 수 있게 적용
문자열이 있는지 찾기 : isdigit
strptime과 strftime
날짜 계산
ticket_date 형태 확인
datetime형으로 변환
날짜 값만 가져와보기
.dt
를 붙이자!실제 데이터에서 날짜가 며칠인지 계산하기
buy_before
로 저장날짜를 int형으로 저장해주고
계산에 활용하기