-
파이썬 - 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: int64Pclass 종류 추출 방법
더보기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 = )
참고 하시라고