from IPython.display import display

"""
Explanation: Third Party Libraries With Rich Output
A number of third party libraries defined their own custom display logic. This gives their objcts rich output by default when used in the Notebook.
End of explanation
"""


import pandas

"""
Explanation: Pandas
Pandas is a data analysis library for Python. Its DataFrame objects have an HTML table representation in the Notebook.
End of explanation
"""


%%writefile data.csv
Date,Open,High,Low,Close,Volume,Adj Close
2012-06-01,569.16,590.00,548.50,584.00,14077000,581.50
2012-05-01,584.90,596.76,522.18,577.73,18827900,575.26
2012-04-02,601.83,644.00,555.00,583.98,28759100,581.48
2012-03-01,548.17,621.45,516.22,599.55,26486000,596.99
2012-02-01,458.41,547.61,453.98,542.44,22001000,540.12
2012-01-03,409.40,458.24,409.00,456.48,12949100,454.53

"""
Explanation: Here is a small amount of stock data for APPL:
End of explanation
"""


df = pandas.read_csv('data.csv')

"""
Explanation: Read this as into a DataFrame:
End of explanation
"""


df

"""
Explanation: And view the HTML representation:
End of explanation
"""


from sympy.interactive.printing import init_printing
init_printing(use_latex='mathjax')

from __future__ import division
import sympy as sym
from sympy import *
x, y, z = symbols("x y z")
k, m, n = symbols("k m n", integer=True)
f, g, h = map(Function, 'fgh')

Rational(3,2)*pi + exp(I*x) / (x**2 + y)

a = 1/x + (x*sin(x) - 1)/x
a

(1/cos(x)).series(x, 0, 6)

"""
Explanation: SymPy
SymPy is a symbolic computing library for Python. Its equation objects have LaTeX representations that are rendered in the Notebook.
End of explanation
"""


import vincent
import pandas as pd

import pandas.io.data as web
import datetime
all_data = {}
date_start = datetime.datetime(2010, 1, 1)
date_end = datetime.datetime(2014, 1, 1)
for ticker in ['AAPL', 'IBM', 'YHOO', 'MSFT']:
    all_data[ticker] = web.DataReader(ticker, 'yahoo', date_start, date_end)
price = pd.DataFrame({tic: data['Adj Close']
                      for tic, data in all_data.items()})

vincent.initialize_notebook()

line = vincent.Line(price[['AAPL', 'IBM', 'YHOO', 'MSFT']], width=600, height=300)
line.axis_titles(x='Date', y='Price')
line.legend(title='Ticker')
display(line)

"""
Explanation: Vincent
Vincent is a visualization library that uses the Vega visualization grammar to build d3.js based visualizations in the Notebook and on http://nbviewer.ipython.org. Visualization objects in Vincetn have rich HTML and JavaSrcript representations.
End of explanation
"""


