In [1]:
%matplotlib inline

In [18]:
import pandas as pd
import pandas.io.data as web
import datetime
start=datetime.datetime(2014, 1, 1)
end=datetime.datetime(2015, 1, 1)
# %5EGSPC sp500
f = web.DataReader("%5EGSPC", 'yahoo', start, end)
print(f.head())


                  Open        High         Low       Close      Volume  \
Date                                                                     
2014-01-02  1845.85999  1845.85999  1827.73999  1831.97998  3080600000   
2014-01-03  1833.20996  1838.23999  1829.13000  1831.37000  2774270000   
2014-01-06  1832.31006  1837.16003  1823.72998  1826.77002  3294850000   
2014-01-07  1828.70996  1840.09998  1828.70996  1837.88000  3511750000   
2014-01-08  1837.90002  1840.02002  1831.40002  1837.48999  3652140000   

             Adj Close  
Date                    
2014-01-02  1831.97998  
2014-01-03  1831.37000  
2014-01-06  1826.77002  
2014-01-07  1837.88000  
2014-01-08  1837.48999  

In [20]:
csvfile='sp500.csv'
f.to_csv(csvfile)
df = pd.read_csv(csvfile, index_col='Date', parse_dates=True)
print(df.head())


                  Open        High         Low       Close      Volume  \
Date                                                                     
2014-01-02  1845.85999  1845.85999  1827.73999  1831.97998  3080600000   
2014-01-03  1833.20996  1838.23999  1829.13000  1831.37000  2774270000   
2014-01-06  1832.31006  1837.16003  1823.72998  1826.77002  3294850000   
2014-01-07  1828.70996  1840.09998  1828.70996  1837.88000  3511750000   
2014-01-08  1837.90002  1840.02002  1831.40002  1837.48999  3652140000   

             Adj Close  
Date                    
2014-01-02  1831.97998  
2014-01-03  1831.37000  
2014-01-06  1826.77002  
2014-01-07  1837.88000  
2014-01-08  1837.48999  

In [21]:
df2 = df['Open']
print(df2.head())


Date
2014-01-02    1845.85999
2014-01-03    1833.20996
2014-01-06    1832.31006
2014-01-07    1828.70996
2014-01-08    1837.90002
Name: Open, dtype: float64

In [22]:
df3 = df[['Close','High']]
print(df3.head())


                 Close        High
Date                              
2014-01-02  1831.97998  1845.85999
2014-01-03  1831.37000  1838.23999
2014-01-06  1826.77002  1837.16003
2014-01-07  1837.88000  1840.09998
2014-01-08  1837.48999  1840.02002

In [26]:
df4 = df3[(df3['Close'] > 1400)]
print(df4.head())


                 Close        High
Date                              
2014-01-02  1831.97998  1845.85999
2014-01-03  1831.37000  1838.23999
2014-01-06  1826.77002  1837.16003
2014-01-07  1837.88000  1840.09998
2014-01-08  1837.48999  1840.02002

In [27]:
df['H-L'] = df.High - df.Low
print(df.head())


                  Open        High         Low       Close      Volume  \
Date                                                                     
2014-01-02  1845.85999  1845.85999  1827.73999  1831.97998  3080600000   
2014-01-03  1833.20996  1838.23999  1829.13000  1831.37000  2774270000   
2014-01-06  1832.31006  1837.16003  1823.72998  1826.77002  3294850000   
2014-01-07  1828.70996  1840.09998  1828.70996  1837.88000  3511750000   
2014-01-08  1837.90002  1840.02002  1831.40002  1837.48999  3652140000   

             Adj Close       H-L  
Date                              
2014-01-02  1831.97998  18.12000  
2014-01-03  1831.37000   9.10999  
2014-01-06  1826.77002  13.43005  
2014-01-07  1837.88000  11.39002  
2014-01-08  1837.48999   8.62000  

In [28]:
df['100MA'] = pd.rolling_mean(df['Close'], 100)
print(df[200:210])


                  Open        High         Low       Close      Volume  \
Date                                                                     
2014-10-17  1864.91003  1898.16003  1864.91003  1886.76001  4482120000   
2014-10-20  1885.62000  1905.03003  1882.30005  1904.01001  3331210000   
2014-10-21  1909.38000  1942.44995  1909.38000  1941.28003  3987090000   
2014-10-22  1941.29004  1949.31006  1926.82996  1927.10999  3761930000   
2014-10-23  1931.02002  1961.94995  1931.02002  1950.81995  3789250000   
2014-10-24  1951.58997  1965.27002  1946.27002  1964.57996  3078380000   
2014-10-27  1962.96997  1964.64001  1951.37000  1961.63000  3538860000   
2014-10-28  1964.14001  1985.05005  1964.14001  1985.05005  3653260000   
2014-10-29  1983.29004  1991.40002  1969.04004  1982.30005  3740350000   
2014-10-30  1979.48999  1999.40002  1974.75000  1994.65002  3586150000   

             Adj Close       H-L        100MA  
Date                                           
2014-10-17  1886.76001  33.25000  1961.183895  
2014-10-20  1904.01001  22.72998  1961.023695  
2014-10-21  1941.28003  33.06995  1961.200796  
2014-10-22  1927.10999  22.48010  1961.222196  
2014-10-23  1950.81995  30.92993  1961.487996  
2014-10-24  1964.57996  19.00000  1961.854995  
2014-10-27  1961.63000  13.27001  1962.066696  
2014-10-28  1985.05005  20.91004  1962.422797  
2014-10-29  1982.30005  22.35998  1962.733097  
2014-10-30  1994.65002  24.65002  1963.171697  

In [29]:
df['Difference'] = df['Close'].diff()
print(df.head())


                  Open        High         Low       Close      Volume  \
Date                                                                     
2014-01-02  1845.85999  1845.85999  1827.73999  1831.97998  3080600000   
2014-01-03  1833.20996  1838.23999  1829.13000  1831.37000  2774270000   
2014-01-06  1832.31006  1837.16003  1823.72998  1826.77002  3294850000   
2014-01-07  1828.70996  1840.09998  1828.70996  1837.88000  3511750000   
2014-01-08  1837.90002  1840.02002  1831.40002  1837.48999  3652140000   

             Adj Close       H-L  100MA  Difference  
Date                                                 
2014-01-02  1831.97998  18.12000    NaN         NaN  
2014-01-03  1831.37000   9.10999    NaN    -0.60998  
2014-01-06  1826.77002  13.43005    NaN    -4.59998  
2014-01-07  1837.88000  11.39002    NaN    11.10998  
2014-01-08  1837.48999   8.62000    NaN    -0.39001  

In [30]:
import matplotlib.pyplot as plt
df[['Open','High','Low','Close','100MA']].plot()
plt.show()



In [31]:
from mpl_toolkits.mplot3d import Axes3D
threedee = plt.figure().gca(projection='3d')
threedee.scatter(df.index, df['H-L'], df['Close'])
threedee.set_xlabel('Index')
threedee.set_ylabel('H-L')
threedee.set_zlabel('Close')
plt.show()


---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/IPython/core/formatters.pyc in __call__(self, obj)
    328                 pass
    329             else:
--> 330                 return printer(obj)
    331             # Finally look for special method names
    332             method = _safe_get_formatter_method(obj, self.print_method)

/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in <lambda>(fig)
    205 
    206     if 'png' in formats:
--> 207         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    208     if 'retina' in formats or 'png2x' in formats:
    209         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in print_figure(fig, fmt, bbox_inches, **kwargs)
    115 
    116     bytes_io = BytesIO()
--> 117     fig.canvas.print_figure(bytes_io, **kw)
    118     data = bytes_io.getvalue()
    119     if fmt == 'svg':

/usr/local/lib/python2.7/dist-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
   2156                     orientation=orientation,
   2157                     dryrun=True,
-> 2158                     **kwargs)
   2159                 renderer = self.figure._cachedRenderer
   2160                 bbox_inches = self.figure.get_tightbbox(renderer)

/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
    519 
    520     def print_png(self, filename_or_obj, *args, **kwargs):
--> 521         FigureCanvasAgg.draw(self)
    522         renderer = self.get_renderer()
    523         original_dpi = renderer.dpi

/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.pyc in draw(self)
    467 
    468         try:
--> 469             self.figure.draw(self.renderer)
    470         finally:
    471             RendererAgg.lock.release()

/usr/local/lib/python2.7/dist-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     57     def draw_wrapper(artist, renderer, *args, **kwargs):
     58         before(artist, renderer)
---> 59         draw(artist, renderer, *args, **kwargs)
     60         after(artist, renderer)
     61 

/usr/local/lib/python2.7/dist-packages/matplotlib/figure.pyc in draw(self, renderer)
   1083         dsu.sort(key=itemgetter(0))
   1084         for zorder, a, func, args in dsu:
-> 1085             func(*args)
   1086 
   1087         renderer.close_group('figure')

/usr/local/lib/python2.7/dist-packages/mpl_toolkits/mplot3d/axes3d.pyc in draw(self, renderer)
    271             # Then axes
    272             for ax in axes:
--> 273                 ax.draw(renderer)
    274 
    275         # Then rest

/usr/local/lib/python2.7/dist-packages/mpl_toolkits/mplot3d/axis3d.pyc in draw(self, renderer)
    210 
    211         # code from XAxis
--> 212         majorTicks = self.get_major_ticks()
    213         majorLocs = self.major.locator()
    214 

/usr/local/lib/python2.7/dist-packages/mpl_toolkits/mplot3d/axis3d.pyc in get_major_ticks(self, numticks)
    131 
    132     def get_major_ticks(self, numticks=None):
--> 133         ticks = maxis.XAxis.get_major_ticks(self, numticks)
    134         for t in ticks:
    135             t.tick1line.set_transform(self.axes.transData)

/usr/local/lib/python2.7/dist-packages/matplotlib/axis.pyc in get_major_ticks(self, numticks)
   1295         'get the tick instances; grow as necessary'
   1296         if numticks is None:
-> 1297             numticks = len(self.get_major_locator()())
   1298         if len(self.majorTicks) < numticks:
   1299             # update the new tick label properties from the old

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in __call__(self)
    864     def __call__(self):
    865         'Return the locations of the ticks'
--> 866         self.refresh()
    867         return self._locator()
    868 

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in refresh(self)
    881     def refresh(self):
    882         'Refresh internal information based on current limits.'
--> 883         dmin, dmax = self.viewlim_to_dt()
    884         self._locator = self.get_locator(dmin, dmax)
    885 

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in viewlim_to_dt(self)
    625     def viewlim_to_dt(self):
    626         vmin, vmax = self.axis.get_view_interval()
--> 627         return num2date(vmin, self.tz), num2date(vmax, self.tz)
    628 
    629     def _get_unit(self):

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in num2date(x, tz)
    343         tz = _get_rc_timezone()
    344     if not cbook.iterable(x):
--> 345         return _from_ordinalf(x, tz)
    346     else:
    347         x = np.asarray(x)

/usr/local/lib/python2.7/dist-packages/matplotlib/dates.pyc in _from_ordinalf(x, tz)
    223         tz = _get_rc_timezone()
    224     ix = int(x)
--> 225     dt = datetime.datetime.fromordinal(ix)
    226     remainder = float(x) - ix
    227     hour, remainder = divmod(24 * remainder, 1)

OverflowError: signed integer is greater than maximum
<matplotlib.figure.Figure at 0x7fa2bf5be490>

In [ ]: