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
|
# SQLITE DATABASE에서 데이터베이스 접근
# sqlite3 임포트
import sqlite3
# 데이터베이스 "Bigcoin.sqlite"에 핸들 형성
con = sqlite3.connect("C:\\Users\\Noru\\Desktop\\temp\\Bigcoin_origin.sqlite")
# 데이터베이스에 실행을 위한 커서 형성
cur = con.cursor()
# 데이터 전처리를 위한 pandas 임포트
import pandas as pd
# temp는 CREATE TABLE temp2 AS SELECT DISTINCT text, timestamp FROM engBTC WHERE text IS NOT NULL AND timestamp IS NOT NULL;로 만들어짐
temp = pd.read_sql_query("SELECT * FROM temp;", con)
con.close()
# 확인
# 유닉스타임으로 바꾸기
import time
import numpy as np
import datetime
def datetounix(strdate):
#date_string = train['date'][1]
datetimeobj= datetime.datetime.strptime(strdate,'%Y-%m-%dT%H:%M:%S')
timestamp = time.mktime(datetimeobj.timetuple())
return timestamp
# 확인
datetounix(temp['timestamp'][0])
#tqdm 설치
pip install tqdm
#문자열로된 date 값을 datetime object로 변경
from tqdm import tqdm
stamp =[]
for i in tqdm(range(len(temp[['timestamp']]))):
timestamp=datetounix(str(temp['timestamp'][i]))
#temp의 timestamp를 유닉스 타임으로 바꾸기
temp["timestamp"]= stamp
# 3600초로 나누어 시간 단위로 유닉스타임 환산
# 3600초로 나눈 나머지 값을 빼주어서, 시간 단위로 구별 1
for i in tqdm(range(len(temp[["timestamp"]]))):
temp["timestamp"][i]= int(temp["timestamp"][i]) - int(temp["timestamp"][i])%3600
# 3600초로 나눈 나머지 값을 빼주어서, 시간 단위로 구별 2 리스트 컴프리 핸션 이게 오만오조배 더 빠름
hour_stamp=[int(temp["timestamp"][i]) - int(temp["timestamp"][i])%3600 for i in tqdm(range(len(temp[["timestamp"]])))]
temp['hour_stamp']= hour_stamp
temp=temp.sort_values('hour_stamp')
# 시간을 세트화 시켜서 중복 제거후, 리스트화 시킨 후 정렬
hour_stamp_sorted = sorted(list(set(hour_stamp)))
총 시간 구간 길이 확인
len(hour_stamp_sorted)
# 시간 별 개수 확인
cnt=temp.groupby("hour_stamp").count()
# 카운팅 수를 이용한 위치 파악
cnt_loc=list(cnt["text"])
# 각 시간 구간에서 100개씩 뽑기
index =[]
start = 0
end = 475
for i in range(len(cnt_loc)):
try :
start = end
end = end + cnt_loc[i+1]
# 100개 이하 구간에 대해서는 뽑지 말고 진행
except :
#print(i)
if i < 3970:
start = end
end = end + cnt_loc[i+1]
else:
break
# index 정렬
index = sorted(index)
# iloc을 이용해서 인덱싱으로 슬라이싱
temp_100= temp.iloc[index]
# 제대로 뽑혔는지 확인
temp_100.groupby("hour_stamp").count().head()
#
temp_100.to_csv("temp_100_selected.csv")
#이제 해야 할 것은, 시간 기준으로 가격 조인하기, 가격 조인 한 뒤에 저번에 만들었던 것처럼 데이터 피쳐링
# 피쳐링 이후, 증/감, 증/감 정도로 학습
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
'2019년 혁신성장 청년인재 집중양성(빅데이터) > 집중양성과정 프로젝트 01' 카테고리의 다른 글
[비트코인 전처리3] 'price'에 관한 코사인 유사도 상위 5만 추출 (0) | 2019.09.19 |
---|---|
[비트코인 전처리2] 트윗 데이터에 가격 태그 붙이기 (0) | 2019.09.16 |
랜덤포레스트로 학습을 시켜봤지만, 잘못 가르쳐서 미안하다. (0) | 2019.09.09 |
[비트코인 감성분석 프로젝트] 트레인 데이터 전처리 (2) (0) | 2019.09.06 |
[기계학습을 위한 데이터 전처리] 시간단위를 잘못 계산해서, 처음 부터 다시해야 한다는 sull. (0) | 2019.09.05 |