exe 파일 대신 ipython notebook 을 쓰는 이유는 다른 패키지에서도 동일한 방법으로 실행가능하다.
enthought Canopy (Numpy와 scipy를 만든 사람이 만든회사)
독자적인 platform을 사용하는 경향이 있다 (그래서 anaconda 사용)
Scikit-learn, Scikit-Image
Basic
ctrl + m b (insert new cell)
## Default ImportfrompandasimportSeries, DataFrameimportpandasaspdimportnumpyasnp## python 3 의 기본 문자열은 unicodea='한글'# python 2a=u'한글'# python 3 의 기본## Python 2 에서 python 3의 print 사용from __future__ importprint_function
Help 보는법
importpandasaspdpd.read_csv?
BIF (Built-in Function)
## for 중복도 가능 + filtering
[a*bforain [1,2,3] forbin [4,5,6,7] ifb>6]
pandas
Missing Value 처리
# 해당 데이터에 tz 필드가 없는 경우clean_tz=frame['tz'].fillna('Missing')
# 필드는 있는데, 값이 빈 경우clean_tz[clean_tz==''] ='Unknown'# 정리된 데이터에 대해 통계 수치 추출tz_counts=clean_tz.value_counts()
tz_counts[:10]
특정 필드에 대한 분기
importnumpyasnp# frame의 'a' 필드의 값이 없는 경우 걸러낸다cframe=frame[frame.a.notnull()]
# cframe의 'a' 필드의 문자열이 'Windows'를 포함하면 그 값을 'Windows' 아니면 'Not Windows'라고 함operating_system=np.where(frame['a'].str.contains('Windows'), 'Windows', 'Not Windows')
operating_system[:5]
Load Separated Data from File
importpandasaspdunames= ['user_id', 'gender', 'age', 'occupation', 'zip']
users=pd.read_csv('pydata/ch02/movielens/users.dat', sep='::', header=None, names=unames, encoding='latin1')
users[:5]
rnames= ['user_id', 'movie_id', 'rating', 'timestamp']
ratings=pd.read_csv('pydata/ch02/movielens/ratings.dat', sep='::', header=None, names=rnames, encoding='latin1')
rnames[:5]
mnames= ['movie_id', 'title', 'genre']
movies=pd.read_csv('pydata/ch02/movielens/movies.dat', sep='::', header=None, names=mnames, encoding='latin1')
movies[:5]
## Mergedata=pd.merge(pd.merge(ratings, users), movies)
# aggfunc 는 mean average 등이 있음mean_ratings=data.pivot_table('rating', index='title', columns='gender', aggfunc='mean')
## mean_ratings = data.pivot_table('rating', index='title', columns='gender', aggfunc=my_func) 도 가능
Dataframe 혹은 Series의 []은 선택의 표시
# panda에만 있는 문법으로 obj가 0이 넘는 boolean filter가 만들어지고 그것을 통해 선택 됨obj[obj>0]
# DataFrame의 index 접근은df.ix(XXXX)
# Series는 0시작 숫자 기반의 index로도 접근 가능 sr[0]
sr[XXXX]