PYTHON

[빅데이터 분석] 2021.12.21 Titanic

죠으니 2021. 12. 21. 17:30

오늘은 수업은 조금 하고 자습을 많이 했다. 

다음주에 시험친다고 하니,,ㅠㅠ계속 복습을 해야겠다..

오늘도 알찬 하루를 보낸 것 같은 느낌이..!

계속 하면서 익숙해지도록 노력해야겠당

 

<101 Pandas Tips for Beginners_Titanic>

▶train.sort_index(axis=1) 

☞열에 대한 인덱스가 알파벳 순으로  /   axis=0 (행 기준) axis=1 (열 기준)

▶train[train.Embarked.isin(['C'])]

len(train[train.Fare == 80.0]) 행 수를 나타냄

▶(train.Fare > 80.0).any()  any는 있냐없냐만 알려줌

mean()  평균값

▶sample = pd.DataFrame() 

☞ () 안에 아무것도 안 넣어서 비어있음

▶temp = train.copy()

☞ copy 원본 데이터와 분리해서 새롭게 저장
    원본데이터가 바껴도 복사본은 바뀌지 않는다

▶temp['New']  = 0  

맨 끝에 새로운 컬럼 추가하기  /  모든 new값이 0이 됨

▶temp.insert(0, 'New2', 0)    0번째에 new2라는 컬럼을 만들고 값이 0으로 들어감

☞ 특정 위치에 새로운 컬럼 추가하기  /  insert(위치, 컬럼명, 값)

▶temp['New']  = temp['Age']

☞ new에 age값들이 들어감

y_train = train['Survived'] 

☞ 종속 변수, label, y값, 정답이라고 부름

▶sample2 = train[['Pclass', 'Name', 'Sex']]

☞ 여러개 선택할 때는 이중괄호를 쓴다. [[]] 명심하기

▶or의 경우 '|'이것을 씀. | = shift+\

▶data = pd.concat((train, test), sort=True)

행으로 위아래 합치기 /  axis = 1 하면 같은 키값에 해당하는 데이터를 가로로 넣을 수 있다

DataFrame을 알파벳순으로 정렬하려는 경우 인수를 설정할 수 있습니다 sort=True

▶train.Parch.value_counts()  컬럼안의 값을 세는 것, 유일값이 몇개가 있는지를 알 수 있다

▶top3 = train.Parch.value_counts().nlargest(3)
   print (top3)       

☞ 특정 컬럼의 유일값 세고 top 3 뽑기

▶frequencies = data["SibSp"].value_counts(normalize = True)

☞ normailze가 정규화라는 뜻. 이게 true면 분포라서 확률로 나타남.

☞ ' '중에 몇%인지를 알 수 있음

▶threshold = 0.015  기준점이다

  small_categories = frequencies[frequencies < threshold].index

☞ 특정 기준보다 작은 것 찾기

cf)))))) 판다스에서의 문자열 = object  / 파이썬에서의 문자열 = string

▶a = data.groupby('Pclass').get_group(1)  원하는 그룹만 추출하기

☞ get_group(1) 이러면 pclass가 1인 것만 뽑아줌

▶train.groupby(['Pclass','Parch'])['Pclass'].count()

count : 그룹 내 non-NA 개수 

▶train.groupby(['Pclass','Parch'])['Pclass'].sum()

sum : 그룹 내 non-NA 합 . 빈값이 아닌 것만

▶train.groupby(['Pclass','Survived'])['Pclass'].count().to_frame()

☞ 데이터프레임으로 만들기 : to_frame()

▶train.groupby(['Pclass','Survived'])['Pclass'].count().to_frame().style.background_gradient(cmap='summer_r')

☞ 데이터프레임에 색상 입히기 : style.background_gradient(cmap='summer_r')

    이걸 하면 숫자 크기에 따라 색상이 입혀짐

▶pd.crosstab(train.Survived, train.Pclass, margins=True)

☞ crosstab : 요인(factors)별로 교차분석(cross tabulations)해서 행, 열 요인 기준 별로 빈도를 세어서 도수분포표(frequency table), 교차표(contingency table) 를 만들어줌

☞ margins은 all로 들어감. 합이 됨. /  pd.crosstab(행으로 들어감, 열로 들어감)

▶data['Agroup'] = 1  새로운 컬럼을 만든다

  나이 기준 별로 Agroup 컬럼에 값 넣기
data.loc[(data.Age.values < 24.0), 'Agroup']= 0
data.loc[(data.Age.values > 30.0), 'Agroup']= 2

▶pd.set_option('display.max_columns', 100)  column 출력제한 해제

▶ cut : 특정 조건에 맞게 데이터 분류

 data['Age_Cuts'] = pd.cut(data.Age, 
                          bins=[0, 1, 3, 10, 18, 65, 99], 
                          labels=['Baby', 'Todler', 'Kid', 'Teens',  'Adult', 'Elderly'])

▶data = data.drop('New3', axis=1) 특정 column을 삭제

missingno는 null 값[data.isnull().sum()] 시각화

▶missingno.matrix(data, figsize = (15,8)) 

☞ figsize 사이즈를 지정해주는 것 
☞ cabin은 1000개가 null값이라서 하얗다

corr = data.corr()  데이터간 상관관계를 보여줌

# 마스크 셋업
mask = np.zeros_like(corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True
☞ mask를 false로 두면 대칭이 나옴. 필요 없으니 true로 함.근데 mask 굳이 안 넣어도 됨

# plt 그래프 그리기
plt.figure(figsize=(14, 8))    그래프 사이즈 셋업
plt.title('Overall Correlation of Titanic Features', fontsize=18)   그래프 타이틀 숫자 바꾸면 글씨 크기 달라짐
sns.heatmap(corr, mask=mask, annot=False,cmap='RdYlGn', linewidths=0.2, annot_kws={'size':20}) #linewidths라인 굵기
☞ corr 이것만 다른 것으로 바꾸면 다른 다이터가 나온다. 위의 문장을 응용해서 쓰면 됨