ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 - Pandas - 타이타닉 분석
    파이썬 정리/Module 2024. 5. 7. 11:14
    import pandas as pd 
    df = pd.read_csv('C:/Users/demon/Documents/train.csv')
    
    df['Age']
    pd.isnull(df['Age'])
    
    df['Age'].fillna(0) # pd.isnull() == false
    df['Age'].sum()/len(df['Age'].index)
    #df['Age'].axes[0] for row , axes[1] for column

    series.fillna(0) : NaN값을 0로 바꿈

     

    import pandas as pd 
    df = pd.read_csv('C:/Users/demon/Documents/train.csv')
    
    ctFc = df.apply(lambda x : True if x['Sex'] == 'female' and x['Survived'] == 1 else False, axis=1)
    nOR = len(ctFc[ctFc == True].index)
    print(nOR)

    dataframe/series.apply(lambda x :  )

    = > 새로운 column을 만들거나 filtering 역할 가능

     

    import pandas as pd 
    df = pd.read_csv('C:/Users/demon/Documents/train.csv')
    
    df['Fcnt']=df['SibSp']+df['Parch']
    
    df[df['Fcnt'].max() == df['Fcnt']][['Name','Fcnt']]
    
    ---
    
    # 함수 생성시 Fare에 인수 입력되게 하면 됨.
    F = 0
    df['Fare']
    for i in df['Fare'] :
        if F <= i :
            F = i
            
    print(df[df['Fare'] == 512.3292]['Name'])
    # df[['Fare'].max() == df['Fare']]['Name']
    
    #258                      Ward, Miss. Anna
    #679    Cardeza, Mr. Thomas Drake Martinez
    #737                Lesurer, Mr. Gustave J
    #Name: Name, dtype: object

    특정값이 성립하는 시리즈를 추출한 데이터 프레임에서 특정 column을 추출

     

     

    def int_sum_max(int_a, int_b, find_c):
        k = 0
        for i in list(map(sum, zip(df[int_a], df[int_b]))):
            if k <= i:       
                k = i
        t = []
        for i,value in enumerate(list(map(sum,zip(df[int_a],df[int_b])))) :
            if k == value :
                t.append(i)
        return df[find_c][t]
    
    int_sum_max(*input().strip().split(','))# SibSp,Parch,Name

    *args 활용 방법 // column 명 입력 시 따옴표 없이 그냥 입력

     

     

    dataframe[ ] => series

    dataframe[ [ ] ] => dataframe 형식으로 출력

    df['Pclass']==idx가 성립(True)하는 Pclass값을 추출한 series의 길이

     

    print(df[['Pclass']])
    print(df.groupby('Pclass')['PassengerId'].count())

    df에서 Pclass 기준으로 묶인 값들 중 [내가 여기서 뭘 사용할 것인가를 지정하는 매개변수 값을 지정]의 count가 나온다

     

    더보기

    #     Pclass
    #0         3
    #1         1
    #2         3
    #3         1
    #4         3
    #..      ...
    #886       2
    #887       1
    #888       3
    #889       1
    #890       3

    #[891 rows x 1 columns]
    #Pclass
    #1    216
    #2    184
    #3    491
    #Name: PassengerId, dtype: int64

     

    Pclass 종류 추출 방법

    더보기
    LTT = {}
    # 방식은 다음과 같다. 먼저 group 으로 묶은 index 및 values 값을 추출하여
    # dict or list 로 변환 후 둘다 소개하든지 index값만 출려가든지
    # for i in list(df['Pclass'].value_counts(dropna = False).sort_index().index) :
    #     if i == df.groupby('Pclass')['PassengerId'].count().index :
    #         LTT[i] = df.groupby(a)[b].count().values
    # print(LTT)
    print(type(df.groupby('Pclass')['PassengerId'].count().index)  )

    index : series 에 대한 인덱스 값 추출
    class 'pandas.core.indexes.base.Index'>

     

     

    import pandas as pd
    df = pd.read_csv('C:/Users/demon/Documents/train.csv')
    
    def find_rows(t) :
        list_S = []
        for row in df[t] : 
            list_S.append(row)    
        Sc = sorted(list(set(list_S)))
        return print(Sc)
    find_rows('Pclass') #리스트 반환

    series 값을 집합으로 묶어(type: set)  중복을 제거하고 리스트-정렬 하여 class종류 출력

     

     

    #Pclass
    def max_index (a,b) :  
        VOR = []
        for i, row in df[a].value_counts(dropna = b).sort_index().items() : 
            VOR.append([i,row])
        DME = max(VOR)
        index = VOR.index(DME)
        return VOR[index][0]
        #DME = max(VOR, key = lmabda x: x[1])
        #return DME[0]
    max_index(* input().strip().split(',')) #Pclass,0

    불리언 값 0,1 /  False, True 대처 가능

    .items = series 의 인덱스 값과 row값 둘다 추출.

    list.index( ' ' ) : 특정값 색인 

     

    # print(df[['Pclass']].value_counts(dropna = False).sort_index()) # Name :  count #  ascending = True -> count 값에 대한 정렬
    # print(df.groupby('Pclass')['PassengerId'].count()) # Name : PassengerId ,dtype =: int64 => Series
    # k = {}
    
    # print(df[['Pclass']]) #  891rows * 1 column => dataframe
    
    # pd.dataframe({'Pclass':.index, 'count':.values})
    
    
    #dict 만드는 법
    #1
    k = []
    Dict_P = {}
    for i, row in df['Pclass'].value_counts(dropna = False).sort_index().items() : 
        Dict_P[i] = row 
    print(Dict_P)
    
    #2
    print(df['Pclass'].value_counts(dropna = False).sort_index().to_dict())
    
    #3
    P_c = dict(df['Pclass'].value_counts(dropna = False).sort_index())
    print(P_c)
    
    
    #list 만드는 법
    #1
    for i, row in df['Pclass'].value_counts(dropna = False).sort_index().items() : 
        k.append([i,row])
    print(k)
    
    #2
    df_Pclass = df['Pclass'].value_counts(dropna = False).sort_index()
    print(df_Pclass.index, df_Pclass.values) # index 가 series 본체 // values 는 입력된 값.
    tdarr = list(zip(df_Pclass.index, df_Pclass.values))
    print(tdarr)
    
    #3
    print(df_Pclass.tolist()) #  tolist만 사용 시 value값만 나옴 // 
    
    #4
    print(list(df_Pclass.index)) # index표시하면 iterable한 값 나오므로 바로 투입 가능
    
    
    # for i, row in df[['Pclass']].iterrows() : # Name : i for i range(len(df))
    #     print(row)

    참고하시오

     

    df['column'].value_counts(dropna = False).sort_index().items()/n
    .dropna = . sort = false , normalize = , bins = ).sort_index(ascending = )

    참고 하시라고

Designed by Tistory.