otp.ReadFromDataFrame#
- class ReadFromDataFrame(dataframe=None, timestamp_column=utils.adaptive, symbol_name_field=None, symbol=utils.adaptive, db=utils.adaptive_to_default, tick_type=utils.adaptive, start=utils.adaptive, end=utils.adaptive, force_compatibility_mode=False, **kwargs)#
Bases:
Load pandas.DataFrame as data source
- Parameters
dataframe (pandas.DataFrame) – Pandas DataFrame to load.
timestamp_column (str, optional) –
Column containing time info.
If parameter not set and DataFrame has one of columns
TIMEorTimestamp(case-insensitive), it will be automatically used astimestamp_column. To disable this, settimestamp_column=None.Timestamp column dtype should be either datetime related or string.
symbol_name_field (str, optional) – Column containing symbol name.
symbol (str) –
Symbol(s) from which data should be taken.
If both symbol_name_field and symbol are omitted
otp.config.default_symbolvalue will be used.db (str) – Custom database name for the node of the graph.
tick_type (str) – Tick type. Default: ANY.
start (
otp.datetime) – Custom start time of the query.end (
otp.datetime) – Custom end time of the query.force_compatibility_mode (bool) – Force use of old dataframe load method
Examples
Let’s assume that we have the following pandas dataframe:
>>> print(dataframe) Timestamp SIDE PRICE SIZE 0 2024-01-01 12:00:00.001 BUY 50.05 100 1 2024-01-01 12:00:02.000 SELL 50.05 150 2 2024-01-01 12:00:02.500 BUY 49.95 200 3 2024-01-01 12:00:03.100 SELL 49.98 80 4 2024-01-01 12:00:03.250 BUY 50.02 250
Simple dataframe loading, timestamp column will be automatically detected and converted to datetime:
>>> src = otp.ReadFromDataFrame(dataframe, symbol='AAPL') >>> otp.run(src, date=otp.date(2024, 1, 1)) Time SIDE PRICE SIZE SYMBOL_NAME 0 2024-01-01 12:00:00.001 BUY 50.05 100 AAPL 1 2024-01-01 12:00:02.000 SELL 50.05 150 AAPL 2 2024-01-01 12:00:02.500 BUY 49.95 200 AAPL 3 2024-01-01 12:00:03.100 SELL 49.98 80 AAPL 4 2024-01-01 12:00:03.250 BUY 50.02 250 AAPL
Setting custom timestamp_column. For example, if we have
DATA_TIMEScolumn, instead ofTimestamps>>> src = otp.ReadFromDataFrame(dataframe, symbol='AAPL', timestamp_column='DATA_TIMES') >>> otp.run(src, date=otp.date(2024, 1, 1)) Time SIDE PRICE SIZE SYMBOL_NAME 0 2024-01-01 12:00:00.001 BUY 50.05 100 AAPL 1 2024-01-01 12:00:02.000 SELL 50.05 150 AAPL 2 2024-01-01 12:00:02.500 BUY 49.95 200 AAPL 3 2024-01-01 12:00:03.100 SELL 49.98 80 AAPL 4 2024-01-01 12:00:03.250 BUY 50.02 250 AAPL
You can load data even without time data.
Timecolumn will be set as query end time.>>> src = otp.ReadFromDataFrame(dataframe, symbol='AAPL') >>> otp.run(src, date=otp.date(2024, 1, 1)) Time SIDE PRICE SIZE SYMBOL_NAME 0 2024-01-02 BUY 50.05 100 AAPL 1 2024-01-02 SELL 50.05 150 AAPL 2 2024-01-02 BUY 49.95 200 AAPL 3 2024-01-02 SELL 49.98 80 AAPL 4 2024-01-02 BUY 50.02 250 AAPL
Same effect will be if you don’t set
timestamp_columnand disable automatic timestamp detection:>>> src = otp.ReadFromDataFrame(dataframe, symbol='AAPL', timestamp_column=None) >>> otp.run(src, date=otp.date(2024, 1, 1)) Time Timestamp SIDE PRICE SIZE SYMBOL_NAME 0 2024-01-02 2024-01-01 12:00:00.001 BUY 50.05 100 AAPL 1 2024-01-02 2024-01-01 12:00:02.000 SELL 50.05 150 AAPL 2 2024-01-02 2024-01-01 12:00:02.500 BUY 49.95 200 AAPL 3 2024-01-02 2024-01-01 12:00:03.100 SELL 49.98 80 AAPL 4 2024-01-02 2024-01-01 12:00:03.250 BUY 50.02 250 AAPL
Setting
symbol_name_fieldfor setting symbol name from dataframe. In this example, let’s say, that we have columnSYMBOLwith symbol names.>>> src = otp.ReadFromDataFrame(dataframe, symbol_name_field='SYMBOL') >>> otp.run(src, date=otp.date(2024, 1, 1)) Time SIDE PRICE SIZE SYMBOL 0 2024-01-01 12:00:00.001 BUY 50.05 100 AAPL 1 2024-01-01 12:00:02.000 SELL 50.05 150 AAPL 2 2024-01-01 12:00:02.500 BUY 49.95 200 AAPL 3 2024-01-01 12:00:03.100 SELL 49.98 80 AAPL 4 2024-01-01 12:00:03.250 BUY 50.02 250 AAPL