def getTrades(self, listDf=None): ''' Create an alternate dataFrame by ticket. For large share sizes this may have dramatically fewer transactions. :params listDf: Normally leave blank. If used, listDf should be the be a list of DFs. :params jf: A JournalFiles object as this new CSV file needs to be written into the outdir. :return: The DataFrame created version of the data. :side effects: Saves a csv file of all transactions as single ticket transactions to jf.inpathfile ''' # TODO: Add the date to the saved file name after we get the date sorted out. rc = ReqCol() if not listDf: listDf = self.getListOfTicketDF() DataFrameUtil.checkRequiredInputFields(listDf[0], rc.columns) newDF = DataFrameUtil.createDf(listDf[0], 0) for tick in listDf: t = self.createSingleTicket(tick) newDF = newDF.append(t) outfile = "tradesByTicket.csv" opf = os.path.join(self.jf.indir, outfile) newDF.to_csv(opf) self.jf.resetInfile(outfile) return newDF, self.jf
def testCheckrequiredColumnsWithReqColFail(self): '''Test method DataFrameUtil.checkRequiredInputFields''' reqCol = ReqCol() finReqCol = FinReqCol() fail = pd.DataFrame( columns=['Time', 'Symb', 'Side', 'Price', 'Qty', 'Account']) rc = pd.DataFrame(columns=reqCol.columns) gotve = False try: DataFrameUtil.checkRequiredInputFields(fail, reqCol.columns) except ValueError as ex: print(ex) gotve = True finally: self.assertTrue(gotve, "Failed to throw value error") gotve = False try: DataFrameUtil.checkRequiredInputFields(rc, finReqCol.columns) except ValueError as ex: gotve = True finally: self.assertTrue(gotve, "Failed to throw a ValueError")
def __init__(self, jf, df=None): self.jf = jf if not isinstance(df, pd.DataFrame): self.df = pd.read_csv(self.jf.inpathfile) else: self.df = df if 'Date' not in self.df.columns: self.df['Date'] = jf.theDate rc = ReqCol() DataFrameUtil.checkRequiredInputFields(self.df, rc.columns)
def testCheckReqColumnsWithReqColSuccess(self): '''Test return values of DataFrameUtil.checkRequiredInputFields''' reqCol = ReqCol() finReqCol = FinReqCol() frc = pd.DataFrame(columns=finReqCol.columns) t1 = False t2 = False try: t1 = DataFrameUtil.checkRequiredInputFields(frc, finReqCol.columns) t2 = DataFrameUtil.checkRequiredInputFields(frc, reqCol.columns) except ValueError as ex: print(ex) self.assertTrue(t1) self.assertTrue(t2)
def processInputFile(self, trades, theDate=None, jf=None): ''' Run the methods for this object ''' reqCol = ReqCol() DataFrameUtil.checkRequiredInputFields(trades, reqCol.columns) trades = self.zeroPadTimeStr(trades) trades = trades.sort_values( [reqCol.acct, reqCol.ticker, reqCol.date, reqCol.time]) trades = self.mkShortsNegative(trades) swingTrade = self.getOvernightTrades(trades) swingTrade, success = self.figureOvernightTransactions(trades, jf) if not success: return None, success trades = self.insertOvernightRow(trades, swingTrade) trades = self.addDateField(trades, theDate) return trades, True
def testCheckRequiredColumnsThrow(self): '''Test DataFrameUtil.checkRequredInputFields for raising exceptions''' vals = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']] apd = pd.DataFrame(vals) apd.columns = [[ 'Its', 'the', 'end', 'of', 'the', 'world', 'as', 'we', 'know', 'it' ]] columns = [ 'Its', 'the', 'end', 'of', 'the', 'world', 'as', 'we', 'know', 'it', 'sofuckit' ] # DataFrameUtil.checkRequiredInputFields(apd, columns) try: DataFrameUtil.checkRequiredInputFields(apd, columns) except ValueError: pass except Exception as ex: msg = "{0}{1}".format("Unexpected exception. ", ex) self.fail(msg) else: self.fail("Failed to throw expected exception") vals = [[1, 2, 3, 4, 5, 6, 7, 8, 9], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']] apd = pd.DataFrame(vals, columns=[ 'Its', 'the', 'end', 'of', 'world', 'as', 'we', 'know', 'it' ]) gotve = False try: DataFrameUtil.checkRequiredInputFields(apd, columns) except ValueError: gotve = True except Exception as ex: msg = "Wrong exception was thrown" + ex self.fail(msg) finally: self.assertTrue(gotve, "Failed to throw a Value Error Exception")