1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | # -*- coding: utf-8 -*- """Day 05_Sort_String.ipynb Automatically generated by Colaboratory. Original file is located at """ from google.colab import drive drive.mount('/gdrive') # /gdrive/My Drive/Colab Notebooks/resources/ <== My resource path # %matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import re import time """정렬 DataFrame 정렬 sort_values() list 정렬 : list.sort() , sorted(list) tuple 정렬 : sorted(tuple , 키) 정렬 방식에 대한 각종 옵션이 존재한다. ==================================================================== 정렬의 시간 복잡도 => 선택 정렬 , 버블정렬 , 삽입 정렬...O( square ( n ) ) 퀵, 병합 정렬, 힙 정렬..O( n log (n) ) 계수 정렬 O( m + n ) """ df = pd.DataFrame( { 's' : [ 1, 3, 2 ], 'name' : ['choi','kim','lee'], "age" : [ 30, 20 , 40] } ) ## 정렬, 기본으로 오름차순 정렬 , df.sort_values( by = "s" ) ## 내림차순 df.sort_values( by = "s" , ascending = False ) ## 정렬 방식 지정 df.sort_values( by = "s" , ascending = False , kind = "quicksort") ## 정렬 결과를 바로 그 변수에 적용. df.sort_values( by = "s" , ascending = False , kind = "quicksort", inplace = True) tp = [ ( 1, 'park', 30 ), ( 2, 'park2', 30 ), ( 3, 'park3', 30 ) ] tp ## 튜플에 대한 정렬 sorted(_, key = lambda la : la[2] ) ## 리스트에 대한 정렬 mylist = [ 0 , 2, 3, 10, 1 ] mylist.sort() mylist """행 갯수 세기 1. 데이터 프레임 - len ( df ) - df.shape - len( df.index ) 2. 시리즈 - len( S ) - S.size - len( S. index ) 열 갯수 세기 1. 데이터 프레임 - df.shape[1] - len( df.columns ) 2. 시리즈 - 존재 X Null이 아닌 행의 갯수 1. 데이터 프레임 - df.count() 2. 시리즈 - S.count() 그룹 단위 행 갯수 1. 데이터 프레임 - df.groupby().size() 2. 시리즈 -S.groupby().size() 그룹 단위 NUll아닌 행 갯수 1. 데이터 프레임 - df.groupby().count() 2. 시리즈 -S.groupby().count() # 함수들 테스트 """ df = pd.DataFrame({'grp': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 'val': [1, 2, np.nan, 4, np.nan, np.nan, 7, 8, 9]}) s = pd.Series([1, 2, np.nan, 4, np.nan, np.nan, 7, 8, 9]) # 행 길이 체크 len(df) df.shape[0] len(df.index) len(s) s.size len(s.index) # 열 길이 체크 df.shape[1] len(df.columns) # 널 아닌 행의 갯수 df.count() df['val'].count() s.count() #그룹별 크기 df.groupby('grp').size() # 널아닌 행의 크기 df.groupby('grp').count() ##시리즈에 대해서도 그대로 적용 가능. #그룹별 크기 s.groupby(df.grp).size() # 널아닌 행의 크기 s.groupby(df.grp).count() """## 문자열을 포함한 컬럼을 구분해서 파생 변수 생성""" df = pd.DataFrame({'id': ['A_001', 'A_002', 'A_003', 'B_001', 'C_001', 'C_002'], 'val': np.arange(6)}) df # id 컬럼을 _ 를 기준으로 구분해서 왼쪽의 부분을 새로운 파생 변수로 저장하고자 한다. # 시리즈 객체 안에있는 오브젝트는 문자열로 취급될 수 없다. # df.id.split("_") # str함수로 문자열로 참조할 수 있도록 바꿔줘야 한다. df['g'] = df.id.str.split("_").str[0] df type(df.id.str.split("_").str[0]) # 시리즈를 리스트로. type( df.id.str.split("_").str[0].tolist() ) for i in range( df.shape[0] ) : # type ( df.loc[i]['val'] ) = > str df.loc[i,'gg'] = df.loc[i, 'id'].split("_")[0] # 시리즈 참조 pd.Series([ 10, 20, 30, 40, 50 ] ) s[ s >= s.mean() ] s[ [1, 3, 4] ] ## 직접적으로 컬럼이름 지정 s = pd.Series([ 10, 20, 30, 40, 50 ] , index = [ 'a', 'b', 'c','d', 'e']) s.ix[[ 'a', 'b' ]] s.get([[ 'a', 'b' ]]) # 시리즈 안에 d 인덱스가 있는지 없는지 확인. 'd' in s # ==> True #DataFrame( data = , index = , columns = ) df[ [ 'c1', 'c2' ] ] df[ 'new_c' ] = df['c1'] - df['c2'] # 위와 같은 구문. 대신 변경된 df가 inplace 되지 않는다. df = df.assign(newc = df['c1'] * df['c2']) ## 컬럼의 삭제 ## inplace 로 바로 삭제 del df['열이름'] ## inplace 로 바로 삭제 되지않고 할당 해줘야 한다. df = df.drop(['열이름'] , axis = 1 ) """문자열을 원핫 인코딩하기""" # 텍스트 = > 단어로 분리 => 단어 단위 원핫 인코딩 # How are you # What is your name # 두 문장에서 총 7개의 단어를 길이가 7인 바이너리 스트링으로 표현. # 좀더 좋은 처리는 are , is 와같은 be동사는 묶어서 하나의 바이너리 스트링으로 표현 할 수 있다. # /gdrive/My Drive/Colab Notebooks/resources/ <== My resource path file_opened = open("/gdrive/My Drive/Colab Notebooks/resources/python_wikipedia.txt") for line in file_opened.readlines(): print(line) #전처리 => 대소문자 처리 , 불용어 처리, punctuation 처리, 숫자 def word_preprocess(word): #소문자 처리 word = word.lower() stop_words = ['a', 'an', 'the', 'in', 'with', 'to', 'for', 'from', 'of', 'at', 'on', 'until', 'by', 'and', 'but', 'is', 'are', 'was', 'were', 'it', 'that', 'this', 'my', 'his', 'her', 'our', 'as', 'not'] # make your own list symbols = [',', '.', ':', '-', '+', '/', '*', '&', '%', '[', ']', '(', ')'] # make your own list #불용어 처리 for stop_word in stop_words: if word != stop_word : word = word else : word = '' #특수문자 처리 for symbol in symbols: word = word.replace(symbol, '' ) return word token_idx = {} file_opened = open("/gdrive/My Drive/Colab Notebooks/resources/python_wikipedia.txt") for line in file_opened.readlines() : # 양쪽끝의 공백 제거. line = line.strip() for word in line.split(): word = word_preprocess( word ) token_list.append( word ) ## token_inx에 word라는 키가 없다면, if word not in token_idx : if word != '': token_idx[word] = 1 # token_idx[word] += 1 => 단어별 고유의 인덱스를 주는 방법. else : token_idx[word] += 1 token_idx[ : 2 ] # 각 단어별 빈도수를 검색 { python : 200 , program : 100 } """##표본 추출 함수""" # 재연성 np.random.seed( 708 ) # np.random.normal( loc = 5,size = 3) # => 평균 5인거 3개 np.random.normal( size = 10 ) """## 이항 분포로부터 무작위 표본추출 => binomial 이산형( 이항, 포아송) 연속형( 정규분포, T분포, 균등 분포, f 분포, 카이제곱 등 ) """ np.random.binomial(1, 1/2, 10) # => 앞면 또는 뒷면 n( 1번 시행 ) [ n번 던진 결과의 합. ] , p = 1/2 , size = 전체 사건의 반복 횟수 sum( np.random.binomial( 1, 1/2, 10 ) == 1 ) / 10 # => 앞면이 나올 확률 np.random.normal( 0 , 3, 100 ) # = > ( 평균 , 분산, 사이즈 ) # 평균, 분산, 표준편차, # P value, 유의성 검정, T 분포 | cs |
'딥러닝 모델 설계 > Machine Learning' 카테고리의 다른 글
Day 06_Visualization (0) | 2019.07.10 |
---|---|
Day 05.Melt_PivotTable (0) | 2019.07.08 |
Day 4. Grouping, sorting, visualizing (0) | 2019.07.06 |
Day 4. Data Reconstruction (0) | 2019.07.06 |
Day 4. binomializing [ OneHotEncoding ] (0) | 2019.07.06 |