Friday, August 31, 2018

timedelta64[D] is always coerced to timedelta64[ns]

I encountered the same problem when calculating timedelta in a dataframe. It even ended with an error when I tried to call the days attribute. I am using Numpy 1.6.1
AttributeError: 'Series' object has no attribute 'days'
Problem
df_trans['DELTA'] = df_trans['DATE2'] - df_trans['DATE1']
print df_trans['DELTA'].dtype
timedelta64[ns]
print df_trans['DELTA']
0 8 days, 00:00:00
1 15 days, 00:00:00
2 5 days, 00:00:00
df_trans['DELTA'] = df_trans['DELTA'].astype('timedelta64[D]')
print df_trans['DELTA'].dtype
Name: DELTA, dtype: timedelta64[D]
print df_trans['DELTA']
0 8 days, 00:00:00
1 15 days, 00:00:00
2 5 days, 00:00:00
Nothing changed at all
print df_trans['DELTA'].days
AttributeError: 'Series' object has no attribute 'days'
I get rid of the problem by putting it in to a list for the conversion.
            Ss_timedelta = df_trans['DATE2'] - df_trans['DATE1']
            ls_timedelta = Ss_timedelta.values.astype('timedelta64[D]').tolist()
            for i in range(0, len(ls_timedelta)):
                    ls_timedelta[i] = ls_timedelta[i].days / 1000                        
            df_trans['HOLDDAYS'] = pd.Series(ls_timedelta)
Full discussion at GitHub
https://github.com/pydata/xarray/issues/1143

Tuesday, August 21, 2018

Download csv into DataFrame



import urllib
import urllib2
import csv
import pandas

#Calling this function will download a csv and return it in a dataframe
#21 AUG 2018
#David Tsang

def downloadasdataframe(url):

    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    reader = csv.reader(response)
    ls_data = list(reader)
    headers = ls_data[0]
    df_data = pandas.DataFrame.from_records(ls_data[1:], columns=headers)
    return df_data

Monday, August 6, 2018

Unable to find vcvarsall.bat - TA-lib




I hit the "Unable to find vcvarsall.bat" when installing TA-Lib using PIP. I am running Python 2.7.8 on Windows 10 64bits.

Here is how I get rid of the problem.

1. Downloading Microsoft Visual C++ Compiler for Python 2.7

https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266

If you are running other version of python, you may seek help from this link

https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

2. Upgrade the setup tools and wheel

pip install --upgrade pip setuptools wheel

check the setuptools version by using pip list.

upgraded my setuptools to 40.0.0


3. Install TA-LIB

pip install TA-LIB


Good to go!

Applying SMA10/20, SMA20/50 as trading signals

This is the comparison for results before and after applying SMA10/20 and SMA20/50 in the stock trader. Background Trading 3 stock ma...