본문 바로가기

2019년 혁신성장 청년인재 집중양성(빅데이터)/집중양성과정 프로젝트 01

[비트코인 트위터 감성분석] 1년 간 트위에서 시간당 100개씩 트윗 산출[1]

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')
  
  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 :
        index += random.sample(range(start, end), 100)
        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