READ_CSV
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 | # -*- coding: utf-8 -*- """Day 02_00_Pandas_Read_CSV.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1TPnbO6qV-rZGvOLKQpHWEOfqNLpa8kKb """ from google.colab import files uploaded = files.upload() for fn in uploaded.keys(): print('User uploaded file "{name}" with length {length} bytes'.format(name=fn, length=len(uploaded[fn]))) #read_csv() : 데이터 파일 불러오기 import pandas as pd import io df = pd.read_csv(io.StringIO(uploaded['test_csv_file.csv'].decode('utf-8'))) print(df) """#####read_pickle : 객체를 읽고자 할때 ( 바이너리 형태의 데이터 ) #####read_table : 테이블 형태의 데이터를 읽을때, """ # '|'로 구분이 되어진 경우 text = pd.read_csv(io.StringIO(uploaded['test_text_file.txt'].decode('utf-8'))) print(text) # 기본으로는 '|'로 구분되어지지 않는다 text.shape #행 인덱스 0 , 1, 2 따로 옵션을 주지 않으면 행인덱스가 0 부터 오름차순으로 붙게 된다. #열 인덱스 ID , A, B, C, D text = pd.read_csv(io.StringIO( uploaded['test_text_file.txt'].decode('utf-8')) , sep="|", ) text[ : 10] #행 인덱스가 0, 1, 2 가 아닌 유니크키인 ID를 사용하는것이 자연스럽다 text = pd.read_csv(io.StringIO( uploaded['test_text_file.txt'].decode('utf-8')) , sep="|", index_col = 0 ) # 또는 index_col = "ID") text[ : 10] ## 컬럼이름이 없는 경우. text = pd.read_csv(io.StringIO( uploaded['text_without_column_name.txt'].decode('utf-8')), sep = "|" , header = None, names = ['ID', 'A', 'B','C','D' ] ) text[ : 5] ##판다스 데이터 프레임 type(text) ## 데이터 구조 분석 , 행, 열의 갯수와 NA의 존재 여부 확인, ## 데이터 타입중 String과 char 타입은 판다스에서 존재하지 않는다. --> object로 뭉뚱그려서 표현된다. text.info() | cs |
Write_CSV
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 | # -*- coding: utf-8 -*- """Day 02_01_Pandas_Save_CSV.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1HlOeZHlQEYCpQZ6N1MES36OdrMtBeebn """ #딕셔너리를 데이터 프레임으로 import pandas as pd data = { 'ID': [ 'A1', 'A2' , 'A3' ], 'X1' : [10, 20 ,30 ], 'X2' : [1.1, 2.2, 3.3 ] } # 딕셔너리의 키가 열 인덱스로 가고 각 키에 들어있는 리스트의 값들이 요소로 들어가게 된다. df = pd.DataFrame(data) df[ : 5 ] df.info() #기본 행 이름을 다른 이름으로 사용. df = pd.DataFrame(data, index = ['a1','a2','a3']) ## 데이터 프레임에 행 추가(인덱스 사용) df2 = df.reindex( ['a1','a2','a3','a4'] ) df2 """#####pandas : NaN의 의미는 값이 없다, 딥러닝 에서의 NaN( inf --> 발산 )모델을 만드는 과정에서 Weight 값이 무한대로 가버리는경우 #####결측 값이 발생하는 경우 : 1. 정말 값이 없는 경우 2. 데이터 정리 도중 실수로 입력을 빼먹은 경우. 3. 일부러 뺴버린경우 #####실수로 빠진경우 어떻게 그부분을 메울 것인지 생각해야 한다. """ from google.colab import files df2.to_csv("df2.csv") files.download('df2.csv') ## 결측값에 대해서 무슨 값으로 채울지 정할 수 있다 df2.to_csv("df2.csv", sep = ",", na_rep = "NaN") files.download('df2.csv') | cs |
DATAFRAME
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 | # -*- coding: utf-8 -*- """Day 02_02_Pandas_DataFrame.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1ezvCvk4o5O9YLP4g3VzOxOIIH2mi9-lP """ import pandas as pd import numpy as np df1 = pd.DataFrame(np.arange(12).reshape(3,-1)) df1.info() df1[: 3] #행 인덱스 이름 index, 열 인덱스 이름 columns df1 = pd.DataFrame( np.arange(12).reshape(3,-1), index = [ 'r0', 'r1', 'r2' ], columns = [ 'c0', 'c1', 'c2', 'c3' ]) df1 # 데이터 프레임의 축조작 axis -> 단수 axes -> 복수 #축 확인 df1.axes # 데이터 타입 확인 df1.dtypes # 데이터 행,열 확인 df1.shape # 요소의 갯수 확인 df1.size # 요소의 값만 확인 df1.values df1 = pd.DataFrame( {'C1' : ['a', 'a', 'b', 'b', 'c'], 'v1':np.arange(5), 'v2':np.random.randn(5) # n이 붙으면 정규화된 함수라고 생각. 정규 분포 형대로 난수 발생. }, index = [ 'r0', 'r1', 'r2', 'r3', 'r4'], ) df1 df1.index df1 df1.ix[2:] #하나의 행에대한 값만 출력. 행인덱스가 r2임에도 그냥 ix에서 int형으로 행을 고를수가 있다. df1.ix[2] # 또는 df1.ix['r2'] df1 | cs |
Exploratory Data Analysis
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 | # -*- coding: utf-8 -*- """Day 02_03_Exploratory Data Analysis.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1o-AdFWF64miuh_T7H6KU_LPOO4KgVXko """ import pandas as pd import numpy as np df = pd.DataFrame( {'C1' : ['a', 'a', 'b', 'b', 'c'], 'v1':np.arange(5), 'v2':np.random.randn(5) # n이 붙으면 정규화된 함수라고 생각. 정규 분포 형대로 난수 발생. }, index = [ 'r0', 'r1', 'r2', 'r3', 'r4'], ) """## 행 단위 추출""" df.head() df.tail() """##열 단위 추출""" # 컬럼 정보 추출 df.columns # 컬럼 추출 df['v1'] #df['v1','v2'] # key error 발생! df[['v1','v2']] # 두 구문의 리턴 타입이 다르다. type(df['v1']) , type(df[['v1']]) """###행 두개를 빼고 새로운 행을 추가""" newIndex = [ 'r0', 'r1', 'r2', 'r5', 'r6'] df ## 새로운 인덱스로 추가되는 행에는 값이 들어있지 않다. df.reindex(newIndex) ## NaN 값을 대체할 값 지정 df2 = df.reindex(newIndex, fill_value = 1) #fill_value 를 1로 줬음에도 타입이 오브젝트임을 알 수 있다. #fill_value 하나 때문에 묵시적 형변환이 일어남으로 주의해야 한다. 정수 -> 실수 -> 문자 df2.info() """시계열 데이터 생성""" ## 월 - 일 - 연도 순으로 입력 , 전체 기간 및 단위 입력 -- > 예제에서는 2019년 7월 2일 부터 5일간의 행 인덱스를 만들 수 있는 데이트타임 인덱스 리턴. dIndex = pd.date_range('07/02/2019', periods = 5, freq = 'D') # 보통 행 하나하나가 날짜 단위가 된다. type(df) # 열 하나의 데이터 프레임 df2 = pd.DataFrame({'c1':[1,2,3,4,5]}, index = dIndex) df2 ## 2019 06 30 부터 10일간의 날짜 데이터를 가진 객체 생성 dIndex2 = pd.date_range('06/30/2019', periods = 10 , freq = 'D') # df2의 날짜를 dIndex2의 날짜로 변경하고자 할때 ( 조사 기간이 바뀌었을때 ) reindex 사용 # 데이터가 없는 곳은 NaN으로 채워 진다. 데이터 타입이 float이 기본이 된다. # 데이터 타입의 기본은 float이 되는데 그 이유는 소수점 이하의 수가 날아가지 않도록..! # 주로 함수의 리턴은 실수로 되는 경우가 많다. df2.reindex(dIndex2) ## NaN을 무엇으로 채울지 정할 수 있다. 이전에 있는 값으로 덮어 씌운다. df2.reindex(dIndex2, method = "ffill") ## NaN을 무엇으로 채울지 정할 수 있다. 이후에 있는 값으로 덮어 씌운다. df2.reindex(dIndex2, method = "bfill") | cs |
'딥러닝 모델 설계 > Machine Learning' 카테고리의 다른 글
Day 4. binomializing [ OneHotEncoding ] (0) | 2019.07.06 |
---|---|
Day 03. Scaler (0) | 2019.07.03 |
Day 03. Replacement (0) | 2019.07.03 |
Day 02. Pandas Review - 2 (0) | 2019.07.02 |
Day 01. Numpy Fundamental Operations Review (0) | 2019.07.01 |