# 생존 여부(Survived)에 따른 연령(Age) 분포
S = sns.FacetGrid(train, col='Survived')
S.map(plt.hist,'Age',bins=15)
# 다양한 범주형 값을 가지는 데이터를 시각화하는데 좋은 방법=FacetGrid
plt.show()
S의 파생변수를 생성한 뒤 Seaborn의 FacetGrid를 사용하여 시각화 진행
Map 함수를 사용
# 성별(Sex) 변수를 숫자 범주형 변수로 바꿔줌
Sex_mapping = {'male':1, 'female':2}
for dataset in combine:
dataset['Sex'] = dataset['Sex'].map(Sex_mapping).astype(int)
#pd.cut
연속된 수치(continuous values)를 구간으로 나누어 카테고리화 할 때 사용합니다.
bin = [0, 18, 25, 35, 60, 100]
group_names = ['Baby', 'Youth', 'YoungAdult', 'MiddleAged', 'Senior']
train['AgeGroup'] = pd.cut(train['Age'], bins=bin, labels=group_names)
train['AgeGroup'].value_counts()
#.mode()
MODE는 배열 또는 데이터 범위에서 가장 자주 발생하거나 반복적인 값을 반환합니다. = 최빈값 대체
# Embarked의 결측치를 최빈값으로 대체 'S'
freq_port = train.Embarked.dropna().mode()[0]
freq_port
train['Embarked'] = train['Embarked'].fillna(freq_port)
#Labelencoder()
sklearn.preprocessing 안에 있는 모듈인 LabelEncoder를 활용하면 카테고리를 수치화할 수 있다.
from sklearn.preprocessing import LabelEncoder
label = LabelEncoder()
for col in ['Sex', 'Embarked', 'Title', 'AgeGroup']:
train[col] = label.fit_transform(train[col])
# exclude = 수치형 변수를 가진 컬럼만 출력하라
df.select_dtypes(exclude=object).columns
# include = 범주형 변수를 가진 컬럼만 출력하라
df.select_dtypes(include=object).columns
#4분위 범위(IQR) 값을 구하여라
Q3- Q1
.quantile(0.75) - quantitle(0.25)
#nunique()
데이터에 고유값들의 수를 출력해주는 함수
#unique()
데이터에 고유값들이 어떠한 종류들이 있는지 알고 싶을때 사용하는 함수
#reset_index(drop=False)
열을 인덱스로 설정하고 기존의 인덱스 열은 사라진다.
추가로 drop=True 옵션을 지정해주면 인덱스로 지정은 하되, 기존열을 남겨놓는다.
df.loc[df['quantity']==3].head().reset_index(drop=True)
#이상치 탐색
(사분위수)
IQR = Q3 - Q1
lower = Q1 - 1.5 * (Q3-Q1)
upper = Q3+1.5*(Q3-Q1)
python 실기 경우 평균으로부터 '표준편차*1.5'를 벗어나는 영역을 이상치라고 판단함
# 평균으로부터 '표준편차*1.5'를 벗어나는 영역을 이상치라고 판단
std = df['age'].std()
mean = df['age'].mean()
lower = mean - std*1.5
upper = mean + std*1.5
print(lower, upper)
# [(a) | (b)]
>>> a | b # letters in a or b or both
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
# np.log1p - Q
x의 구간은 (0,1)로 매우 짧은 반면, y의 구간은 (−∞,0)으로 매우 크다.
로그함수의 경우 위의 자연로그 함수 그래프를 보면 알겠지만, x=0 인 경우 y가 -무한대(-infinite)의 값을 가진다.