데이터 불러오기
import pandas as pd
train = pd.read_csv("타이타닉/train.csv")
test = pd.read_csv("타이타닉/test.csv")
shape 확인해보기
print(train.shape)
print(test.shape)
train.columns
# train과 test의 column은 다음과 같습니다.
#
# PassengerId : 탑승객의 고유 아이디
# Survival : 생존여부(0: 사망, 1: 생존)
# Pclass : 등실의 등급(1: 1등급, 2: 2등급, 3: 3등급)
# Name : 이름
# Sex : 성별
# Age : 나이
# Sibsp : 함께 탑승한 형제자매, 아내 남편의 수
# Parch: 함께 탑승한 부모, 자식의 수
# Ticket: 티켓번호
# Fare: 티켓의 요금
# Cabin: 객실번호
# Embarked: 배에 탑승한 위치(C = Cherbourg, Q = Queenstown, S = Southampton)
# columns 수를 추려내기 위해서 상관계수 분석 해보기 (인과관계를 나타내는 것은 아님)
상관관계 분석하기(피어슨 상관계수)
train.corr()
남녀 표현방식을 숫자로 변경
train["Sex"] = train['Sex'].replace('male',0)
test['Sex'] = test['Sex'].replace('male',0)
train['Sex'] = train['Sex'].replace('female', 1)
test['Sex'] = test['Sex'].replace('female', 1)
결측치 확인해보기
train.isnull().sum()
nbarked열에 존재하는 2가지 null값을 매꾸어주기 위해
null값을 제거한 후 상관관계 분석을 통해 기준 열을 이용하여 매꾸어보기
train2 = train.dropna(subset=['Embarked']) #Embarked 컬럼 결측치 제거
print(train2.shape)
import copy
train2 = train2.copy()
train2.loc[train2['Embarked'] == 'C','Embarked']=0
train2.loc[train2['Embarked'] == 'Q','Embarked']=1
train2.loc[train2['Embarked'] == 'S','Embarked']=2
train2.info()
데이터 타입 int로 변경
train2['Embarked'] = train2['Embarked'].astype(int)
특정 컬럼과 나머지 컬럼간의 상관계수 계산
train2.corrwith(train2['Embarked'])
Fare 컬럼과 가장 연관성이 뛰어남으로 Fare컬럼을 토대로 Embarked 컬럼 채우기
train[train['Embarked'].isnull()]
train[train['Fare'] == 80.0]
train[train['Pclass']==1]['Embarked'].value_counts()
train[train['Survived']==1]['Embarked'].value_counts()
train['Embarked'].value_counts()
S가 가장 많음으로 S로 채우기
train['Embarked'] = train['Embarked'].fillna("S")
train.isnull().sum()
train.loc[train.Embarked == 'C','Embarked']=0
train.loc[train.Embarked == 'Q','Embarked']=1
train.loc[train.Embarked == 'S','Embarked']=2
train['Embarked'] = train['Embarked'].astype('int64')
train.corr()
test 값의 null값도 매꿔 주기
test.isnull().sum()
test[test['Fare'].isnull()]
Fare열과 Pcalss열의 상관관계가 높으므로 Pclass가 3인 행들의 Fare열의 분포를 살펴보기
fare = pd.DataFrame(test[test['Pclass']==3]['Fare'].value_counts().nlargest(12))
# nlargest()가장 많은 비중을 차지하고 있는 장르를 추출하겠다는 의미
fare = fare.reset_index()
조건에 맞은 Fare 값들이 특출난 값이 없기 때문에 평균값을 채워 넣어주기
fare['index'].mean()
test['Fare'] = test['Fare'].fillna("8.395141")
test.isnull().sum()
Fare컬럼 표준화 하기
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train[['Fare']])
train_fare = ss.transform(train[['Fare']])
test_fare = ss.transform(test[['Fare']])
train['Fare2'] = train_fare
test['Fare2'] = test_fare
필요한 열만 독립변수로 가져오기 (age는 편차가 크고 null값이 많아 제외)
train.head(3)
data = train[['Pclass','Sex','SibSp','Parch','Embarked','Fare2','Survived']]
'Python' 카테고리의 다른 글
[Python] 유전체 정보 품종 분류 AI (Random Forest) (0) | 2023.01.11 |
---|---|
[Python] 따릉이 사용 예측 베이스라인 코드 (0) | 2023.01.05 |
[Python] Python-excel (2) (0) | 2023.01.03 |
[Python] Python-excel (1) (0) | 2023.01.03 |