ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🐼데이터분석입문_통계(2주차)
    카테고리 없음 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)

     

Designed by Tistory.