카테고리 없음

🐼데이터분석입문_통계(2주차)

joy_your 2024. 4. 9. 13:59

Pandas 기초 문법 복습

 

- 우선 학습할 데이터셋을 불러온다.

 

01. Pandas 기초 문법

- pandas는 dataframe, series 형태로 이루어져 있다.

- 2차원은 dataframe, 1차원은 series

- 행과 열을 추출할 수 있다.

- 데이터프레임 내 컬럼 또한 추출할 수 있다.

- 기본적인 데이터타입과 Nan or Null값이 확인 가능하다.

- 데이터의 기초 통계치(평균, 분산, 카운트, 사분위수)를 확인할 수 있다.

 

 - 데이터 프레임 타입 확인

- 칼럼 타입 확인

 

- 튜플로 변환하여 추출

 

- 컬럼 추출 가능

 

 

- 칼럼의 자료형만도 확인 가능

- 기초 통계치 확인, include = 'all'을 제거하면 fare까지 확인 가능

 

- head는 데이터 셋 앞에서부터 확인, 디폴트 5개
- 숫자 지정도 가능

- tail은 데이터 셋 뒤에서 부터 확인, 디폴트 5개

- 숫자 지정도 가능

 

02. 데이터프레임 구조를 이해했으니 -> 해당 구조로 데이터에 접근해보자

- 행과 열

- 행 기준과 열 기준으로 데이터를 접근하면 된다.

- loc는 라벨을 기반으로 행을 선택

: 데이터 프레임의 인덱스를 기준으로 행을 선택 즉, 데이터 프레임이 생성될 때 고정된 인덱스를 고정으로 사용

- iloc는 정수 위치를 기반으로 행을 선택

: 데이터 프레임의 행의 순서를 기준으로 행을 선택 즉, 현재 인덱스와는 관계없이 행의 순서를 기준으로 데이터에 접근

- 컬럼 2개는 대괄호 2개

 

 

 

- 여러 행을 추출하고 싶다면 여러 행의 index를 넣으면 된다.

- [index1, index2, index3,...,indexn]

 

03. 인덱스 슬라이싱 적용 

- Python 문법에서 배운 range 슬라이싱, 리스트 인덱스 슬라이싱 동일하게 적용된다.

- [시작점: 끝점 : 증가폭]

- Python 디폴트 행과 열 기준 적용, tt.loc[행,열]

- 데이터를 추출할 때 행과 열 기준으로 조정해서 내가 원하는 값을 추출해야 한다.

 

 

 

- tt.loc[::, ['age']도 적용 가능

 

- iloc 인덱스 열기준일 때는 숫자로 넣어야 한다.

- 두 가지 이상의 컬럼도 출력 가능

- range 이용해서 원하는 데이터 추출

 

 

- 위에서 배운 방법을 응용하여 여러개의 데이터를 추출하면?

- 아래처럼 응용 가능

tt[['embark_town','fare']].loc[num_3]['fare']
tt[['embark_town','fare']].loc[num_3]['fare'].loc[54]
tt[['embark_town','fare']].loc[num_3]['fare'].loc[2:20]
len(tt[['embark_town','fare']]['fare'])

 

04. 기초 통계치를 응용해 분석

- 25세 이상의 여성의 생존율, 남성의 생존율을 크로스탭으로 만들어서 새로운 변수를 생성하고 변수를 더미화해 0, 1 이진으로 나누어 태깅

 

> 1. 25세 이상의 여성과 남성을 필터링하여 생존 여부를 크로스탭으로 만든다.

cross_tab_female = pd.crosstab((tt['sex'] == 'female') & (tt['age'] >= 25.0), tt['alive'])
cross_tab_male = pd.crosstab((tt['sex'] == 'male') & (tt['age'] >= 25.0), tt['alive'])

 

> 2. 생존율 계산

female_survival_rate = cross_tab_female.loc[True,'yes']/cross_tab_female.loc[True].sum()
male_survival_rate = cross_tab_male.loc[True,'yes']/cross_tab_male.loc[True].sum()

 

> 3. 새로운 변수 생성 및 이진화

tt['survival_tag'] = (tt['sex'] == 'female') & (tt['age'] >= 25)
tt['survival_tag'] = tt['survival_tag'].astype(int)

 

 

- 32세보다 낮은 여성 중 승차권을 20달러 이하로 구매한 승객의 생존율은?

female = tt[(tt['sex'] == 'female') & (tt['age'] < 32.0)]
cus = female[female['fare'] <= 20.0]

cus_survival_rate = ((cus['alive'] == 'yes').sum() / cus.shape[0])
print(cus_survival_rate)