· 7 years ago · Oct 22, 2018, 02:16 AM
1import h5py
2import numpy as np
3import pandas as pd
4
5from datetime import datetime
6from os import listdir
7from pandas import HDFStore
8
9
10def maintainLedger(mode, tick, lastBuyy = 0, lastSell = 0, quan = 0, prof = 0):
11 """THIS FUNCTION WRITES AND READS TRANSACTION DETAILS.
12 mode = 0 - IF FILE EXITS, READ FILE
13 mode = 1 - IF FILE EXITS, APPEND TO FILE"""
14
15 # CHECK IF LEDGER FILE EXISTS, IF NOT CREATE A LEDGER FILE FOR THE FIRST TIME
16 path = r'ledger'
17 suff = r'h5'
18 flie = listdir(path)
19 flie = [item for item in flie if item.endswith(suff)]
20
21 if len(flie) == 0:
22 HDF5Data = HDFStore('ledger/ledger.h5')
23
24 # GENERATE NEW VALUES OF DATE/TIME
25 mi = int(datetime.now().minute)
26 ho = int(datetime.now().hour)
27 da = int(datetime.now().day)
28 we = int(datetime.now().isocalendar()[1])
29 mo = int(datetime.now().month)
30 ye = int(datetime.now().year)
31
32 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
33 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
34 HDF5Data.put('data', newwData, format = 'table', data_columns = True)
35 HDF5Data.close()
36
37 elif len(flie) == 1:
38 if mode == 0:
39 # READ PREVIOUSLY SAVED DATA AS PANDAS DATAFRAME
40 readData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
41
42 # DO SOMETHING...
43
44 elif mode == 1:
45 # GENERATE NEW VALUES OF DATE/TIME
46 mi = int(datetime.now().minute)
47 ho = int(datetime.now().hour)
48 da = int(datetime.now().day)
49 we = int(datetime.now().isocalendar()[1])
50 mo = int(datetime.now().month)
51 ye = int(datetime.now().year)
52
53 # GATHER NEW DATA INTO NUMPY ARRAY AND CONVERT TO PANDAS DATAFRAME
54 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
55 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
56
57 # READ PREVIOUSLY SAVED DATA AS PANDAS DATAFRAME AND APPEND NEW DATA
58 readData = pd.read_hdf('ledger/ledger.h5', mode = 'a')
59 readData.append('data', newwData)
60
61 tempData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
62 print(tempData)
63
64 else:
65 print('Please check input data for errors!')
66
67
68
69if __name__ == '__main__':
70 maintainLedger(1, "AAPL")
71
72TypeError: cannot concatenate object of type "<class 'str'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
73
74import h5py
75import numpy as np
76import pandas as pd
77
78from datetime import datetime
79from os import listdir
80from pandas import HDFStore
81
82
83def maintainLedger(mode, tick = 'QUERY', lastBuyy = 0, lastSell = 0, quan = 0, prof = 0):
84 """THIS FUNCTION WRITES AND READS TRANSACTION DETAILS.
85 mode = 0 - IF FILE EXITS, READ FILE
86 mode = 1 - IF FILE EXITS, APPEND TO FILE"""
87
88 # CHECK IF LEDGER FILE EXISTS, IF NOT CREATE A LEDGER FILE FOR THE FIRST TIME
89 path = r'ledger'
90 suff = r'h5'
91 flie = listdir(path)
92 flie = [item for item in flie if item.endswith(suff)]
93
94 if len(flie) == 0:
95 # GENERATE NEW VALUES OF DATE/TIME
96 mi = int(datetime.now().minute)
97 ho = int(datetime.now().hour)
98 da = int(datetime.now().day)
99 we = int(datetime.now().isocalendar()[1])
100 mo = int(datetime.now().month)
101 ye = int(datetime.now().year)
102
103 # GATHER NEW DATA INTO NUMPY ARRAY AND CONVERT TO PANDAS DATAFRAME
104 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
105 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
106
107 # SAVE ALL DATA INTO .H5 FORMAT
108 HDF5Data = HDFStore('ledger/ledger.h5')
109 HDF5Data.put('data', newwData, format = 'table', data_columns = True)
110 HDF5Data.close()
111
112 elif len(flie) == 1:
113 if mode == 0:
114 """THIS OPTION ENABLES CODE TO READ DATA."""
115
116 # READ PREVIOUSLY SAVED DATA AS PANDAS DATAFRAME
117 readData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
118
119 # DO SOMETHING...
120 print(readData)
121
122 elif mode == 1:
123 """THIS OPTION ENABLES CODE TO APPEND DATA."""
124
125 # GENERATE NEW VALUES OF DATE/TIME
126 mi = int(datetime.now().minute)
127 ho = int(datetime.now().hour)
128 da = int(datetime.now().day)
129 we = int(datetime.now().isocalendar()[1])
130 mo = int(datetime.now().month)
131 ye = int(datetime.now().year)
132
133 # GATHER NEW DATA INTO NUMPY ARRAY AND CONVERT TO PANDAS DATAFRAME
134 newwData = np.array([mode, mi, ho, da, we, mo, ye, tick, lastBuyy, lastSell, quan, prof]).reshape(1, 12)
135 newwData = pd.DataFrame(newwData, columns = ['mode', 'mi', 'ho', 'da', 'we', 'mo', 'ye', 'tick', 'laBu', 'laSe', 'quan', 'prof'])
136
137 # READ PREVIOUSLY SAVED DATA AS PANDAS DATAFRAME AND APPEND NEW DATA
138 readData = pd.read_hdf('ledger/ledger.h5', mode = 'r')
139 readData = readData.append(newwData)
140
141 # SAVE ALL DATA INTO .H5 FORMAT
142 HDF5Data = HDFStore('ledger/ledger.h5')
143 HDF5Data.put('data', readData, format = 'table', data_columns = True)
144 HDF5Data.close()
145
146 else:
147 print('Please check input data for errors!')
148
149
150
151if __name__ == '__main__':
152 maintainLedger(1, 'MSFT')