ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🐼데이터분석입문_통계(3주차)
    카테고리 없음 2024. 4. 9. 14:10

    01. 데이터 분석에 필요한 pandas 기초 문법

    - query()

    - sort_values()

    - 행, 열 추출 [],[[]], loc, iloc

    - crosslab

    - 파생변수, assign()

    - groupby(), agg()

    - merge(), concat()

    - str()

    - 시계열()

    - boolean 인덱싱 접근

     

    02. Query()

    - 데이터를 추출하기 위한 조건 문법

    - 기존에 행과 열만을 가지고 데이터를 추출했다면 행과 열에 조건등을 붙여서 진행하는 문법

    - Q1 : s 선박에 class는 first, 생존했고, 여성이고, 나이는 20대 미만인 사람의 fare 요금의 평균은?

    - query(요구조건)

     

    - Q1 : S선박에 Class는 First, 생존했고, 여성이고 나이는 20대 미만인 사람의 fare 요금의 평균은?

    - 논리 연산자 and로 묶으면 된다.

    # 최종 요구 조건
    tt.query("""embarked == 'S' and pclass == 1 and sex == 'female' and age<20 and alive == 'yes'""")
    tt.query("""embarked == 'S' and pclass == 1 and sex == 'female' and age<20 and alive == 'yes'""")['fare'].mean()

     

    03. sort 값을 정렬하기

    - 내림차순, 오름차순

    - sort_values('정렬할 컬럼')

    - sort_values('정렬할 컬럼', ascending = True, Flase)

    #디폴트 오름차순 , 데이터프레임도 적용
    tt.sort_values('age')

    #시리즈도 동일하게 적용된다.
    tt.age.sort_values()

    #내림차순으로 변경 , 데이터프레임도 적용
    tt.sort_values('age', ascending=False)

     

    2개 이상의 컬럼이 기준은 경우는?

    - 컬럼을 적는 법과 내림, 오름차순 기준 적는 법

    - sort_values('정렬할 컬럼1', '컬럼2')

    - sort_valeus(['정렬할 컬럼1, '컬럼2'], ascending = [True, False])

    #age가 적용 후 동일한 값이면 두 번째 fare 비교한다.
    tt.sort_values(['age','fare'])

    #뒤의 차순도 변경 가능하다.
    tt.sort_values(['age','fare'], ascending=[True,False])

     

    04. 추가 파생변수 만들기

    - 파생 변수란 무엇인가?

    - 기존의 변수를 이용해서 새로운 변수를 만드는 것

    - 기존의 변수를 두 개 이상을 사용하여 합치거나, 평균을 내거나 기타 내가 원하는 함수를 적용해서 변수로 만들거나 기존의 값에 특정 수치들을 사칙 연산 및 내가 원하는 식으로 적용해서 변수로 만들 수 있다.

    - 변수를 하나 먼저 만들어야 한다.

    - while 초기식(i=0)와 동일하게 초기식을 잡아주면 좋다.

    # tt.fare 100을 곱해서 원래 단위로 맞춘다.
    # 변수를 만드는 법은 tt['새롭게 만들 변수명']
    tt['fare_100'] = tt['fare']*100 # 해당 기존 값에 *100
    print(tt['fare_100'])

    # 파생변수 다시 만들기 fare_100/ fare = 100
    # 파생변수를 이용해서 다시 파생변수를 만들자!
    # 100이라는 값이 모두 적용되는 컬럼을 만들자
    # 데이터프레임에서 적용하는 파생변수 만드는 식이 우리가 생각하는 문법처럼 그대로 적용하면 된다.
    # tt['컬럼']/ tt['컬럼']
    tt['100_values'] = tt['fare_100']/tt['fare']
    print(tt['100_values'])

     

    기존에 배운 Python  문법을 이용해서 for, if문으로 파생변수 생성

    - pclass 별로 1,2,3등급, survived 확률

    len(tt.query('pclass==3'))

    - 491

    len(tt.query('pclass==2'))

    - 184

    len(tt.query('pclass==1'))

    - 216

    #파생변수 컬럼을 만들어야 한다.
    tt['pclass_prob'] =0
    
    for i in range(len(tt)):
        if tt.loc[i]['pclass'] == 3: # 3번 클래스로 조건 찾기
            tt['pclass_prob'].loc[i]= tt.loc[i]['survived'].sum()/491 # 3번 클래스의 생존확률
        elif tt.loc[i]['pclass'] ==2: # 2번 클래스의 조건 찾기 
            tt['pclass_prob'].loc[i] = tt.loc[i]['survived'].sum()/184 # 2번 클래스의 생존확률
        elif tt.loc[i]['pclass'] ==1: # 1번 클래스의 조건 찾기
            tt['pclass_prob'].loc[i] = tt.loc[i]['survived'].sum()/216 # 1번의 클래스의 생존확률
    tt[['survived','pclass','pclass_prob']]

     

    05.crosstab을 이용해 확률 구하기

    - pd.crosstab(인덱스, 계산할 컬럼)

    pd.crosstab(tt['sex'], tt['survived'])

    # 2개 이상인 경우는 index, 컬럼을 지정해서 crosstab을 만들 수 있다.
    pd.crosstab(index = [tt['sex'],tt['pclass']],columns = tt['survived'])

    # 전체 sum 도 보면 좋다.
    # 인자값에 넣기만 하면 된다.
    # 인자 값은 margins , 확률은 normailize  True, False
    
    # 2개 이상인 경우는 index, 컬럼을 지정해서 crosstab을 만들 수 있다.
    # 크로스탭으로 간단하게 다양한 컬럼들간의 관계, 확률표도 만들 수 있다.
    pd.crosstab(index = [tt['sex'],tt['pclass']],columns = tt['survived'], margins = True, normalize=True)

     

    06. assign() 파생변수 만들기

    - assign(파생변수명 = 요구 조건등을 적는 것)

    - numpy에서 제공하는 where함수를 이용해 파생변수를 만들 것

    tt.assign(age_old= np.where(tt['age']>30, 'old','young')) # na값들은 그외로 처리된다.

     

Designed by Tistory.