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 [ ]:
Content source: y12studio/y12docker
Similar notebooks: