🐼데이터분석입문_통계(2주차)
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)