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' : [1020 ,30 ],
       'X2' : [1.12.23.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

+ Recent posts