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()#내림차순 정렬