Skip to main content

Tools for columnar files manipulation in command line

Project description

Tabtools - SQL & streaming processing in command line

CircleCI Badge PyPi version FOSSA Status

Install

python3 -m pip install --user tabtools

Tests

make test

Examples

Demo file consists of HSBC daily stock data.

> head tabtools/tests/files/hsbc-stock.tsv

Date  Open    High    Low Close   Volume
2014-02-21  84.35   84.45   83.9    83.45   17275.0
2014-02-24  83.85   84.4    83.75   84.35   10549.0
2014-02-25  81.65   82.3    81.6    83.9    31186.0
2014-02-26  81.15   81.65   81.0    81.65   18937.0
2014-02-27  81.85   82.4    81.0    81.15   19688.0
2014-02-28  82.25   82.45   81.8    81.9    10806.0
2014-03-05  81.4    81.7    81.15   81.5    6101.0
2014-03-06  81.5    81.75   81.05   81.4    8642.0
2014-03-07  81.3    81.45   81.05   81.45   15464.0

Convert daily data to weekly:

> head tabtools/tests/files/hsbc-stock.tsv \
    | ttreduce -g 'week=strftime("%U", DateEpoch(Date))' \
        -s "Date=FIRST(Date); Open=FIRST(Open); High=MAX(High)" \
        -s "Low=MIN(Low); Close=LAST(Close); Volume=SUM(Volume)" \
    | ttpretty


week | Date       | Open  | High  | Low   | Close | Volume
-----|------------|-------|-------|-------|-------|--------
07   | 2014-02-21 | 84.35 | 84.45 | 83.9  | 83.45 | 17275.0
08   | 2014-02-24 | 83.85 | 84.4  | 81.0  | 81.9  | 91166
09   | 2014-03-05 | 81.4  | 81.75 | 81.05 | 81.45 | 30207

Sort original file, compute 3 different EMAs (exponential moving averages), MACD and simple moving average indicators, select last 10 lines and prettify output:

> cat tabtools/tests/files/hsbc-stock.tsv \
    | ttsort -k Date \
    | ttmap -s "*" \
        -s "fast_macd = EMA(Close, 12) - EMA(Close, 26); slow_macd = EMA(fast_macd, 9)" \
        -s "macd_histogram = fast_macd - slow_macd; ma50 = AVG(Close, 50)" \
    | tttail \
    | ttpretty

Date       | Open  | High  | Low   | Close | Volume  | fast_macd | slow_macd | macd_histogram | ma50
-----------|-------|-------|-------|-------|---------|-----------|-----------|----------------|--------
2015-07-02 | 69.55 | 69.75 | 69.3  | 70.15 | 17180.0 | -0.577588 | -0.302581 | -0.275007      | 73.7404
2015-07-03 | 69.55 | 70.25 | 69.45 | 69.55 | 13640.0 | -0.74297  | -0.390658 | -0.352311      | 73.7224
2015-07-06 | 67.6  | 68.85 | 67.0  | 69.55 | 34244.0 | -0.864075 | -0.485342 | -0.378734      | 73.6964
2015-07-07 | 68.7  | 69.0  | 68.35 | 67.9  | 15676.0 | -1.08074  | -0.604421 | -0.476315      | 73.6454
2015-07-08 | 66.2  | 67.6  | 66.0  | 68.45 | 31911.0 | -1.19429  | -0.722395 | -0.471898      | 73.5984
2015-07-09 | 67.05 | 67.5  | 65.35 | 65.75 | 29040.0 | -1.48504  | -0.874924 | -0.610114      | 73.4374
2015-07-10 | 68.1  | 68.45 | 67.0  | 67.75 | 31350.0 | -1.53636  | -1.00721  | -0.529149      | 73.2634
2015-07-13 | 69.0  | 69.05 | 67.0  | 68.1  | 16601.0 | -1.53114  | -1.112    | -0.419145      | 73.0974
2015-07-14 | 68.25 | 69.0  | 68.0  | 69.05 | 15219.0 | -1.43382  | -1.17636  | -0.257459      | 72.9294
2015-07-15 | 69.0  | 69.45 | 68.7  | 68.55 | 9676.0  | -1.38112  | -1.21731  | -0.163806      | 72.7614

License

FOSSA Status

Project details


Download files

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

Files for tabtools, version 0.6.0
Filename, size File type Python version Upload date Hashes
Filename, size tabtools-0.6.0-py3-none-any.whl (23.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size tabtools-0.6.0.tar.gz (20.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page