데이터 분석

20200618

NIGHT_LOVE 2020. 6. 18. 17:23
df['a'].apply(myExp,n=3) # 함수사용apply

df.apply(printMe , axis=0) #axis=0 디폴트 

def myAvg2(data):
    return (data[0]+data[1]+data[2])/3
    
import seaborn as sns
titanic = sns.load_dataset('titanic')
titanic.info()
import numpy as np 

def countMissing(v):
    # print(np.sum(pd.isnull(v)))
    nullCount = np.sum(pd.isnull(v))
    return nullCount

# titanic.apply(countMiss) # 열벡터 단위

def propMissing(v):
    n = countMissing(v)
    return n/v.size

titanic.apply(propMissing)
titanic.apply(propMissing, axis = 1)
#타이타닉 데이터 프레임에 numMissing 컬럼 추가 
#numMissing에는 행단위로 결측값의 개수가 저장 

titanic['numMissing'] = titanic.apply(countMissing, axis = 1)
titanic

tips  = sns.load_dataset('tips')  # 카테고리 ~ 범주형 여러 클래스로 구분 되어짐 .. 
#string - object 
tips.info()
tips.dtypes

tips['sex_str'] = tips['sex'].astype(str)
tips.dtypes
tipsEx['total_bill'] = pd.to_numeric(tipsEx['total_bill'],errors='ignore')    #에러없지만 object
tipsEx.info()

tipsEx['total_bill'] = pd.to_numeric(tipsEx['total_bill'],errors='coerce') # 에러없이 float 문자 를nan
tipsEx.info()
tipsEx

#year 단위로 그룹화 한다음 기대수명치 (lifeExp)의 평균 출력 
df.groupby(by = 'year')['lifeExp'].mean()
aleby = df.groupby('year').lifeExp.mean()

#df 에서 year열에 대해 유일한 값만 추출 
df['year'].unique()
df.year.unique()

#set 집합 
set(df.year)

#df에서year가 1952년도인 모든 자료 출력 
#df[df['year'] =='1952']
#df.loc[df.year == 1952]
df['year'] = df['year'].astype('int')

y1952 = df.loc[df.year == 1952,:]
y1952
y1952Mean = y1952['lifeExp'].mean()     # y1952.lifeExp.mean() 
df.info()

#연도 단위로 기대수명치의 평균 출력 (myMean함수 사용)
# df.groupby('year').lifeExp.apply(myMean)    #내가만든함수 
df.groupby('year').lifeExp.agg([np.mean])    # 이미만들어진 함수 
df.groupby('year').lifeExp.agg([np.mean,np.std,np.count_nonzero]) #여러개 함수 가능 

ebola = pd.read_csv('../Data/country_timeseries.csv',parse_dates=['Date'])#데이트가 날짜형식
ebola.info()

pd.to_datetime('06/20/18')
d1 = pd.to_datetime('06/20/18',format="%m/%y/%d")  #to_datetime
d1.year
d1.month
d1.day


ebola.tail(5)
ebola.loc[[117,118,119,120,121]]
ebola.loc[117:,]
ebola.iloc[-5:,:5]  # 원하는 행 추출 

ebola['dateDt'].min()   #가장오래된날짜   날짜형식도 수치 = 수치 최소값min
ebola['dateDt'] - ebola['dateDt'].min() #발병일 이후 몇일이 지낫나?

# ebola['Date'][0].year  #object 타입 에러 
ebola['dateDt'][0].year
ebola['dateDt'].dt.month   # dt의 이유 seriese는 속성전체 안됨.month X 특정 날짜의 속성을하려면dt 
ebola['dateDt'].dt.day

banks = pd.read_csv('../Data/banklist.csv',parse_dates=[5,6])  # 인덱스 번호도 가능
bank
bank.info()

#몇년도에 파산한 은행이 제일 많을까 ?
Closing_year= banks.groupby(['Closing_year']).size()
banks['Closing_year'].value_counts()#내림차순 정렬