Skip to main content

Frequently used functions for financial data analysis

Project description

x1

Latest Release PyPI version
PyPI version
Docs Documentation Status
Build Travis CI
Coverage codecov
Quality Codacy Badge
CodeFactor
License GitHub license

Frequently used functions for financial data analysis

Installation

pip install xone

Utilities

In[1]: from xone import utils

Convert anything to list.

  • If the input is clean, use tolist() directly. Some functions requires list as input, tolist() is to standardize all inputs for them.
In[2]: ticker = 'BHP AU'
In[3]: list_of_tickers = tolist(ticker)
In[4]: list_of_tickers
Out[4]: ['BHP AU']
In[5]: raw_price = [31.08, 31.10, 31.11, 31.07, 31.04, 31.04]
In[6]: price = utils.tolist(raw_price)
In[7]: price
Out[7]: [31.08, 31.10, 31.11, 31.07, 31.04, 31.04]
  • If the input is list of tuples / lists / any weird combination, use flatten():
In[8]: raw_volume = [(10166, 69981), [14343, 10096], 11506, 9718]
In[9]: volume = utils.flatten(raw_volume)
In[10]: volume
Out[10]: [10166, 69981, 14343, 10096, 11506, 9718]

Order preserving DataFrame construction from list of dict.

Prior to Python 3.7, dict is not ordered like OrderedDict. Passing dict directly to DataFrame constructor will make the columns sorted by alphabets.

In[11]: import pandas as pd

In[12]: data_list = [
            dict(sid=1, symbol='1 HK', price=88.8),
            dict(sid=700, symbol='700 HK', price=350.),
        ]
In[13]: pd.DataFrame(data_list)
Out[13]:
   price  sid  symbol
0  88.80    1    1 HK
1 350.00  700  700 HK

to_frame makes sure the order of inputs will be kept:

In[14]: utils.to_frame(data_list)
Out[14]:
   sid  symbol  price
0    1    1 HK  88.80
1  700  700 HK 350.00

Files

In[15]: from xone import files

Automatic check and create path and save files:

In[16]: DATA_PATH = '/data/Bloomberg'
In[17]: data_file = f'{DATA_PATH}/{ticker.split()[-1]}/{ticker}/2018-09-10.parq'

In[18]: sample = pd.DataFrame(
            data=dict(price=price, volume=volume),
            index=pd.DatetimeIndex(
                start='2018-09-10T10:10:00', periods=6, freq='min'
            ).tz_localize('Australia/Sydney'),
        )
In[19]: sample
Out[19]: 
                           price  volume
2018-09-10 10:10:00+10:00  31.08   10166
2018-09-10 10:11:00+10:00  31.10   69981
2018-09-10 10:12:00+10:00  31.11   14343
2018-09-10 10:13:00+10:00  31.07   10096
2018-09-10 10:14:00+10:00  31.04   11506
2018-09-10 10:15:00+10:00  31.04    9718

create_folder checks folder existence and create all parent folders for the target folder.

In[20]: files.create_folder(data_file, is_file=True)
In[21]: sample.to_parquet(data_file)

Logs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xone-0.0.17.tar.gz (17.1 kB view hashes)

Uploaded Source

Built Distribution

xone-0.0.17-py3-none-any.whl (22.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page