{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Analyse de données avec Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Pandas est une librairie de manipulation de données pour l'analyse statistiques, fondée sur numpy"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import pandas as pds"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"# pour avoir les figures dans le notebook jupyter\n",
"%pylab inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Séries, DataFrames et leur indexation"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Pandas repose sur la notion de série de données (en fait un vecteur numpy indexé)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 2.1\n",
"1 8.0\n",
"2 60.0\n",
"dtype: float64\n"
]
}
],
"source": [
"fr = pds.Series([2.1,8,60]) \n",
"print(fr)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"nat. 2.1\n",
"chom. 8.0\n",
"pop. 60.0\n",
"dtype: float64\n"
]
}
],
"source": [
"fr.index = [\"nat.\",\"chom.\",\"pop.\"]\n",
"print(fr)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"On peut accéder par valeur de l'index ou par le numéro d'ordre, comme dans une liste"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.1 2.1\n"
]
}
],
"source": [
"print(fr[\"nat.\"] , fr[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut regrouper plusieurs séries comparables dans un DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"a=pds.DataFrame(data={\"france\":[2.1,8,60],\n",
" \"allemagne\":[1.7,6,80],\n",
" \"italie\":[2.3,10,50]},\n",
" index=[\"nat.\",\"chom.\",\"pop.\"])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" france \n",
" allemagne \n",
" italie \n",
" \n",
" \n",
" \n",
" \n",
" nat. \n",
" 2.1 \n",
" 1.7 \n",
" 2.3 \n",
" \n",
" \n",
" chom. \n",
" 8.0 \n",
" 6.0 \n",
" 10.0 \n",
" \n",
" \n",
" pop. \n",
" 60.0 \n",
" 80.0 \n",
" 50.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" france allemagne italie\n",
"nat. 2.1 1.7 2.3\n",
"chom. 8.0 6.0 10.0\n",
"pop. 60.0 80.0 50.0"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Chaque colonne est une série, et c'est la principale indexation du Frame"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"nat. 1.7\n",
"chom. 6.0\n",
"pop. 80.0\n",
"Name: allemagne, dtype: float64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[\"allemagne\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Chaque ligne peut être récupéré avec un indice de localisation, et donne aussi une série"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"france 2.1\n",
"allemagne 1.7\n",
"italie 2.3\n",
"Name: nat., dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# nom dans l'index\n",
"a.loc[\"nat.\"]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"france 2.1\n",
"allemagne 1.7\n",
"italie 2.3\n",
"Name: nat., dtype: float64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# position dans les lignes\n",
"a.iloc[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plusieurs colonnes extraites ensembles forment aussi un Frame"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" france \n",
" allemagne \n",
" \n",
" \n",
" \n",
" \n",
" nat. \n",
" 2.1 \n",
" 1.7 \n",
" \n",
" \n",
" chom. \n",
" 8.0 \n",
" 6.0 \n",
" \n",
" \n",
" pop. \n",
" 60.0 \n",
" 80.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" france allemagne\n",
"nat. 2.1 1.7\n",
"chom. 8.0 6.0\n",
"pop. 60.0 80.0"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[[\"france\",\"allemagne\"]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Un intervalle d'indice réfère forcément aux lignes"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" france \n",
" allemagne \n",
" italie \n",
" \n",
" \n",
" \n",
" \n",
" nat. \n",
" 2.1 \n",
" 1.7 \n",
" 2.3 \n",
" \n",
" \n",
" chom. \n",
" 8.0 \n",
" 6.0 \n",
" 10.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" france allemagne italie\n",
"nat. 2.1 1.7 2.3\n",
"chom. 8.0 6.0 10.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[0:2]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Visualisation, statistiques de base"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas donne accès à un certain nombre de fonctions statistiques, et de visualisations standards."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 3.000000\n",
"mean 2.033333\n",
"std 0.305505\n",
"min 1.700000\n",
"25% 1.900000\n",
"50% 2.100000\n",
"75% 2.200000\n",
"max 2.300000\n",
"Name: nat., dtype: float64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.loc[\"nat.\"].describe()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"france 23.366667\n",
"allemagne 29.233333\n",
"italie 20.766667\n",
"dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# moyenne par colonne: ici, n'a pas de sens\n",
"a.mean()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"63.333333333333336"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.loc[\"pop.\"].mean()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a.loc[\"nat.\"].plot(kind=\"barh\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAR2ElEQVR4nO3dfZBl9V3n8fcnzCAPITyEdoqFkGY3SKRUiNuhiIkpNjxUstGAZQoTV2tUqkZXN9G47jK7tVXZlLoSd2uz8XEzFaJTVhKDJAhFNAk7QqkxEnqAEGCMIIEIxUPrAnkwMYF8/eP+Rpqenu7T3fd29294v6pO3XN+53f6frtP3889/Tv39ElVIUnqz/M2ugBJ0uoY4JLUKQNckjplgEtSpwxwSerUlvV8shNPPLGmp6fX8yklqXt79+79u6qaWti+rgE+PT3N7Ozsej6lJHUvyQOLtTuEIkmdMsAlqVMGuCR1ygCXpE4Z4JLUqUEBnuRtSe5KcmeSDyY5IslpSW5Ocm+SDyU5fNLFSpKesWyAJzkZeCswU1XfARwGvAl4J/CuqnoJ8Dhw2SQLlSQ929AhlC3AkUm2AEcBDwOvAa5u63cDl4y/PEnSwSwb4FX1EPC/gC8wCu4ngb3AE1X1VOv2IHDyYtsn2ZFkNsns3NzceKqWVijJWCZpMxkyhHI8cDFwGvAvgKOB1w59gqraVVUzVTUzNXXAlaDSuqiqJacXX379sn28+Yk2myFDKBcAn6+quar6BvAR4JXAcW1IBeAU4KEJ1ShJWsSQAP8CcG6SozL6G/J84G7gRuCNrc924NrJlChJWsyQMfCbGZ2svBX4bNtmF3A58PNJ7gVeCFw5wTolSQsM+m+EVfV24O0Lmu8Dzhl7RZKkQbwSU5I6ZYBLUqcMcEnqlAEuSZ0ywCWpUwa4JHXKAJekThngktQpA1ySOmWAS1KnDHBJ6pQBLkmdMsAlqVMGuCR1ygCXpE4Z4JLUqSE3NT4jye3zpi8m+bkkJyS5Ick97fH49ShYkjQy5JZqn6uqs6vqbOBfA/8AXAPsBPZU1enAnrYsSVonKx1COR/4m6p6ALgY2N3adwOXjLMwSdLSVhrgbwI+2Oa3VdXDbf4RYNtiGyTZkWQ2yezc3Nwqy5QkLTQ4wJMcDrwB+IOF66qqgFpsu6raVVUzVTUzNTW16kIlSc+2kiPw1wG3VtWjbfnRJCcBtMfHxl2cJOngVhLgb+aZ4ROA64DtbX47cO24ipIkLW9QgCc5GrgQ+Mi85iuAC5PcA1zQliVJ62TLkE5V9RXghQva/p7Rp1IkSRvAKzElqVMGuCR1ygCXpE4Z4JLUKQNckjplgEtSpwxwSeqUAS5JnTLAJalTBrgkdcoAl6ROGeCS1CkDXJI6ZYBLUqcMcEnqlAEuSZ0ywCWpU0NvqXZckquT/FWSfUlekeSEJDckuac9Hj/pYiVJzxh6BP5u4GNV9VLgLGAfsBPYU1WnA3vasiRpnSwb4EmOBV4NXAlQVV+vqieAi4Hdrdtu4JJJFSlJOtCQI/DTgDngd5LcluS97S7126rq4dbnEWDbYhsn2ZFkNsns3NzceKreAEnGMknSuAwJ8C3AdwO/XVUvA77CguGSqiqgFtu4qnZV1UxVzUxNTa213g1TVctOL778+mX7SNK4DAnwB4EHq+rmtnw1o0B/NMlJAO3xscmUKElazLIBXlWPAH+b5IzWdD5wN3AdsL21bQeunUiFkqRFbRnY7y3A+5McDtwH/Dij8L8qyWXAA8ClkylRkrSYQQFeVbcDM4usOn+85UiShvJKTEnqlAEuSZ0ywCWpUwa4JHXKAJekThngktQpA1ySOmWAS1KnDHBJ6pQBLkmdMsAlqVMGuCR1ygCXpE4Z4JLUKQNckjplgEtSpwbd0CHJ/cCXgKeBp6pqJskJwIeAaeB+4NKqenwyZUqSFlrJEfi/qaqzq2r/nXl2Anuq6nRgDwvuVC9Jmqy1DKFcDOxu87uBS9ZejiRpqKEBXsAnkuxNsqO1bauqh9v8I8C2xTZMsiPJbJLZubm5NZYr6bkmyVimQ9HQAH9VVX038DrgZ5K8ev7KqipGIX+AqtpVVTNVNTM1NbW2aiU951TVstOLL79+2T6HokEBXlUPtcfHgGuAc4BHk5wE0B4fm1SRkqQDLRvgSY5Ocsz+eeAi4E7gOmB767YduHZSRUqSDjTkY4TbgGvaGNIW4ANV9bEktwBXJbkMeAC4dHJlSpIWWjbAq+o+4KxF2v8eOH8SRUmSlueVmJLUKQNckjplgEtSpwxwSeqUAS5JnTLAJalTBrgkdcoAl6ROGeCS1CkDXJI6ZYBLUqcMcEnq1KCbGkub2Vnv+ARPfvUba/460zs/uqbtjz1yK595+0VrrkMaygBX95786je4/4rXb3QZa34DkFbKIRRJ6pQBLkmdGhzgSQ5LcluS69vyaUluTnJvkg8lOXxyZUqSFlrJEfjPAvvmLb8TeFdVvQR4HLhsnIVJkpY2KMCTnAK8HnhvWw7wGuDq1mU3cMkkCpQkLW7oEfj/Af4z8M22/ELgiap6qi0/CJy82IZJdiSZTTI7Nze3pmIlSc9YNsCTfB/wWFXtXc0TVNWuqpqpqpmpqanVfAlJ0iKGfA78lcAbkvxb4AjgBcC7geOSbGlH4acAD02uTEnSQssegVfVf6mqU6pqGngT8CdV9e+AG4E3tm7bgWsnVqUk6QBr+Rz45cDPJ7mX0Zj4leMpSZI0xIoupa+qm4Cb2vx9wDnjL0mSNIRXYkpSpwxwSeqUAS5JnTLAJalTBrgkdcoAl6ROGeCS1CkDXJI6ZYBLUqe8qXGzGe5s7l3NJa2EAd5shjube1dzSSvhEIokdcoAl6ROGeCS1CkDXJI6ZYBLUqeG3NT4iCSfTvKZJHcleUdrPy3JzUnuTfKhJIdPvlxJ0n5DjsD/EXhNVZ0FnA28Nsm5wDuBd1XVS4DHgcsmV6YkaaEhNzWuqvpyW9zapgJeA1zd2ncDl0ykQknSogZdyJPkMGAv8BLgN4G/AZ6oqqdalweBkw+y7Q5gB8Cpp5661nolHWI2w1XQ0OeV0IMCvKqeBs5OchxwDfDSoU9QVbuAXQAzMzO1miIlHbo2w1XQ0OeV0Cv6FEpVPQHcCLwCOC7J/jeAU4CHxlybJGkJQz6FMtWOvElyJHAhsI9RkL+xddsOXDupIiVJBxoyhHISsLuNgz8PuKqqrk9yN/D7SX4JuA24coJ1SpIWWDbAq+oO4GWLtN8HnDOJoiRJy/NKTEnqlAEuSZ0ywCWpUwa4JHXKAJekThngktQpA1ySOmWAS1KnDHBJ6pQBLkmdMsAlqVMGuCR1ygCXpE4Z4JLUKQNckjplgEtSpwxwSerUkHtivijJjUnuTnJXkp9t7SckuSHJPe3x+MmXK0nab8gR+FPAf6yqM4FzgZ9JciawE9hTVacDe9qyJGmdLBvgVfVwVd3a5r/E6I70JwMXA7tbt93AJZMqUpJ0oBWNgSeZZnSD45uBbVX1cFv1CLDtINvsSDKbZHZubm4NpUqS5hsc4EmeD3wY+Lmq+uL8dVVVQC22XVXtqqqZqpqZmppaU7GSpGcMCvAkWxmF9/ur6iOt+dEkJ7X1JwGPTaZESdJihnwKJcCVwL6q+t/zVl0HbG/z24Frx1+eJOlgtgzo80rgR4HPJrm9tf1X4ArgqiSXAQ8Al06mREnSYpYN8Kr6cyAHWX3+eMuRJA3llZiS1CkDXJI6ZYBLUqcMcEnqlAEuSZ0ywCWpUwa4JHXKAJekThngktQpA1ySOmWAS1KnDHBJ6pQBLkmdMsAlqVMGuCR1ygCXpE4NuaXa+5I8luTOeW0nJLkhyT3t8fjJlilJWmjIEfjvAq9d0LYT2FNVpwN72rIkaR0tG+BV9afA/1/QfDGwu83vBi4Zc12SpGUMuanxYrZV1cNt/hFg28E6JtkB7AA49dRTV/l0kg5Vx3z7Tr5z98b/EX/MtwO8fqPLWJHVBvg/q6pKUkus3wXsApiZmTloP0nPTV/adwX3X7HxwTm986MbXcKKrfZTKI8mOQmgPT42vpIkSUOsNsCvA7a3+e3AteMpR5I01JCPEX4Q+BRwRpIHk1wGXAFcmOQe4IK2LElaR8uOgVfVmw+y6vwx17KhNsOJlB5PokjaOGs+iXmo2AwnUno8iSJp43gpvSR1ygCXpE4Z4JLUKcfA1b3NcAJ6VAd4Enp1NsP5n2OP3LrRJayYAa7ubYYT0LA5QqhH49h30zs/uil+B9abAT7PRr8AezwCkLRxDPDGowBJvfEkpiR1yiNwHRI2evgLHALT+jPA1T2Hv/Rc5RCKJHXKAJekTjmEImlTSzKs3zuXXl916N0QzAAfyF8iaWP4mjk4A3wgf4n6NuQNeLk3X/D3QJvLmsbAk7w2yeeS3Jtk4/8ZhXQQVTWWSdpMVh3gSQ4DfhN4HXAm8OYkZ46rMEnS0tZyBH4OcG9V3VdVXwd+H7h4PGVJkpazlgA/GfjbecsPtrZnSbIjyWyS2bm5uTU8nSRpvol/DryqdlXVTFXNTE1NTfrpJOk5Yy0B/hDwonnLp7Q2SdI6WEuA3wKcnuS0JIcDbwKuG09ZkqTlrPpz4FX1VJL/AHwcOAx4X1XdNbbKJElLWtOFPFX1R8AfjakWSdIKZD0vTkgyBzywbk+4/k4E/m6ji9CquO/6dqjvvxdX1QGfAlnXAD/UJZmtqpmNrkMr577r23N1//nvZCWpUwa4JHXKAB+vXRtdgFbNfde35+T+cwxckjrlEbgkdcoAl6ROGeALJHlrkn1J3r/RtWhpSe5PcmKb//JG16PxSfIX7XE6yQ8P6D+d5M42P5Pk1yZd42bgLdUO9NPABVX14P6GJFuq6qkNrEl6Tqmq72mz08APAx9YwbazwOwEytp0PAKfJ8n/Bf4l8MdJnkzye0k+Cfxee4f/syS3tul72jbnJbkpydVJ/irJ+9NuwJjk5Un+Islnknw6yTFJDkvyP5PckuSOJD+5gd9yN5L8YZK9Se5KsmOZvv9p3s/3Ha1tuu2f303y120/XZDkk0nuSXJO63dOkk8lua3tuzNa+1FJrkpyd5JrktycZKat+3KSX277+S+TbGvtU0k+3Gq5JckrJ/tTOnTM+4vqCuB7k9ye5G0Hex0u2Pa8JNe3+aOTvK+9/m5LcmjddGZc9wo8VCbgfkaX5f53YC9wZGs/CjiizZ8OzLb584AnGf073ecBnwJeBRwO3Ae8vPV7AaO/eHYA/621fQujI4XTNvr73uwTcEJ7PBK4E3jh/n3V2r/cHi9i9JGytP1xPfBqRkdyTwHf2dr3Au9r/S4G/nD+fmrzFwAfbvO/ALynzX9H+1ozbbmA72/zvzpv/34AeFWbPxXYt9E/x16mefvzPOD6ee0Hex1OA3cu3Ab4H8CPtPnjgL8Gjt7o729ck0MoS7uuqr7a5rcCv5HkbOBp4Nvm9ft0tSGXJLcz+mV6Eni4qm4BqKovtvUXAd+V5I1t22MZ/SJ+fsLfS+/emuQH2vyLGP3MFnNRm25ry89vfb8AfL6qPguQ5C5gT1VVks8y2mcw2h+7k5zOKJi3tvZXAe8GqKo7k9wx7zm/zuiNAkZvDBe2+QuAM9sfZAAvSPL8qnK8fvWWeh0u5iLgDUl+oS0fQXsznVyJ68cAX9pX5s2/DXgUOIvREdzX5q37x3nzT7P0zzXAW6rq4+Mq8lCX5DxGYfiKqvqHJDcxeiEu2h34lap6z4KvMc2z99M35y1/k2f22S8CN1bVD7RtbhpQ4jeqHeLx7P3/PODcqvra4ptpFZZ6HS4mwA9W1ecmXdhGcAx8uGMZHVF/E/hRRv8DfSmfA05K8nKANv69hdH/T//3Sba29m9LcvQE6z4UHAs83sL7pcC5S/T9OPATSZ4PkOTkJN+6wufaf2epH5vX/kng0vY1z2Q0FLOcTwBv2b/Qjhq1Ml8Cjpm3vNLX4ceBt8w7L/WyiVS5QQzw4X4L2J7kM8BLefbR+QGq6uvADwG/3ra5gdFR43uBu4Fb28ee3oN/CS3nY8CWJPsYndT6y4N1rKpPMBp7/lQbGrmaZwfAcn4V+JUkt/Hs/fJbwFSSu4FfAu5iNEy2lLcCM+1k6t3AT62gDo3cATzdThC/jRW+Dhn9RbUVuKMNm/3iRKtdZ15KLw2Q5DBga1V9Lcm/Av4fcEZ7o5Y2hEd+0jBHATe2oa8AP214a6N5BC5JnXIMXJI6ZYBLUqcMcEnqlAEuSZ0ywCWpU/8EYsB+wdqMM1AAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Attention\n",
"fig = a.plot(kind=\"box\")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" nat. \n",
" chom. \n",
" pop. \n",
" \n",
" \n",
" \n",
" \n",
" france \n",
" 2.1 \n",
" 8.0 \n",
" 60.0 \n",
" \n",
" \n",
" allemagne \n",
" 1.7 \n",
" 6.0 \n",
" 80.0 \n",
" \n",
" \n",
" italie \n",
" 2.3 \n",
" 10.0 \n",
" 50.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" nat. chom. pop.\n",
"france 2.1 8.0 60.0\n",
"allemagne 1.7 6.0 80.0\n",
"italie 2.3 10.0 50.0"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = a.transpose()\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = a.boxplot([\"nat.\",\"chom.\"])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = a.plot(kind=\"barh\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a[\"Langue\"] = [\"de\",\"fr\",\"it\"]\n",
"fig = a.plot(kind=\"barh\",\n",
" subplots=True,\n",
" figsize=(7,7),\n",
" legend=None)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Lecture / Ecriture de données, et plus de visualisations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Crééons un petit fichier de données, en mélangeant plusieurs types indexés par des dates. Le notebook nous permet\n",
"de créer des fichiers directement avec la commande spéciale %%file"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting data.csv\n"
]
}
],
"source": [
"%%file data.csv\n",
"Date,Open,High,Low,Close,Volume,Adj Close\n",
"2012-06-01,569.16,590.00,548.50,584.00,14077000,581.50\n",
"2012-05-01,584.90,596.76,522.18,577.73,18827900,575.26\n",
"2012-04-02,601.83,644.00,555.00,583.98,28759100,581.48\n",
"2012-03-01,548.17,621.45,516.22,599.55,26486000,596.99\n",
"2012-02-01,458.41,547.61,453.98,542.44,22001000,540.12\n",
"2012-01-03,409.40,458.24,409.00,456.48,12949100,454.53"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut lire des données sous forme tabulaire de base avec pandas (renvoie un DataFrame), en spécifiant un index"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"df = pds.read_csv('data.csv',index_col=\"Date\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(NB: La commande read_excel fait la même chose pour des fichiers excel)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-06-01 \n",
" 569.16 \n",
" 590.00 \n",
" 548.50 \n",
" 584.00 \n",
" 14077000 \n",
" 581.50 \n",
" \n",
" \n",
" 2012-05-01 \n",
" 584.90 \n",
" 596.76 \n",
" 522.18 \n",
" 577.73 \n",
" 18827900 \n",
" 575.26 \n",
" \n",
" \n",
" 2012-04-02 \n",
" 601.83 \n",
" 644.00 \n",
" 555.00 \n",
" 583.98 \n",
" 28759100 \n",
" 581.48 \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" \n",
" \n",
" 2012-01-03 \n",
" 409.40 \n",
" 458.24 \n",
" 409.00 \n",
" 456.48 \n",
" 12949100 \n",
" 454.53 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close\n",
"Date \n",
"2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n",
"2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26\n",
"2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n",
"2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Open 5.286450e+02\n",
"High 5.763433e+02\n",
"Low 5.008133e+02\n",
"Close 5.573633e+02\n",
"Volume 2.051668e+07\n",
"Adj Close 5.549800e+02\n",
"dtype: float64"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Open\n",
"\t\t 569.16\n",
"\t\t 584.9\n",
"\t\t 601.83\n",
"\t\t 548.17\n",
"\t\t 458.41\n",
"\t\t 409.4\n",
"High\n",
"\t\t 590.0\n",
"\t\t 596.76\n",
"\t\t 644.0\n",
"\t\t 621.45\n",
"\t\t 547.61\n",
"\t\t 458.24\n",
"Low\n",
"\t\t 548.5\n",
"\t\t 522.18\n",
"\t\t 555.0\n",
"\t\t 516.22\n",
"\t\t 453.98\n",
"\t\t 409.0\n",
"Close\n",
"\t\t 584.0\n",
"\t\t 577.73\n",
"\t\t 583.98\n",
"\t\t 599.55\n",
"\t\t 542.44\n",
"\t\t 456.48\n",
"Volume\n",
"\t\t 14077000\n",
"\t\t 18827900\n",
"\t\t 28759100\n",
"\t\t 26486000\n",
"\t\t 22001000\n",
"\t\t 12949100\n",
"Adj Close\n",
"\t\t 581.5\n",
"\t\t 575.26\n",
"\t\t 581.48\n",
"\t\t 596.99\n",
"\t\t 540.12\n",
"\t\t 454.53\n"
]
}
],
"source": [
"# on peut itérer sur le dataframe par colonne, puis par ligne\n",
"for one in df:\n",
" print(one)\n",
" for x in df[one]:\n",
" print(\"\\t\"*2,x)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = df.boxplot(column=['High','Open','Close'])"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2012-06-01 569.16\n",
"2012-05-01 584.90\n",
"2012-04-02 601.83\n",
"2012-03-01 548.17\n",
"2012-02-01 458.41\n",
"2012-01-03 409.40\n",
"Name: Open, dtype: float64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Open\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Faire une figure croisant deux colonnes"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAGj9JREFUeJzt3X+YXmV95/H3Z8g4RBIkJgOlmcSgBFlpw4hD0Gbh4kcXC9KADdRQEQS6KS51cd3dRNxd28u2e2lsF4qstCn+wIqASwhhWaAgGMHWqBMIIRrQAFGGpCSMCWQkGSc83/3j3ANPJmdmnoQ5z3lm5vO6rrnm/LjPc74zcPKZc59z7qOIwMzMbKCmsgswM7PG5IAwM7NcDggzM8vlgDAzs1wOCDMzy+WAMDOzXA4IMzPL5YAwM7NcDggzM8s1oewC3ohp06bFrFmzyi7DzGxUWbNmzYsR0Tpcu1EdELNmzaKzs7PsMszMRhVJP6+lnbuYzMwslwPCzMxyOSDMzCyXA8LMzHI5IMzMLJcDwsxslOnu6eXx53bQ3dNb6H4Kvc1V0mHAjcBvAQFcBjwF3AbMAjYBfxgR2yUJ+FvgbOAV4KMR8WiR9ZmZjTYr1z7PkuXraG5qoq9SYemCOcxvn17Ivoo+g/hb4L6IOBY4HtgAfAp4MCJmAw+meYCzgNnpaxFwQ8G1mZmNKt09vSxZvo7dfRV29u5hd1+FxcvXFXYmUVhASDoUOAX4MkBE/DoidgDnAjelZjcB56Xpc4GvR2Y1cJikI4uqz8xstOnavovmpr3/2W5uaqJr+65C9lfkGcTbgW3AVyU9JulGSYcAR0TEFoD0/fDUfjrwXNX2XWmZmZkBbVMm0lep7LWsr1KhbcrEQvZXZEBMAE4AboiIdwO/4vXupDzKWRb7NJIWSeqU1Llt27aRqdTMbBSYOqmFpQvmcHBzE5NbJnBwcxNLF8xh6qSWQvZX5EXqLqArIn6Q5m8nC4gXJB0ZEVtSF9LWqvYzqrZvAzYP/NCIWAYsA+jo6NgnQMzMxrL57dOZd/Q0urbvom3KxMLCAQo8g4iIfwWek/TOtOgM4CfAXcAladklwMo0fRdwsTLvBV7q74oyM7PXTZ3UwvEzDis0HKD40Vw/Dtws6U3AM8ClZKH0LUmXA78ALkht7yG7xXUj2W2ulxZcm5mZDaHQgIiItUBHzqozctoGcGWR9ZiZWe38JLWZmeVyQJiZWS4HhJmZ5XJAmJlZLgeEmZnlckCYmVkuB4SZmeVyQJiZWS4HhI1a9Xqrltl4VfRQG2aFqOdbtczGK59B2KhT77dqmY1XDggbder9Vi2z8coBYaNOvd+qZTZeOSBs1Kn3W7XMxitfpLZRqZ5v1TIbrxwQNmpNndTiYDArkLuYzMwsV6FnEJI2ATuBV4E9EdEh6Tag/z3VhwE7IqJd0ixgA/BUWrc6Iq4osj4zMxtcPbqYTouIF/tnIuJD/dOS/gZ4qart0xHRXoeazMxsGKVdg5Ak4A+B08uqwczMBlf0NYgA7pe0RtKiAetOBl6IiJ9VLTtK0mOSvivp5IJrMzOzIRR9BjEvIjZLOhx4QNKTEfFwWnchcEtV2y3AzIjolvQe4E5Jx0XEy9UfmIJmEcDMmTMLLt/MbPwq9AwiIjan71uBFcBcAEkTgD8Abqtq2xsR3Wl6DfA0cEzOZy6LiI6I6GhtbS2yfDOzca2wgJB0iKTJ/dPAmcD6tPp3gScjoquqfaukg9L024HZwDNF1WdmZkMrsovpCGBFdi2aCcA3I+K+tG4he3cvAZwCfFbSHrLbYq+IiF8WWN+I6+7p9ZO9ZjZmFBYQEfEMcPwg6z6as2w5sLyoeorm9xOY2VjjJ6lHgN9PYGZjkQNiBPj9BGY2FjkgRoDfT2BmY5EDYgT4/QRmNhZ5uO8R4vcTmNlY44AYQX4/gZmNJe5iMjOzXA4IMzPL5YAwM7NcDggzM8vlgDAzs1wOCDMzy+WAMDOzXA4IMzPL5YAwM7NcDggzM8vlgDAzs1yFBoSkTZKekLRWUmda9ueSnk/L1ko6u6r91ZI2SnpK0vuLrM3MzIZWj8H6TouIFwcsuyYi/rp6gaR3kb2r+jjgN4FvSzomIl6tQ41mZjZAI3UxnQvcGhG9EfEssBGYW3JNZjYOdPf08vhzO/ya4AGKPoMI4H5JAfx9RCxLy/9U0sVAJ/CfI2I7MB1YXbVtV1q2F0mLgEUAM2fOLLJ2MxsHVq59niXL19Hc1ERfpcLSBXOY377PPz3jUtFnEPMi4gTgLOBKSacANwDvANqBLcDfpLbK2T72WRCxLCI6IqKjtbW1oLLNbDzo7ullyfJ17O6rsLN3D7v7Kixevs5nEkmhARERm9P3rcAKYG5EvBARr0ZEBfgHXu9G6gJmVG3eBmwusj4zG9+6tu+iuWnvfwabm5ro2r6rpIoaS2EBIekQSZP7p4EzgfWSjqxq9kFgfZq+C1goqUXSUcBs4IdF1Wdm1jZlIn2Vyl7L+ioV2qZMLKmixlLkNYgjgBWS+vfzzYi4T9I/Smon6z7aBPwJQET8WNK3gJ8Ae4ArfQeTmRVp6qQWli6Yw+IB1yD86uCMIvbp5h81Ojo6orOzs+wyzGyU6+7ppWv7LtqmTBwX4SBpTUR0DNeuHs9BmJk1tKmTWsZFMOyvRnoOwszMGogDwszMcjkgzMwslwPCzMxyOSDMzCyXA8LMzHI5IMzMLJcDwszMcjkgzMwslwPCzMxyOSDMzCyXA8LMzHI5IMzMLJcDwszMcjkgzMwslwPCzMxyFfrCIEmbgJ3Aq8CeiOiQ9AXg94FfA08Dl0bEDkmzgA3AU2nz1RFxRZH1mZnZ4OrxRrnTIuLFqvkHgKsjYo+kzwNXA0vSuqcjor0ONZmZ2TDq3sUUEfdHxJ40uxpoq3cNZmY2vKIDIoD7Ja2RtChn/WXAvVXzR0l6TNJ3JZ2c94GSFknqlNS5bdu2Imo2MzOK72KaFxGbJR0OPCDpyYh4GEDSfwP2ADentluAmRHRLek9wJ2SjouIl6s/MCKWAcsAOjo6ouD6zczGrULPICJic/q+FVgBzAWQdAlwDvDhiIjUpjciutP0GrIL2McUWZ+ZmQ2usICQdIikyf3TwJnAekm/R3ZRen5EvFLVvlXSQWn67cBs4Jmi6jMzs6EV2cV0BLBCUv9+vhkR90naCLSQdTnB67ezngJ8VtIesttir4iIXxZYn5mZDaGwgIiIZ4Djc5YfPUj75cDyouoxM7P94yepzcwslwPCzMxyOSDMzCyXA8LMzHLVdJFaUivw74FZ1dtExGXFlGVmZmWr9S6mlcAjwLfJbkE1M7MxrtaAeHNELBm+mZmZjRW1XoO4W9LZhVZiZmYNpdaAuIosJHZLelnSTkkvD7uVmZmNWjV1MUXE5KILMTOzxlLTGYQyF0n6H2l+hqS5xZZmZmZlqrWL6UvA+4A/SvM9wP8upCIzM2sItd7FdFJEnCDpMYCI2C7pTQXWZWZmJav1DKIvvash4LUH5yqFVWVmZqWrNSCuI3sj3BGS/gr4HvA/C6vKzMxKV+tdTDdLWgOckRadFxEbiivLzMzKtj+D9b0ZOChtM7GWDSRtkvSEpLWSOtOyt0p6QNLP0vcpabkkXSdpo6R1kk7Y3x/GzMxGTq23uX4GuAl4KzAN+Kqk/17jPk6LiPaI6EjznwIejIjZwINpHuAssvdQzwYWATfU+PlmZlaAWu9iuhB4d0TsBpD0OeBR4C8PYJ/nAqem6ZuAVcCStPzrERHAakmHSToyIrYcwD7MzOwNqrWLaRNwcNV8C/B0DdsFcL+kNZIWpWVH9P+jn74fnpZPB56r2rYrLTMzsxLUegbRC/xY0gNp/neB70m6DiAi/uMg282LiM2SDgcekPTkEPtQzrLYp1EWNIsAZs6cWWP5Zma2v2oNiH8iu15QIXsfxHdq2SgiNqfvWyWtAOYCL/R3HUk6EtiamncBM6o2bwM253zmMmAZQEdHxz4BYmZmI2PIgJA0gex5h8uAn5N1Sc0Avgp8OiL6htj2EKApInam6TOBzwJ3AZcAn0vfV6ZN7gL+VNKtwEnAS77+YGZWnuHOIL4ATAaOioidAJIOBf46rfvEENseAayQ1L+fb0bEfZJ+BHxL0uXAL4ALUvt7gLOBjcArwKUH9BOZmdmIUHbT0CArpZ8Bx8SARmnYjSfTraql6ejoiM7OzjJLMDMbdSStqXr0YFDD3cUUA8MhLXyVnAvIZmY2dgwXED+RdPHAhZIuAoa6I8nMzEa54a5BXAncIekyYA3ZWcOJZENtfLDg2szMrERDBkREPA+cJOl04DiyZxXujYgH61GcmZmVp9bRXB8CHiq4FjMzayD7M5qrmZmNIw4IMzPL5YAwM7NcDggzM8vlgDAzs1wOCDMzy+WAMDOzXA4IMzPL5YAwM7NcDggzM8vlgDAzs1wOCDMzy1V4QEg6SNJjku5O849IWpu+Nku6My0/VdJLVes+U3RtZmY2uJpGc32DrgI2AIcCRMTJ/SskLQdWVrV9JCLOqUNNZmY2jELPICS1AR8AbsxZNxk4HbizyBrMzOzAFN3FdC2wGKjkrPsg8GBEvFy17H2SHpd0r6TjCq7NzMyGUFhASDoH2BoRawZpciFwS9X8o8DbIuJ44IsMcmYhaZGkTkmd27ZtG9GazczsdUWeQcwD5kvaBNwKnC7pGwCSpgJzgf/X3zgiXo6InjR9D9AsadrAD42IZRHREREdra2tBZZvZja+FRYQEXF1RLRFxCxgIfBQRFyUVl8A3B0Ru/vbS/oNSUrTc1Nt3UXVZ2ZmQ6vHXUx5FgKfG7DsfOBjkvYAu4CFERF1r8zMzIA6BURErAJWVc2fmtPmeuD6etRjZmbD85PUZmaWywFhZma5HBBmZpbLAWFmZrkcEGZmlssBYWZmuRwQZmaWywFhZma5HBBmZpbLAWE2inT39PL4czvo7uktuxQbB8oai8nM9tPKtc+zZPk6mpua6KtUWLpgDvPbp5ddlo1hPoMwGwW6e3pZsnwdu/sq7Ozdw+6+CouXr/OZhBXKAWE2CnRt30Vz096Ha3NTE13bd5VUkY0HDgizUaBtykT6Knu/ubevUqFtysSSKrLxwAFhNgpMndTC0gVzOLi5icktEzi4uYmlC+YwdVJL2aXZGOaL1GajxPz26cw7ehpd23fRNmWiw8EK54AwG0WmTmpxMFjdFN7FJOkgSY9JujvNf03Ss5LWpq/2tFySrpO0UdI6SScUXZuZmQ2uHmcQVwEbgEOrlv3XiLh9QLuzgNnp6yTghvTdzMxKUOgZhKQ24APAjTU0Pxf4emRWA4dJOrLI+szMbHBFdzFdCywGKgOW/1XqRrpGUn+H6nTguao2XWnZXiQtktQpqXPbtm2FFG1mZgUGhKRzgK0RsWbAqquBY4ETgbcCS/o3yfmY2GdBxLKI6IiIjtbW1pEs2czMqhR5BjEPmC9pE3ArcLqkb0TEltSN1At8FZib2ncBM6q2bwM2F1ifmZkNobCAiIirI6ItImYBC4GHIuKi/usKkgScB6xPm9wFXJzuZnov8FJEbCmqPjMzG1oZz0HcLKmVrEtpLXBFWn4PcDawEXgFuLSE2szMLKlLQETEKmBVmj59kDYBXFmPeszMbHgei8nMzHI5IMzMLJcDwszMcjkgzMwslwPCzMxyOSDMzCyXA8LMzHI5IMzMLJcDwszMcjkgzMwslwPCzMxyOSDMzCyXA8LMzHI5IMzMLJcDwszMcjkgzMwsV+EBIekgSY9JujvN3yzpKUnrJX1FUnNafqqklyStTV+fKbo2MzMbXD3OIK4CNlTN3wwcC/w2MBH446p1j0REe/r6bB1qMzOzQRQaEJLagA8AN/Yvi4h7IgF+CLQVWYOZmR2Yos8grgUWA5WBK1LX0keA+6oWv0/S45LulXRcwbWZmdkQCgsISecAWyNizSBNvgQ8HBGPpPlHgbdFxPHAF4E7B/ncRZI6JXVu27ZtxOs2M7NMkWcQ84D5kjYBtwKnS/oGgKQ/A1qBT/Y3joiXI6InTd8DNEuaNvBDI2JZRHREREdra2uB5ZuZjW+FBUREXB0RbRExC1gIPBQRF0n6Y+D9wIUR8VrXk6TfkKQ0PTfV1l1UfWZmNrQJJezz74CfA99PeXBHumPpfOBjkvYAu4CF6UK2mZmVoC4BERGrgFVpOnefEXE9cH096jEzs+H5SWozM8vlgDAzs1wOCDMzy+WAMDOzXA4IMzPL5YAwM7NcDggzM8vlgDAzs1zjNiC6e3p5/LkddPf0ll2KmVlDKmOojdKtXPs8S5avo7mpib5KhaUL5jC/fXrZZZmZNZRxdwbR3dPLkuXr2N1XYWfvHnb3VVi8fJ3PJMzMBhh3AdG1fRfNTXv/2M1NTXRt31VSRWZmjWncBUTblIn0VfZ+wV1fpULblIklVWRm1pjGXUBMndTC0gVzOLi5icktEzi4uYmlC+YwdVJL2aWZmTWUcXmRen77dOYdPY2u7btomzLR4WBmlmNcBgRkZxIOBjOzwY27LiYzM6tN4QEh6SBJj0m6O80fJekHkn4m6TZJb0rLW9L8xrR+VtG1mZnZ4OpxBnEVsKFq/vPANRExG9gOXJ6WXw5sj4ijgWtSOzMzK0mhASGpDfgAcGOaF3A6cHtqchNwXpo+N82T1p+R2puZWQmKPoO4FlgM9D94MBXYERF70nwX0D/GxXTgOYC0/qXU3szMSlDYXUySzgG2RsQaSaf2L85pGjWsq/7cRcCiNNsj6ak3WusImga8WHYRORq1Lmjc2hq1Lmjc2hq1Lmjc2sqq6221NCryNtd5wHxJZwMHA4eSnVEcJmlCOktoAzan9l3ADKBL0gTgLcAvB35oRCwDlhVY9wGT1BkRHWXXMVCj1gWNW1uj1gWNW1uj1gWNW1uj1tWvsC6miLg6ItoiYhawEHgoIj4MfAc4PzW7BFiZpu9K86T1D0XEPmcQZmZWH2U8B7EE+KSkjWTXGL6cln8ZmJqWfxL4VAm1mZlZUpcnqSNiFbAqTT8DzM1psxu4oB71FKghu75o3LqgcWtr1LqgcWtr1LqgcWtr1LoAkHtxzMwsj4faMDOzXA6I/STpK5K2Slo/TLsTJb0q6fyh2tWzLkmnSlor6ceSvluPumqpTdJbJP1fSY+n2i6tU10zJH1H0oa036ty2kjSdWkImHWSTmig2j6calon6V8kHd8IdVW1rfcxUFNt9T4OavxvWcoxMKyI8Nd+fAGnACcA64docxDwEHAPcH4j1AUcBvwEmJnmD2+U3xnwaeDzabqV7PbmN9WhriOBE9L0ZOCnwLsGtDkbuJfsOZ33Aj+o0++sltp+B5iSps+qR2211JXWlXEM1PI7q/txUGNdpRwDw335DGI/RcTD5DyfMcDHgeXA1uIrytRQ1x8Bd0TEL1L7RqotgMlpaJVJqe2eIdqPVF1bIuLRNL2TbMyw6QOanQt8PTKryZ7jObIRaouIf4mI7Wl2NdlzRaXXlZRxDNRSW92PgxrrKuUYGI4DYoRJmg58EPi7smsZ4BhgiqRVktZIurjsgqpcD/wbsocmnwCuiojK0JuMrDR68LuBHwxY9doQMEn18DB1MURt1S4nO9Opm8HqaoRjYIjfWanHwRB1lX4M5Bm3Lwwq0LXAkoh4tcHGGpwAvAc4A5gIfF/S6oj4abllAfB+YC3ZQI7vAB6Q9EhEvFyPnUuaRPbX7idy9lnTEDBFGaa2/jankQXEv22Quko9BoaprbTjYJi6Sj0GBuOAGHkdwK3pwJgGnC1pT0TcWW5ZdAEvRsSvgF9Jehg4nqw/tGyXAp+LrAN2o6RngWOBHxa9Y0nNZAftzRFxR06T/iFg+lUPD1N2bUiaQzZa8lkR0d0gdZV2DNT437Pux0ENdZV2DAzFXUwjLCKOiohZkQ0xcjvwHxogHCAb0uRkSRMkvRk4ib3f01GmX5D9RYekI4B3As8UvdPU3/tlYENE/K9Bmt0FXJzuZnov8FJEbGmE2iTNBO4APlKvM8Fa6irrGKjxv2fdj4Ma6yrlGBiOzyD2k6RbgFOBaZK6gD8DmgEiosw+1yHriogNku4D1pENv35jRAx5q269agP+AviapCfIunSWREQ9RricB3wEeELS2rTs08DMqtruIbuTaSPwCtlfevVQS22fIRuu5kvpr/U9UfzAb7XUVZZhayvpOKjld1bWMTAkP0ltZma53MVkZma5HBBmZpbLAWFmZrkcEGZmlssBYWY2SqjGwUJT22vSoIRrJf1U0o793Z8DwqxKGoLh/QOWfULSlwZpP6uWg9VshHwN+L1aGkbEf4qI9ohoB75I9szMfnFAmO3tFrJ3qFdbmJablSpv4EtJ75B0Xxpb6hFJx+ZseiEH8P+wA8Jsb7cD50hqgdcGV/tN4HuSviBpvaQnJH1o4IaSPirp+qr5uyWdmqZ7JH0+HcTfljQ3na08I2l+anNQ2sePlL3j4U+K/3FtDFgGfDwi3gP8F2Cvs11JbwOOIht+fb/4SWqzKhHRLemHZKfxK8nOHm4D/gBoJxu3ZxrwozSOT60OAVZFxBJJK4C/BP4d8C7gJrIhPS4nG8rjxBRQ/yzp/oh4doR+PBtj0gCAvwP8n6qBEVsGNFsI3B4Rr+7v5zsgzPbV383UHxCXkQ2VcEs6yF5Q9iayE8mGbKjFr4H70vQTQG9E9KWhFWal5WcCc/T6G9jeAswGHBA2mCZgR7rOMJiFwJUH+uFmtrc7gTOUvV50YnrZSy3jVu9h72Pq4Krpvnh9XJsK0AuQxvzv/0NNZF0F7enrqIi4/438IDa2peHAn5V0Abz2itzXXj0r6Z3AFOD7B/L5DgizASKiB1gFfIXXL+w9DHwoXSdoJXuN6sChmDcB7ZKaJM0A5u7nrv8J+FgaGhpJx0g65MB+ChuL0sCX3wfeKalL0uXAh4HLJT0O/JjsLYj9LgRujQMcdM9dTGb5biG7LbD/jqYVwPuAx8leGLQ4Iv41XcTu989k3UFPAOuBR/dznzeSdTc9moaI3gacd2Dl21gUERcOsir31teI+PM3sj+P5mpmZrncxWRmZrkcEGZmlssBYWZmuRwQZmaWywFhZma5HBBmZpbLAWFmZrkcEGZmluv/A1z93p8eI1K6AAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.plot(\"Volume\",\"Open\",kind=\"scatter\")"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"scrolled": true
},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'randn'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mscatter_matrix\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mrandom\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrandn\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mdf_random\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrandn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'a'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'b'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'c'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'd'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mscatter_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_random\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdiagonal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'kde'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'randn'"
]
}
],
"source": [
"from pandas.plotting import scatter_matrix\n",
"\n",
"df_random = pds.DataFrame(randn(1000, 4), columns=['a', 'b', 'c', 'd'])\n",
"a=scatter_matrix(df_random, alpha=0.1, figsize= (6,6),diagonal='kde')"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['2012-06-01', '2012-05-01', '2012-04-02', '2012-03-01', '2012-02-01',\n",
" '2012-01-03'],\n",
" dtype='object', name='Date')"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.index"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut aussi afficher en fonction des dates, mais ici l'index n'a pas été directement compris comme une date"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# attention à l'utilisation d'un index non numérique !\n",
"df[\"Volume\"].plot(figsize=(10,10))"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2012-06-01', '2012-05-01', '2012-04-02', '2012-03-01',\n",
" '2012-02-01', '2012-01-03'],\n",
" dtype='datetime64[ns]', name='Date', freq=None)"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# traduit l'index explicitement en type date\n",
"df.index = pds.to_datetime(df.index)\n",
"df[\"Volume\"].plot()\n",
"df.index"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Ajouter des données / opérations vectorielles"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" Spread \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-06-01 \n",
" 569.16 \n",
" 590.00 \n",
" 548.50 \n",
" 584.00 \n",
" 14077000 \n",
" 581.50 \n",
" 41.50 \n",
" \n",
" \n",
" 2012-05-01 \n",
" 584.90 \n",
" 596.76 \n",
" 522.18 \n",
" 577.73 \n",
" 18827900 \n",
" 575.26 \n",
" 74.58 \n",
" \n",
" \n",
" 2012-04-02 \n",
" 601.83 \n",
" 644.00 \n",
" 555.00 \n",
" 583.98 \n",
" 28759100 \n",
" 581.48 \n",
" 89.00 \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" 105.23 \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" 93.63 \n",
" \n",
" \n",
" 2012-01-03 \n",
" 409.40 \n",
" 458.24 \n",
" 409.00 \n",
" 456.48 \n",
" 12949100 \n",
" 454.53 \n",
" 49.24 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close Spread\n",
"Date \n",
"2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50 41.50\n",
"2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26 74.58\n",
"2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48 89.00\n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99 105.23\n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12 93.63\n",
"2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53 49.24"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Spread\"] = df[\"High\"] - df[\"Low\"]\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Open 5.286450e+02\n",
"High 5.763433e+02\n",
"Low 5.008133e+02\n",
"Close 5.573633e+02\n",
"Volume 2.051668e+07\n",
"Adj Close 5.549800e+02\n",
"Spread 7.553000e+01\n",
"dtype: float64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Manipulation des données: filtrage"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On peut écrire des conditions sur les colonnes: cela reprend le principe des masques binaires sur les vecteurs numpy"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2012-06-01 False\n",
"2012-05-01 False\n",
"2012-04-02 True\n",
"2012-03-01 True\n",
"2012-02-01 True\n",
"2012-01-03 False\n",
"Name: Volume, dtype: bool"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Volume\"]>20000000"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" Spread \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-04-02 \n",
" 601.83 \n",
" 644.00 \n",
" 555.00 \n",
" 583.98 \n",
" 28759100 \n",
" 581.48 \n",
" 89.00 \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" 105.23 \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" 93.63 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close Spread\n",
"Date \n",
"2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48 89.00\n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99 105.23\n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12 93.63"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# et se servir du résultat pour filtrer les lignes\n",
"df[df[\"Volume\"]>20000000]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close\n",
"Date \n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# on peut utiliser des opérateurs pour combiner les séries de données\n",
"# & = \"ET\"\n",
"df2 = df[(df[\"Volume\"]>20000000) & (df[\"Open\"]<600)]\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-06-01 \n",
" 569.16 \n",
" 590.00 \n",
" 548.50 \n",
" 584.00 \n",
" 14077000 \n",
" 581.50 \n",
" \n",
" \n",
" 2012-04-02 \n",
" 601.83 \n",
" 644.00 \n",
" 555.00 \n",
" 583.98 \n",
" 28759100 \n",
" 581.48 \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" \n",
" \n",
" 2012-01-03 \n",
" 409.40 \n",
" 458.24 \n",
" 409.00 \n",
" 456.48 \n",
" 12949100 \n",
" 454.53 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close\n",
"Date \n",
"2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50\n",
"2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48\n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99\n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12\n",
"2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# on peut utiliser des opérateurs pour combiner les séries de données\n",
"# | = \"OU\"\n",
"df2 = df[(df[\"Volume\"]>20000000) | (df[\"Volume\"]<15000000)]\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2012-06-01 14077000\n",
"2012-05-01 18827900\n",
"2012-04-02 28759100\n",
"2012-03-01 26486000\n",
"2012-02-01 22001000\n",
"2012-01-03 12949100\n",
"Name: Volume, dtype: int64"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# les noms de colonnes sont en fait des attributs de la table\n",
"df.Volume"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2012-06-01 (0, 20000000]\n",
"2012-05-01 (0, 20000000]\n",
"2012-04-02 (20000000, 40000000]\n",
"2012-03-01 (20000000, 40000000]\n",
"2012-02-01 (20000000, 40000000]\n",
"2012-01-03 (0, 20000000]\n",
"Name: Volume, dtype: category\n",
"Categories (2, interval[int64]): [(0, 20000000] < (20000000, 40000000]]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"volume_cats = [0,20000000,40000000]\n",
"#volume_cats = np.linspace(df.Volume.min()-1,df.Volume.max()+1,11)\n",
"by_vc = pds.cut(df.Volume,volume_cats)\n",
"by_vc"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Volume \n",
" Adj Close \n",
" Spread \n",
" volume group \n",
" \n",
" \n",
" Date \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 2012-06-01 \n",
" 569.16 \n",
" 590.00 \n",
" 548.50 \n",
" 584.00 \n",
" 14077000 \n",
" 581.50 \n",
" 41.50 \n",
" (0, 20000000] \n",
" \n",
" \n",
" 2012-05-01 \n",
" 584.90 \n",
" 596.76 \n",
" 522.18 \n",
" 577.73 \n",
" 18827900 \n",
" 575.26 \n",
" 74.58 \n",
" (0, 20000000] \n",
" \n",
" \n",
" 2012-04-02 \n",
" 601.83 \n",
" 644.00 \n",
" 555.00 \n",
" 583.98 \n",
" 28759100 \n",
" 581.48 \n",
" 89.00 \n",
" (20000000, 40000000] \n",
" \n",
" \n",
" 2012-03-01 \n",
" 548.17 \n",
" 621.45 \n",
" 516.22 \n",
" 599.55 \n",
" 26486000 \n",
" 596.99 \n",
" 105.23 \n",
" (20000000, 40000000] \n",
" \n",
" \n",
" 2012-02-01 \n",
" 458.41 \n",
" 547.61 \n",
" 453.98 \n",
" 542.44 \n",
" 22001000 \n",
" 540.12 \n",
" 93.63 \n",
" (20000000, 40000000] \n",
" \n",
" \n",
" 2012-01-03 \n",
" 409.40 \n",
" 458.24 \n",
" 409.00 \n",
" 456.48 \n",
" 12949100 \n",
" 454.53 \n",
" 49.24 \n",
" (0, 20000000] \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Open High Low Close Volume Adj Close Spread \\\n",
"Date \n",
"2012-06-01 569.16 590.00 548.50 584.00 14077000 581.50 41.50 \n",
"2012-05-01 584.90 596.76 522.18 577.73 18827900 575.26 74.58 \n",
"2012-04-02 601.83 644.00 555.00 583.98 28759100 581.48 89.00 \n",
"2012-03-01 548.17 621.45 516.22 599.55 26486000 596.99 105.23 \n",
"2012-02-01 458.41 547.61 453.98 542.44 22001000 540.12 93.63 \n",
"2012-01-03 409.40 458.24 409.00 456.48 12949100 454.53 49.24 \n",
"\n",
" volume group \n",
"Date \n",
"2012-06-01 (0, 20000000] \n",
"2012-05-01 (0, 20000000] \n",
"2012-04-02 (20000000, 40000000] \n",
"2012-03-01 (20000000, 40000000] \n",
"2012-02-01 (20000000, 40000000] \n",
"2012-01-03 (0, 20000000] "
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"volume group\"] = by_vc \n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Données catégoriques (non numériques)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# prenons un autre jeu de données\n",
"vote=pds.read_csv(\"vote.csv\",index_col=\"id\")"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" handicapped-infants \n",
" water-project-cost-sharing \n",
" adoption-of-the-budget-resolution \n",
" physician-fee-freeze \n",
" el-salvador-aid \n",
" religious-groups-in-schools \n",
" anti-satellite-test-ban \n",
" aid-to-nicaraguan-contras \n",
" mx-missile \n",
" immigration \n",
" synfuels-corporation-cutback \n",
" education-spending \n",
" superfund-right-to-sue \n",
" crime \n",
" duty-free-exports \n",
" export-administration-act-south-africa \n",
" Class \n",
" \n",
" \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 2 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 3 \n",
" ? \n",
" y \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" democrat \n",
" \n",
" \n",
" 4 \n",
" n \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" n \n",
" n \n",
" y \n",
" democrat \n",
" \n",
" \n",
" 5 \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" y \n",
" y \n",
" democrat \n",
" \n",
" \n",
" 6 \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" democrat \n",
" \n",
" \n",
" 7 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" ? \n",
" y \n",
" y \n",
" y \n",
" democrat \n",
" \n",
" \n",
" 8 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" ? \n",
" y \n",
" republican \n",
" \n",
" \n",
" 9 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 10 \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" ? \n",
" ? \n",
" democrat \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" handicapped-infants water-project-cost-sharing \\\n",
"id \n",
"1 n y \n",
"2 n y \n",
"3 ? y \n",
"4 n y \n",
"5 y y \n",
"6 n y \n",
"7 n y \n",
"8 n y \n",
"9 n y \n",
"10 y y \n",
"\n",
" adoption-of-the-budget-resolution physician-fee-freeze el-salvador-aid \\\n",
"id \n",
"1 n y y \n",
"2 n y y \n",
"3 y ? y \n",
"4 y n ? \n",
"5 y n y \n",
"6 y n y \n",
"7 n y y \n",
"8 n y y \n",
"9 n y y \n",
"10 y n n \n",
"\n",
" religious-groups-in-schools anti-satellite-test-ban \\\n",
"id \n",
"1 y n \n",
"2 y n \n",
"3 y n \n",
"4 y n \n",
"5 y n \n",
"6 y n \n",
"7 y n \n",
"8 y n \n",
"9 y n \n",
"10 n y \n",
"\n",
" aid-to-nicaraguan-contras mx-missile immigration \\\n",
"id \n",
"1 n n y \n",
"2 n n n \n",
"3 n n n \n",
"4 n n n \n",
"5 n n n \n",
"6 n n n \n",
"7 n n n \n",
"8 n n n \n",
"9 n n n \n",
"10 y y n \n",
"\n",
" synfuels-corporation-cutback education-spending superfund-right-to-sue \\\n",
"id \n",
"1 ? y y \n",
"2 n y y \n",
"3 y n y \n",
"4 y n y \n",
"5 y ? y \n",
"6 n n y \n",
"7 n n ? \n",
"8 n n y \n",
"9 n y y \n",
"10 n n n \n",
"\n",
" crime duty-free-exports export-administration-act-south-africa Class \n",
"id \n",
"1 y n y republican \n",
"2 y n ? republican \n",
"3 y n n democrat \n",
"4 n n y democrat \n",
"5 y y y democrat \n",
"6 y y y democrat \n",
"7 y y y democrat \n",
"8 y ? y republican \n",
"9 y n y republican \n",
"10 n ? ? democrat "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vote.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" handicapped-infants \n",
" water-project-cost-sharing \n",
" adoption-of-the-budget-resolution \n",
" physician-fee-freeze \n",
" el-salvador-aid \n",
" religious-groups-in-schools \n",
" anti-satellite-test-ban \n",
" aid-to-nicaraguan-contras \n",
" mx-missile \n",
" immigration \n",
" synfuels-corporation-cutback \n",
" education-spending \n",
" superfund-right-to-sue \n",
" crime \n",
" duty-free-exports \n",
" export-administration-act-south-africa \n",
" Class \n",
" \n",
" \n",
" id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 1 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 2 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 8 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" ? \n",
" y \n",
" republican \n",
" \n",
" \n",
" 9 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 11 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" ? \n",
" ? \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 12 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" ? \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 15 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" ? \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 16 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" ? \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 19 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" ? \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 29 \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 31 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 34 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 36 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 37 \n",
" y \n",
" ? \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 38 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 39 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 50 \n",
" n \n",
" ? \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 52 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 54 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 56 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 57 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 58 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 59 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 60 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 62 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 66 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 67 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 68 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 72 \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 74 \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 357 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 358 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 360 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 364 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" n \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 365 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 370 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 375 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 378 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" ? \n",
" ? \n",
" n \n",
" n \n",
" ? \n",
" ? \n",
" y \n",
" ? \n",
" ? \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 379 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 380 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 393 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 394 \n",
" ? \n",
" ? \n",
" ? \n",
" ? \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 400 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 401 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" ? \n",
" n \n",
" n \n",
" ? \n",
" ? \n",
" ? \n",
" y \n",
" n \n",
" ? \n",
" republican \n",
" \n",
" \n",
" 402 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 403 \n",
" ? \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" n \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 404 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" ? \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 405 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 406 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 410 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" republican \n",
" \n",
" \n",
" 411 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 413 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 414 \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" ? \n",
" ? \n",
" ? \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 417 \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 421 \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 428 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 431 \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" y \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 433 \n",
" n \n",
" ? \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 434 \n",
" n \n",
" n \n",
" n \n",
" y \n",
" y \n",
" y \n",
" ? \n",
" ? \n",
" ? \n",
" ? \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" y \n",
" republican \n",
" \n",
" \n",
" 435 \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" n \n",
" n \n",
" n \n",
" y \n",
" n \n",
" y \n",
" y \n",
" y \n",
" ? \n",
" n \n",
" republican \n",
" \n",
" \n",
"
\n",
"
168 rows × 17 columns
\n",
"
"
],
"text/plain": [
" handicapped-infants water-project-cost-sharing \\\n",
"id \n",
"1 n y \n",
"2 n y \n",
"8 n y \n",
"9 n y \n",
"11 n y \n",
"12 n y \n",
"15 n y \n",
"16 n y \n",
"19 n y \n",
"29 y n \n",
"31 n y \n",
"34 n y \n",
"36 n y \n",
"37 y ? \n",
"38 y y \n",
"39 n y \n",
"50 n ? \n",
"52 n y \n",
"54 y y \n",
"56 n y \n",
"57 n y \n",
"58 n y \n",
"59 n y \n",
"60 n y \n",
"62 n y \n",
"66 y y \n",
"67 n y \n",
"68 n y \n",
"72 y y \n",
"74 y n \n",
".. ... ... \n",
"357 n n \n",
"358 n n \n",
"360 n n \n",
"364 y y \n",
"365 y y \n",
"370 n y \n",
"375 n y \n",
"378 n y \n",
"379 n n \n",
"380 n n \n",
"393 y y \n",
"394 ? ? \n",
"400 n y \n",
"401 n y \n",
"402 n y \n",
"403 ? n \n",
"404 n y \n",
"405 y y \n",
"406 n n \n",
"410 n n \n",
"411 n n \n",
"413 n n \n",
"414 y y \n",
"417 y y \n",
"421 y y \n",
"428 n n \n",
"431 n n \n",
"433 n ? \n",
"434 n n \n",
"435 n y \n",
"\n",
" adoption-of-the-budget-resolution physician-fee-freeze el-salvador-aid \\\n",
"id \n",
"1 n y y \n",
"2 n y y \n",
"8 n y y \n",
"9 n y y \n",
"11 n y y \n",
"12 n y y \n",
"15 n y y \n",
"16 n y y \n",
"19 n y y \n",
"29 n y y \n",
"31 n y y \n",
"34 n y y \n",
"36 n y y \n",
"37 n y y \n",
"38 n y y \n",
"39 n y y \n",
"50 n y y \n",
"52 n y y \n",
"54 n y y \n",
"56 n y y \n",
"57 n y y \n",
"58 n y y \n",
"59 n y y \n",
"60 n y y \n",
"62 n y y \n",
"66 n y y \n",
"67 n y y \n",
"68 n y y \n",
"72 y y n \n",
"74 y y y \n",
".. ... ... ... \n",
"357 n y y \n",
"358 n y y \n",
"360 n y y \n",
"364 n y y \n",
"365 n y y \n",
"370 n y y \n",
"375 n y y \n",
"378 n y y \n",
"379 n y y \n",
"380 n y y \n",
"393 n y y \n",
"394 ? ? n \n",
"400 n y ? \n",
"401 n y y \n",
"402 n y y \n",
"403 y y n \n",
"404 n y y \n",
"405 n y y \n",
"406 n y y \n",
"410 n y y \n",
"411 n y y \n",
"413 n y y \n",
"414 y y y \n",
"417 n y y \n",
"421 y y y \n",
"428 n y y \n",
"431 y y y \n",
"433 n y y \n",
"434 n y y \n",
"435 n y y \n",
"\n",
" religious-groups-in-schools anti-satellite-test-ban \\\n",
"id \n",
"1 y n \n",
"2 y n \n",
"8 y n \n",
"9 y n \n",
"11 n n \n",
"12 y n \n",
"15 y n \n",
"16 y n \n",
"19 y n \n",
"29 n y \n",
"31 y n \n",
"34 y n \n",
"36 y n \n",
"37 y n \n",
"38 y n \n",
"39 y n \n",
"50 y n \n",
"52 y n \n",
"54 y n \n",
"56 y n \n",
"57 y n \n",
"58 y n \n",
"59 y n \n",
"60 y n \n",
"62 y n \n",
"66 y y \n",
"67 y y \n",
"68 y n \n",
"72 n y \n",
"74 n y \n",
".. ... ... \n",
"357 y n \n",
"358 y n \n",
"360 y n \n",
"364 y n \n",
"365 y n \n",
"370 y n \n",
"375 y n \n",
"378 y ? \n",
"379 y n \n",
"380 y n \n",
"393 y n \n",
"394 y n \n",
"400 y n \n",
"401 y n \n",
"402 y n \n",
"403 y y \n",
"404 y n \n",
"405 y n \n",
"406 y n \n",
"410 y n \n",
"411 y n \n",
"413 y n \n",
"414 y y \n",
"417 y n \n",
"421 y y \n",
"428 y y \n",
"431 y n \n",
"433 y n \n",
"434 y ? \n",
"435 y n \n",
"\n",
" aid-to-nicaraguan-contras mx-missile immigration \\\n",
"id \n",
"1 n n y \n",
"2 n n n \n",
"8 n n n \n",
"9 n n n \n",
"11 n n n \n",
"12 n n n \n",
"15 n n n \n",
"16 n n y \n",
"19 n n n \n",
"29 y y n \n",
"31 n n n \n",
"34 n n n \n",
"36 n n n \n",
"37 n n y \n",
"38 n n n \n",
"39 n n y \n",
"50 n n n \n",
"52 ? n n \n",
"54 n n y \n",
"56 n n y \n",
"57 n n y \n",
"58 n n y \n",
"59 n n y \n",
"60 n n y \n",
"62 n n n \n",
"66 n n n \n",
"67 n n n \n",
"68 n n y \n",
"72 y y y \n",
"74 n y y \n",
".. ... ... ... \n",
"357 n n n \n",
"358 n n n \n",
"360 n n y \n",
"364 n n y \n",
"365 n n n \n",
"370 n n n \n",
"375 n n n \n",
"378 ? n n \n",
"379 n n n \n",
"380 n n n \n",
"393 n n n \n",
"394 y y n \n",
"400 n n y \n",
"401 ? n n \n",
"402 n n y \n",
"403 y y y \n",
"404 n n y \n",
"405 n n y \n",
"406 n n n \n",
"410 n n n \n",
"411 n n n \n",
"413 n n y \n",
"414 y n y \n",
"417 n n y \n",
"421 y n y \n",
"428 y n y \n",
"431 n y y \n",
"433 n n n \n",
"434 ? ? ? \n",
"435 n n y \n",
"\n",
" synfuels-corporation-cutback education-spending superfund-right-to-sue \\\n",
"id \n",
"1 ? y y \n",
"2 n y y \n",
"8 n n y \n",
"9 n y y \n",
"11 ? ? y \n",
"12 y ? y \n",
"15 n y ? \n",
"16 n y y \n",
"19 n ? y \n",
"29 n y y \n",
"31 n y y \n",
"34 n y y \n",
"36 n y y \n",
"37 n y ? \n",
"38 n n y \n",
"39 n y y \n",
"50 n y y \n",
"52 n y y \n",
"54 n y y \n",
"56 y y y \n",
"57 y y y \n",
"58 n y y \n",
"59 n y y \n",
"60 n y y \n",
"62 n y y \n",
"66 n y y \n",
"67 y y y \n",
"68 n y y \n",
"72 y n n \n",
"74 n n y \n",
".. ... ... ... \n",
"357 n y y \n",
"358 n y y \n",
"360 ? y y \n",
"364 y n y \n",
"365 y n y \n",
"370 n n y \n",
"375 n y y \n",
"378 ? ? y \n",
"379 n y y \n",
"380 n y y \n",
"393 y y y \n",
"394 n y y \n",
"400 n y y \n",
"401 ? ? ? \n",
"402 y y y \n",
"403 n y n \n",
"404 n y ? \n",
"405 n y y \n",
"406 n y y \n",
"410 n y y \n",
"411 y y y \n",
"413 n y y \n",
"414 ? ? ? \n",
"417 n n y \n",
"421 n n y \n",
"428 n y y \n",
"431 n y y \n",
"433 y y y \n",
"434 n y y \n",
"435 n y y \n",
"\n",
" crime duty-free-exports export-administration-act-south-africa Class \n",
"id \n",
"1 y n y republican \n",
"2 y n ? republican \n",
"8 y ? y republican \n",
"9 y n y republican \n",
"11 y n n republican \n",
"12 y ? ? republican \n",
"15 ? n ? republican \n",
"16 ? n ? republican \n",
"19 y n n republican \n",
"29 y n y republican \n",
"31 y n n republican \n",
"34 y n y republican \n",
"36 y n n republican \n",
"37 y n y republican \n",
"38 y n y republican \n",
"39 y n n republican \n",
"50 y n n republican \n",
"52 y n y republican \n",
"54 y n n republican \n",
"56 y n n republican \n",
"57 y n y republican \n",
"58 y n y republican \n",
"59 y n y republican \n",
"60 y n ? republican \n",
"62 y n n republican \n",
"66 y n y republican \n",
"67 y n y republican \n",
"68 y n n republican \n",
"72 y n y republican \n",
"74 y n y republican \n",
".. ... ... ... ... \n",
"357 y n n republican \n",
"358 y n n republican \n",
"360 y n y republican \n",
"364 n n n republican \n",
"365 y n y republican \n",
"370 y n y republican \n",
"375 y n y republican \n",
"378 ? ? ? republican \n",
"379 y n y republican \n",
"380 y n y republican \n",
"393 y n y republican \n",
"394 n n ? republican \n",
"400 y n n republican \n",
"401 y n ? republican \n",
"402 y n n republican \n",
"403 y n y republican \n",
"404 y n n republican \n",
"405 y n y republican \n",
"406 y n y republican \n",
"410 y n n republican \n",
"411 y n y republican \n",
"413 y n y republican \n",
"414 y n y republican \n",
"417 y n y republican \n",
"421 y n y republican \n",
"428 y n y republican \n",
"431 y n y republican \n",
"433 y n y republican \n",
"434 y n y republican \n",
"435 y ? n republican \n",
"\n",
"[168 rows x 17 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vote[vote[\"Class\"]==\"republican\"]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"y 158\n",
"? 7\n",
"n 3\n",
"Name: crime, dtype: int64"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Combien de républicains ont voté pour la loi \"crime\" ? \n",
"a = vote[vote[\"Class\"]==\"republican\"][\"crime\"]\n",
"a.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a.value_counts().plot(kind=\"barh\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Aggrégation, indices multiples\n",
"\n",
"On peut regrouper les données selon certaines dimensions en appliquant des fonctions spécifiques (cardinal, moyenne, somme)\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"gc = vote.groupby(['crime'])\n",
"a = gc.size()\n",
"a.plot(kind='bar',legend=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"C'est plus intéressant avec des valeurs qui typent les données, et qui peuvent servir à indexer selon une autre dimension"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Class crime\n",
"democrat n 167\n",
" y 90\n",
" ? 10\n",
"republican y 158\n",
" ? 7\n",
" n 3\n",
"Name: crime, dtype: int64\n"
]
},
{
"data": {
"text/plain": [
"crime\n",
"y 158\n",
"? 7\n",
"n 3\n",
"Name: crime, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gp = vote.groupby(\"Class\")\n",
"vals = gp[\"crime\"].value_counts()\n",
"print(vals)\n",
"vals[\"republican\"]"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(vals)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ici on voit un indice multiple: selon la classe, puis les valeurs possibles du vote sur la loi 'crime': "
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"MultiIndex(levels=[['democrat', 'republican'], ['?', 'n', 'y']],\n",
" codes=[[0, 0, 0, 1, 1, 1], [1, 2, 0, 2, 0, 1]],\n",
" names=['Class', 'crime'])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vals.index"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Class \n",
" democrat \n",
" republican \n",
" \n",
" \n",
" crime \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ? \n",
" 10 \n",
" 7 \n",
" \n",
" \n",
" n \n",
" 167 \n",
" 3 \n",
" \n",
" \n",
" y \n",
" 90 \n",
" 158 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Class democrat republican\n",
"crime \n",
"? 10 7\n",
"n 167 3\n",
"y 90 158"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# On peut enlever les niveaux pour refaire une table\n",
"crime_vote = vals.unstack(level=0)\n",
"crime_vote"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Class\n",
"democrat 267\n",
"republican 168\n",
"dtype: int64"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"total = crime_vote.sum()\n",
"total"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" Class \n",
" democrat \n",
" republican \n",
" \n",
" \n",
" crime \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" ? \n",
" 0.037453 \n",
" 0.041667 \n",
" \n",
" \n",
" n \n",
" 0.625468 \n",
" 0.017857 \n",
" \n",
" \n",
" y \n",
" 0.337079 \n",
" 0.940476 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Class democrat republican\n",
"crime \n",
"? 0.037453 0.041667\n",
"n 0.625468 0.017857\n",
"y 0.337079 0.940476"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_prc = crime_vote/crime_vote.sum()\n",
"crime_prc"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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wv4AAIbMmG5uvNb6/QFPxyVZ0c39AQAMta7G1fNKKa9P8vtJDl7H105LclqSjH7RhEx6+uKm++45b27T7QEAbEjXTwuWUkYluSjJUbXWJ9b+eq31wlrrzFrrzNHb7tDt6QAAdNVgXHP120lW1lrvG4R9AQAMqcGIq8eT/MUg7AcAYMgNRlztkOSUQdgPAMCQ6/oF7bXWHyX5w27vBwBgOHCHdgCAhsQVAEBD4goAoCFxBQDQkLgCAGhoUD7+BgDonlWrVmX58uV5+umnh3oqW6Xx48dn9913z9ixYzsaL64AYIRbvnx5tt9++0yaNCmllKGezlal1poVK1Zk+fLlmTx5ckff47QgAIxwTz/9dHbaaSdh1QWllOy0006btCoorgBgKyCsumdTf7biCgCgIXEFAGyRn/zkJznxxBPzspe9LAcccEDe8IY35N57783UqVOHempDwgXtAMBmq7Xm2GOPzVvf+tZcccUVSZJly5blkUceGeKZDR0rVwDAZrv++uszduzYnH766f2vTZ8+PS996Uv7n/f09OSwww7LjBkzMmPGjCxatChJ8uMf/ziHH3549t9//0ydOjU333xzVq9enfnz52fq1KmZNm1aLrjggkF/T1vKyhUAsNnuvPPOHHDAARscs8suu+S6667L+PHjc99992XevHlZvHhxLr/88rz+9a/Pe9/73qxevTpPPfVUli5dmocffjh33nlnkuSJJ54YjLfRlLgCALpq1apVWbBgQZYuXZrRo0fn3nvvTZLMmjUrb3vb27Jq1aocc8wx2X///bPnnnvmhz/8Yd7+9rdn7ty5OfLII4d49pvOaUEAYLPtu+++WbJkyQbHXHDBBdl1112zbNmyLF68OM8++2yS5PDDD89NN92U3XbbLfPnz88ll1ySl7zkJVm2bFmOOOKIfPKTn8wpp5wyGG+jKXEFAGy217zmNXnmmWdy4YUX9r/2ne98Jw899FD/85UrV2bixIkZNWpULr300qxevTpJ8uCDD2bXXXfNqaeemlNOOSW33357Hn300axZsybHH398zj333Nx+++2D/p62lNOCAMBmK6XkC1/4Qt75znfm/PPPz/jx4zNp0qR8/OMf7x9z5pln5vjjj88ll1ySOXPm5IUvfGGS5IYbbsiHP/zhjB07Ntttt10uueSSPPzwwzn55JOzZs2aJMmHPvShIXlfW6LUWod6Dv3GTdyrTnzrxzc+cBP0nDe36fYAYLi5++67M2XKlKGexlZtXT/jUsqSWuvMtcc6LQgA0JC4AgBoSFwBADQkrgAAGhJXAAANiSsAgIbc5woAtjKTzv5S0+1t6m2NzjnnnGy33XZ597vf3XQeLfT09GTRokV585vf3LV9DKu4mrbbDlnsvlQAwBZ47rnnMmbMuhOnp6cnl19+eVfjymlBAGCLfeADH8jee++dV77ylbnnnnuSJD/4wQ8yZ86cHHDAATnssMPy/e9/P0kyf/78nHHGGZk9e3b23HPP3HDDDXnb296WKVOmZP78+f3bXLhwYaZNm5apU6fmPe95T//rX/nKVzJjxoxMnz49r33ta5P0rpaddNJJOfTQQ3PSSSelp6cnhx12WGbMmJEZM2Zk0aJFSZKzzz47N998c/bff/9ccMEFXflZDKuVKwBg5FmyZEmuuOKKLF26NM8991xmzJiRAw44IKeddlo++clPZq+99sptt92WM888M1//+teTJI8//nhuvfXWXHPNNTnqqKPyjW98I5/+9Kcza9asLF26NLvsskve8573ZMmSJXnJS16SI488MldffXUOPfTQnHrqqbnpppsyefLkPPbYY/3zuOuuu3LLLbdkm222yVNPPZXrrrsu48ePz3333Zd58+Zl8eLFOe+88/KRj3wk1157bdd+HuIKANgiN998c4499thsu+22SZKjjjoqTz/9dBYtWpQTTjihf9wzzzzT//iNb3xjSimZNm1adt1110ybNi1Jsu+++6anpycPPvhgjjjiiEyYMCFJ8pa3vCU33XRTRo8encMPPzyTJ09Okuy444792zzqqKOyzTbbJElWrVqVBQsWZOnSpRk9enTuvffe7v4QBhBXAEBza9asyYtf/OIsXbp0nV8fN25ckmTUqFH9j59//txzz2Xs2LGbvM/nPxA6SS644ILsuuuuWbZsWdasWZPx48dv8vY2l2uuAIAtcvjhh+fqq6/OL3/5yzz55JP54he/mG233TaTJ0/O5z73uSRJrTXLli3reJsHHnhgbrzxxjz66KNZvXp1Fi5cmFe96lWZPXt2brrppjzwwANJ8munBQdauXJlJk6cmFGjRuXSSy/N6tWrkyTbb799nnzyyS18xxtm5QoAtjKbeuuELTVjxoy86U1vyvTp07PLLrtk1qxZSZLLLrssZ5xxRs4999ysWrUqJ554YqZPn97RNidOnJjzzjsvr371q1Nrzdy5c3P00UcnSS688MIcd9xxWbNmTXbZZZdcd911v/H9Z555Zo4//vhccsklmTNnTv+q1n777ZfRo0dn+vTpmT9/fv78z/+80U/hV0qttflGN9fMmTPr4sWLh3oaADCi3H333ZkyZcpQT2Ortq6fcSllSa115tpjnRYEAGhIXAEANCSuAAAaElcAAA2JKwCAhsQVAEBD7nMFAFubc3ZovL2Vbbe3CW644Yb1fhbgpEmTsnjx4uy888455JBD+j+ceahZuQIAmqq1Zs2aNYO6z+ESVom4AgAa6Onpyctf/vL8yZ/8SaZOnZpLL700Bx98cGbMmJETTjghP//5z5P0rjadddZZmTZtWg488MDcf//9SZL58+fn85//fP/2tttuu/7HP/vZzzJ37ty8/OUvz+mnn77OcBs4/vzzz8+0adMyffr0nH322UmST33qU5k1a1amT5+e448/Pk899VT/ft/xjnfkkEMOyZ577vlrc9hc4goAaOK+++7LmWeemRtvvDEXXXRRvva1r+X222/PzJkz87GPfax/3A477JDvfve7WbBgQd75zndudLvf+ta38olPfCJ33XVXfvCDH+Sqq65a79gvf/nL+Zd/+ZfcdtttWbZsWc4666wkyXHHHZdvf/vbWbZsWaZMmZKLLrqo/3t+/OMf55Zbbsm1117bH2NbQlwBAE3ssccemT17dr75zW/mrrvuyqGHHpr9998/n/3sZ/Pggw/2j5s3b17/37feeutGt3vggQdmzz33zOjRozNv3rzccsst6x37ta99LSeffHK23XbbJMmOO+6YJLnzzjtz2GGHZdq0abnsssvyve99r/97jjnmmIwaNSr77LNPHnnkkc167wO5oB0AaOL5D0euteZ1r3tdFi5cuM5xpZTfeDxmzJj+031r1qzJs88+u87x63reifnz5+fqq6/O9OnT85nPfCY33HBD/9fGjRvX/7jFZy5buQIAmpo9e3a+8Y1v9F9P9Ytf/CL33ntv/9evvPLK/r8PPvjgJL3XYi1ZsiRJcs0112TVqlX947/1rW/lgQceyJo1a3LllVfmla985Xr3/brXvS4XX3xx/zVVjz32WJLkySefzMSJE7Nq1apcdtllDd/tb7JyBQBbmyG8dUKSTJgwIZ/5zGcyb968PPPMM0mSc889N3vvvXeS5PHHH89+++2XcePG9a9unXrqqTn66KMzffr0zJkzp38VLElmzZqVBQsW5P7778+rX/3qHHvssevd95w5c7J06dLMnDkzL3jBC/KGN7whH/zgB/P+978/Bx10UCZMmJCDDjooTz75ZNfef2mx/NXKzJkz6+LFi4d6GgAwotx9992ZMmXKUE+jIwPvTTWSrOtnXEpZUmudufZYpwUBABpyWhAAGDQ9PT1DPYWus3IFAFuB4XSZz9ZmU3+24goARrjx48dnxYoVAqsLaq1ZsWJFxo8f3/H3OC0IACPc7rvvnuXLl+enP/3pUE9lqzR+/PjsvvvuHY8XVwAwwo0dOzaTJ08e6mnQx2lBAICGxBUAQEPiCgCgoWF1h/ZSypNJ7hnqebBFdk7y6FBPgi3iGI58juHI5xiODHvUWies/eJwu6D9nnXdRp6Ro5Sy2DEc2RzDkc8xHPkcw5HNaUEAgIbEFQBAQ8Mtri4c6gmwxRzDkc8xHPkcw5HPMRzBhtUF7QAAI91wW7kCABjRxBUAQEODHlellDmllHtKKfeXUs5ex9fHlVKu7Pv6baWUSYM9Rzasg2P4rlLKXaWU75RS/r2UssdQzJP129gxHDDu+FJKLaX4lfBhppNjWEr5o75/i98rpVw+2HNkwzr4v/R3SinXl1Lu6Pv/9A1DMU823aBec1VKGZ3k3iSvS7I8ybeTzKu13jVgzJlJ9qu1nl5KOTHJsbXWNw3aJNmgDo/hq5PcVmt9qpRyRpIjHMPho5Nj2Ddu+yRfSvKCJAtqrYsHe66sW4f/DvdK8s9JXlNrfbyUskut9T+GZML8hg6P4YVJ7qi1/u9Syj5J/rXWOmko5sumGeyVqwOT3F9r/WGt9dkkVyQ5eq0xRyf5bN/jzyd5bSmlDOIc2bCNHsNa6/W11qf6nn4zye6DPEc2rJN/h0ny/iTnJ3l6MCdHRzo5hqcm+fta6+NJIqyGnU6OYU3yor7HOyT50SDOjy0w2HG1W5KHBjxf3vfaOsfUWp9LsjLJToMyOzrRyTEc6E+TfLmrM2JTbfQYllJmJHlprfVLgzkxOtbJv8O9k+xdSvlGKeWbpZQ5gzY7OtHJMTwnyR+XUpYn+dckbx+cqbGlhtvH37AVKaX8cZKZSV411HOhc6WUUUk+lmT+EE+FLTMmyV5Jjkjv6vFNpZRptdYnhnRWbIp5ST5Ta/1oKeXgJJeWUqbWWtcM9cTYsMFeuXo4yUsHPN+977V1jimljEnvUuiKQZkdnejkGKaU8ntJ3pvkqFrrM4M0NzqzsWO4fZKpSW4opfQkmZ3kGhe1Dyud/DtcnuSaWuuqWusD6b2+Z69Bmh8b18kx/NP0XjeXWuutScan9wOdGeYGO66+nWSvUsrkUsoLkpyY5Jq1xlyT5K19j/8wyderO50OJxs9hqWUVyT5P+kNK9d5DD8bPIa11pW11p1rrZP6Lp79ZnqPpQvah49O/i+9Or2rViml7Jze04Q/HMxJskGdHMP/l+S1SVJKmZLeuPrpoM6SzTKocdV3DdWCJF9NcneSf661fq+U8r5SylF9wy5KslMp5f4k70qy3l8TZ/B1eAw/nGS7JJ8rpSwtpaz9HwZDqMNjyDDW4TH8apIVpZS7klyf5C9rrc4CDBMdHsO/SHJqKWVZkoVJ5ltsGBl8/A0AQEPu0A4A0JC4AgBoSFwBADQkrgAAGhJXAAANiSsAgIbEFQBAQ/8fhXAzXsj7zrEAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"crime_prc.plot(kind=\"barh\",title=\"Crime vote\",figsize=(10,7))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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o9fA/gAAemZMNzdea/3RgKfjkjzczf0BAPRaV+PqOaWUNyV5c5LdVvLaUUmOSpLRv7dZJj51dvsBnPi1F1xl8amz2+8XABhxun5ZsJQyKslZSfavtT624uu11jNrrdNrrdNHr7dBt4cDANBVa+Keqz9I8nit9c41sC8AgJ5aE3H1aJIProH9AAD03JqIqw2SHLEG9gMA0HNdv6G91vqTJH/S7f0AAKwNvEM7AEBD4goAoCFxBQDQkLgCAGhIXAEANLRGfv0NANA9S5cuzZIlS/LUU0/1eijD0vjx47PVVltl7Nixg1pfXAHAELdkyZK8/OUvz8SJE1NK6fVwhpVaax5++OEsWbIkkyZNGtTHuCwIAEPcU089lU022URYdUEpJZtsssmLOisorgBgGBBW3fNiP7fiCgCgIXEFALwkP/3pT3PYYYflVa96VXbeeefst99+ueOOOzJ58uReD60n3NAOAKy2WmsOOuigvPvd786FF16YJFm0aFEefPDBHo+sd5y5AgBW23e+852MHTs2Rx99dP+yqVOn5hWveEX/88WLF2evvfbKtGnTMm3atFx77bVJkgceeCB77713dtppp0yePDlXX311li1blrlz52by5MmZMmVKTj/99DU+p5fKmSsAYLXdcsst2XnnnZ93nc033zyXX355xo8fnzvvvDNz5szJ/Pnzc8EFF+RNb3pTTjrppCxbtixPPvlkFi5cmPvvvz+33HJLkuSxxx5bE9NoSlwBAF21dOnSHHfccVm4cGFGjx6dO+64I0kyY8aMHH744Vm6dGkOPPDA7LTTTtl6663z4x//OO9973sze/bs7Lvvvj0e/YvnsiAAsNp22GGHLFiw4HnXOf3007PFFltk0aJFmT9/fp555pkkyd57752rrroqW265ZebOnZtzzz03G220URYtWpTXve51OeOMM3LEEUesiWk0Ja4AgNX2+te/Pk8//XTOPPPM/mU33XRT7rvvvv7njz/+eCZMmJBRo0blvPPOy7Jly5Ik9957b7bYYosceeSROeKII3LjjTfmoYceyvLly3PIIYfklFNOyY033rjG5/RSuSwIAKy2Ukq+/OUv5/jjj89pp52W8ePHZ+LEifnMZz7Tv86xxx6bQw45JOeee25mzZqVl73sZUmSK664Ip/85CczduzYrL/++jn33HNz//335z3veU+WL1+eJPn4xz/ek3m9FKXW2usx9Bs3YZs64d2feeEVu2DxqbN7sl8AeKluu+22bLfddr0exrC2ss9xKWVBrXX6iuu6LAgA0JC4AgBoSFwBADQkrgAAGhJXAAANiSsAgIa8zxUADDMTT/xa0+292LcrOvnkk7P++uvnQx/6UNNxtLB48eJce+21efvb3961faxVcTVlyw0y3/tNAQAvwbPPPpsxY1aeOIsXL84FF1zQ1bhyWRAAeMk++tGPZtttt82ee+6Z22+/PUly9913Z9asWdl5552z11575Uc/+lGSZO7cuTnmmGMyc+bMbL311rniiity+OGHZ7vttsvcuXP7tzlv3rxMmTIlkydPzoc//OH+5d/4xjcybdq0TJ06NW94wxuS9J0te+c735k99tgj73znO7N48eLstddemTZtWqZNm5Zrr702SXLiiSfm6quvzk477ZTTTz+9K5+LterMFQAw9CxYsCAXXnhhFi5cmGeffTbTpk3LzjvvnKOOOipnnHFGttlmm1x//fU59thj8+1vfztJ8uijj+a6667LpZdemv333z/f/e538/nPfz4zZszIwoULs/nmm+fDH/5wFixYkI022ij77rtvLrnkkuyxxx458sgjc9VVV2XSpEl55JFH+sdx66235pprrsm6666bJ598MpdffnnGjx+fO++8M3PmzMn8+fNz6qmn5lOf+lQuu+yyrn0+xBUA8JJcffXVOeigg7LeeuslSfbff/889dRTufbaa3PooYf2r/f000/3P37rW9+aUkqmTJmSLbbYIlOmTEmS7LDDDlm8eHHuvffevO51r8tmm22WJHnHO96Rq666KqNHj87ee++dSZMmJUk23njj/m3uv//+WXfddZMkS5cuzXHHHZeFCxdm9OjRueOOO7r7SRhAXAEAzS1fvjwbbrhhFi5cuNLXx40blyQZNWpU/+Pnnj/77LMZO3bsi97nc78QOklOP/30bLHFFlm0aFGWL1+e8ePHv+jtrS73XAEAL8nee++dSy65JL/+9a/zxBNP5Ktf/WrWW2+9TJo0KV/84heTJLXWLFq0aNDb3GWXXXLllVfmoYceyrJlyzJv3ry89rWvzcyZM3PVVVflnnvuSZLfuiw40OOPP54JEyZk1KhROe+887Js2bIkyctf/vI88cQTL3HGz8+ZKwAYZl7sWye8VNOmTcvb3va2TJ06NZtvvnlmzJiRJDn//PNzzDHH5JRTTsnSpUtz2GGHZerUqYPa5oQJE3Lqqadmn332Sa01s2fPzgEHHJAkOfPMM3PwwQdn+fLl2XzzzXP55Zf/zscfe+yxOeSQQ3Luuedm1qxZ/We1dtxxx4wePTpTp07N3Llz84EPfKDRZ+E3Sq21+UZX1/Tp0+v8+fN7PQwAGFJuu+22bLfddr0exrC2ss9xKWVBrXX6iuu6LAgA0JC4AgBoSFwBADQkrgAAGhJXAAANiSsAgIa8zxUADDcnb9B4e4+33d6LcMUVV6zydwFOnDgx8+fPz6abbprdd9+9/5cz95ozVwBAU7XWLF++fI3uc20Jq0RcAQANLF68OK9+9avzrne9K5MnT855552X3XbbLdOmTcuhhx6aX/7yl0n6zjadcMIJmTJlSnbZZZfcddddSZK5c+fmS1/6Uv/21l9//f7Hv/jFLzJ79uy8+tWvztFHH73ScBu4/mmnnZYpU6Zk6tSpOfHEE5Mkn/vc5zJjxoxMnTo1hxxySJ588sn+/b7vfe/L7rvvnq233vq3xrC6xBUA0MSdd96ZY489NldeeWXOOuusfPOb38yNN96Y6dOn59Of/nT/ehtssEFuvvnmHHfccTn++ONfcLs33HBDPvvZz+bWW2/N3XffnYsvvniV637961/PV77ylVx//fVZtGhRTjjhhCTJwQcfnO9///tZtGhRtttuu5x11ln9H/PAAw/kmmuuyWWXXdYfYy+FuAIAmnjlK1+ZmTNn5nvf+15uvfXW7LHHHtlpp53yhS98Iffee2//enPmzOn/+7rrrnvB7e6yyy7ZeuutM3r06MyZMyfXXHPNKtf95je/mfe85z1Zb731kiQbb7xxkuSWW27JXnvtlSlTpuT888/PD3/4w/6POfDAAzNq1Khsv/32efDBB1dr7gO5oR0AaOK5X45ca80b3/jGzJs3b6XrlVJ+5/GYMWP6L/ctX748zzzzzErXX9nzwZg7d24uueSSTJ06Neecc06uuOKK/tfGjRvX/7jF71x25goAaGrmzJn57ne/238/1a9+9avccccd/a9fdNFF/X/vtttuSfruxVqwYEGS5NJLL83SpUv717/hhhtyzz33ZPny5bnooouy5557rnLfb3zjG3P22Wf331P1yCOPJEmeeOKJTJgwIUuXLs3555/fcLa/y5krABhuevjWCUmy2Wab5ZxzzsmcOXPy9NNPJ0lOOeWUbLvttkmSRx99NDvuuGPGjRvXf3bryCOPzAEHHJCpU6dm1qxZ/WfBkmTGjBk57rjjctddd2WfffbJQQcdtMp9z5o1KwsXLsz06dOzzjrrZL/99svHPvaxfOQjH8muu+6azTbbLLvuumueeOKJrs2/tDj91cr06dPr/Pnzez0MABhSbrvttmy33Xa9HsagDHxvqqFkZZ/jUsqCWuv0Fdd1WRAAoCGXBQGANWbx4sW9HkLXOXMFAMPA2nSbz3DzYj+34goAhrjx48fn4YcfFlhdUGvNww8/nPHjxw/6Y1wWBIAhbquttsqSJUvy85//vNdDGZbGjx+frbbaatDriysAGOLGjh2bSZMm9XoYdLgsCADQkLgCAGhIXAEANLRWvUN7KeWJJLf3ehw9smmSh3o9iB4y/5E7/5E892Rkz38kzz0x/+Ew/1fWWjdbceHadkP77St7G/mRoJQyf6TOPTH/kTz/kTz3ZGTPfyTPPTH/4Tx/lwUBABoSVwAADa1tcXVmrwfQQyN57on5j+T5j+S5JyN7/iN57on5D9v5r1U3tAMADHVr25krAIAhTVwBADS0VsRVKWVWKeX2UspdpZQTez2ebiulvKKU8p1Syq2llB+WUt7fWb5xKeXyUsqdnb836vVYu6WUMrqU8oNSymWd55NKKdd3vgYuKqWs0+sxdkspZcNSypdKKT8qpdxWStlthB37D3S+7m8ppcwrpYwfrse/lPKvpZSflVJuGbBspce69PmHzufgplLKtN6NvI1VzP+Tna/9m0opXy6lbDjgtb/qzP/2UsqbejPqdlY2/wGvfbCUUkspm3aeD6vjv6q5l1Le2zn+PyylfGLA8mF17HseV6WU0Un+Kcmbk2yfZE4pZfvejqrrnk3ywVrr9klmJvnzzpxPTPKtWus2Sb7VeT5cvT/JbQOen5bk9Frrf0vyaJI/68mo1oy/T/KNWusfJZmavs/DiDj2pZQtk7wvyfRa6+Qko5McluF7/M9JMmuFZas61m9Osk3nz1FJ/mUNjbGbzsnvzv/yJJNrrTsmuSPJXyVJ53vgYUl26HzMP3f+fRjKzsnvzj+llFck2TfJfw1YPNyO/zlZYe6llH2SHJBkaq11hySf6iwfdse+53GVZJckd9Vaf1xrfSbJhen75A9btdYHaq03dh4/kb5/XLdM37y/0FntC0kO7M0Iu6uUslWS2Uk+33lekrw+yZc6qwznuW+QZO8kZyVJrfWZWutjGSHHvmNMknVLKWOSrJfkgQzT419rvSrJIyssXtWxPiDJubXP95JsWEqZsGZG2h0rm3+t9T9rrc92nn4vyVadxwckubDW+nSt9Z4kd6Xv34chaxXHP0lOT3JCkoE/UTasjv8q5n5MklNrrU931vlZZ/mwO/ZrQ1xtmeS+Ac+XdJaNCKWUiUlek+T6JFvUWh/ovPTTJFv0aFjd9pn0fWNZ3nm+SZLHBnzDHc5fA5OS/DzJ2Z3Lop8vpbwsI+TY11rvT9//rf5X+qLq8SQLMnKOf7LqYz0SvxcenuTrnccjYv6llAOS3F9rXbTCSyNh/tsm2atzC8CVpZQZneXDbu5rQ1yNWKWU9ZP8e5Lja62/GPha7XuPjGH3PhmllLck+VmtdUGvx9IjY5JMS/IvtdbXJPlVVrgEOFyPfZJ07i86IH2R+QdJXpaVXDYZKYbzsX4hpZST0neLxPm9HsuaUkpZL8lfJ/mbXo+lR8Yk2Th9t8P8ZZL/27lyMeysDXF1f5JXDHi+VWfZsFZKGZu+sDq/1npxZ/GDz50G7vz9s1V9/BC2R5L9SymL03cJ+PXpuwdpw85lomR4fw0sSbKk1np95/mX0hdbI+HYJ8kfJ7mn1vrzWuvSJBen72tipBz/ZNXHesR8LyylzE3yliTvqL95s8WRMP9Xpe9/LBZ1vgduleTGUsrvZ2TMf0mSizuXPm9I39WLTTMM5742xNX3k2zT+WmhddJ3U9ulPR5TV3VK/awkt9VaPz3gpUuTvLvz+N1JvrKmx9Zttda/qrVuVWudmL5j/e1a6zuSfCfJn3RWG5ZzT5Ja60+T3FdKeXVn0RuS3JoRcOw7/ivJzFLKep3/Dp6b/4g4/h2rOtaXJnlX56fGZiZ5fMDlw2GjlDIrfbcF7F9rfXLAS5cmOayUMq6UMil9N3bf0Isxdkut9eZa6+a11omd74FLkkzrfF8YCcf/kiT7JEkpZdsk6yR5KMPx2Ndae/4nyX7p+6mRu5Oc1OvxrIH57pm+SwE3JVnY+bNf+u49+laSO5N8M8nGvR5rlz8Pr0tyWefx1un7j+muJF9MMq7X4+vivHdKMr9z/C9JstFIOvZJ/k+SHyW5Jcl5ScYN1+OfZF767i1bmr5/SP9sVcc6SUnfT07fneTm9P1EZc/n0IX535W++2ue+953xoD1T+rM//Ykb+71+Lsx/xVeX5xk0+F4/Fdx7NdJ8m+d//ZvTPL64Xrs/fobAICG1obLggAAw4a4AgBoSFwBADQkrgAAGhJXAAANiSsAgIbEFQBAQ/8f9SnGWXyQRfgAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"crime_vote.plot(kind=\"barh\",title=\"Crime vote\",figsize=(10,7))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"En général stack/unstack transforme les colonnes en ligne et inversement"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date \n",
"2012-06-01 Open 569.16\n",
" High 590.00\n",
" Low 548.50\n",
" Close 584.00\n",
" Volume 14077000.00\n",
" Adj Close 581.50\n",
"2012-05-01 Open 584.90\n",
" High 596.76\n",
" Low 522.18\n",
" Close 577.73\n",
" Volume 18827900.00\n",
" Adj Close 575.26\n",
"2012-04-02 Open 601.83\n",
" High 644.00\n",
" Low 555.00\n",
" Close 583.98\n",
" Volume 28759100.00\n",
" Adj Close 581.48\n",
"2012-03-01 Open 548.17\n",
" High 621.45\n",
" Low 516.22\n",
" Close 599.55\n",
" Volume 26486000.00\n",
" Adj Close 596.99\n",
"2012-02-01 Open 458.41\n",
" High 547.61\n",
" Low 453.98\n",
" Close 542.44\n",
" Volume 22001000.00\n",
" Adj Close 540.12\n",
"2012-01-03 Open 409.40\n",
" High 458.24\n",
" Low 409.00\n",
" Close 456.48\n",
" Volume 12949100.00\n",
" Adj Close 454.53\n",
"dtype: float64"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.stack() "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Exercice"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": true
},
"outputs": [
{
"ename": "ConnectionError",
"evalue": "HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/IBM/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mgaierror\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 158\u001b[0m conn = connection.create_connection(\n\u001b[0;32m--> 159\u001b[0;31m (self._dns_host, self.port), self.timeout, **extra_kw)\n\u001b[0m\u001b[1;32m 160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/util/connection.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSOCK_STREAM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[0;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[1;32m 744\u001b[0m \u001b[0maddrlist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 745\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 746\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mgaierror\u001b[0m: [Errno 8] nodename nor servname provided, or not known",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mNewConnectionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 600\u001b[0;31m chunked=chunked)\n\u001b[0m\u001b[1;32m 601\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 343\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 344\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_validate_conn\u001b[0;34m(self, conn)\u001b[0m\n\u001b[1;32m 838\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'sock'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# AppEngine might not have `.sock`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 839\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 840\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[0;31m# Add certificate verification\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 301\u001b[0;31m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_new_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 302\u001b[0m \u001b[0mhostname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 167\u001b[0m raise NewConnectionError(\n\u001b[0;32m--> 168\u001b[0;31m self, \"Failed to establish a new connection: %s\" % e)\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNewConnectionError\u001b[0m: : Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 449\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 450\u001b[0m )\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 637\u001b[0m retries = retries.increment(method, url, error=e, _pool=self,\n\u001b[0;32m--> 638\u001b[0;31m _stacktrace=sys.exc_info()[2])\n\u001b[0m\u001b[1;32m 639\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/util/retry.py\u001b[0m in \u001b[0;36mincrement\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 397\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnew_retry\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_exhausted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 398\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMaxRetryError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_pool\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merror\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mResponseError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcause\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 399\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mMaxRetryError\u001b[0m: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/IBM/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mConnectionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mend\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdatetime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2019\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m31\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mprices\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'IBM'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'yahoo'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mprices\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/data.py\u001b[0m in \u001b[0;36mDataReader\u001b[0;34m(name, data_source, start, end, retry_count, pause, session, access_key)\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0madjust_price\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[0mretry_count\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mretry_count\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpause\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpause\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 310\u001b[0;31m session=session).read()\n\u001b[0m\u001b[1;32m 311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mdata_source\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"google\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/base.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mstring_types\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 209\u001b[0m df = self._read_one_data(self.url,\n\u001b[0;32m--> 210\u001b[0;31m params=self._get_params(self.symbols))\n\u001b[0m\u001b[1;32m 211\u001b[0m \u001b[0;31m# Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/yahoo/daily.py\u001b[0m in \u001b[0;36m_read_one_data\u001b[0;34m(self, url, params)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0murl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msymbol\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 128\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 129\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_response\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 130\u001b[0m \u001b[0mptrn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mr'root\\.App\\.main = (.*?);\\n}\\(this\\)\\);'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/base.py\u001b[0m in \u001b[0;36m_get_response\u001b[0;34m(self, url, params, headers)\u001b[0m\n\u001b[1;32m 130\u001b[0m response = self.session.get(url,\n\u001b[1;32m 131\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 132\u001b[0;31m headers=headers)\n\u001b[0m\u001b[1;32m 133\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus_code\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcodes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mok\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, url, **kwargs)\u001b[0m\n\u001b[1;32m 544\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 545\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 546\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'GET'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 547\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 548\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 531\u001b[0m }\n\u001b[1;32m 532\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 533\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 534\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 535\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 646\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 647\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mSSLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 517\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 518\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mClosedPoolError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mConnectionError\u001b[0m: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/IBM/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))"
]
}
],
"source": [
"# bibliothèque en plus: pandas_datareader\n",
"import pandas_datareader.data as web \n",
"import datetime as dt\n",
"start = dt.datetime(2017, 1, 1)\n",
"end = dt.datetime(2019,10,31)\n",
"\n",
"prices = web.DataReader('IBM','yahoo',start=start,end=end)\n",
"\n",
"prices.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2017-01-03 0.000000\n",
"2017-01-04 0.012381\n",
"2017-01-05 0.009032\n",
"2017-01-06 0.013996\n",
"2017-01-09 0.002751\n",
"2017-01-10 -0.009989\n",
"2017-01-11 0.003349\n",
"2017-01-12 0.004546\n",
"2017-01-13 0.000897\n",
"2017-01-17 0.004187\n",
"2017-01-18 -0.002333\n",
"2017-01-19 -0.002273\n",
"2017-01-20 0.020097\n",
"2017-01-23 0.022968\n",
"2017-01-24 0.052096\n",
"2017-01-25 0.066391\n",
"2017-01-26 0.068605\n",
"2017-01-27 0.060470\n",
"2017-01-30 0.051498\n",
"2017-01-31 0.043842\n",
"2017-02-01 0.042467\n",
"2017-02-02 0.044201\n",
"2017-02-03 0.051618\n",
"2017-02-06 0.051857\n",
"2017-02-07 0.067408\n",
"2017-02-08 0.053711\n",
"2017-02-09 0.059932\n",
"2017-02-10 0.068724\n",
"2017-02-13 0.072791\n",
"2017-02-14 0.077397\n",
" ... \n",
"2019-09-20 -0.151385\n",
"2019-09-23 -0.150248\n",
"2019-09-24 -0.152581\n",
"2019-09-25 -0.143729\n",
"2019-09-26 -0.141396\n",
"2019-09-27 -0.143250\n",
"2019-09-30 -0.130211\n",
"2019-10-01 -0.140738\n",
"2019-10-02 -0.152521\n",
"2019-10-03 -0.150547\n",
"2019-10-04 -0.144745\n",
"2019-10-07 -0.154973\n",
"2019-10-08 -0.172319\n",
"2019-10-09 -0.164603\n",
"2019-10-10 -0.155871\n",
"2019-10-11 -0.146121\n",
"2019-10-14 -0.150428\n",
"2019-10-15 -0.144686\n",
"2019-10-16 -0.150009\n",
"2019-10-17 -0.196962\n",
"2019-10-18 -0.197978\n",
"2019-10-21 -0.207010\n",
"2019-10-22 -0.198756\n",
"2019-10-23 -0.196244\n",
"2019-10-24 -0.198098\n",
"2019-10-25 -0.189904\n",
"2019-10-28 -0.186734\n",
"2019-10-29 -0.199593\n",
"2019-10-30 -0.191040\n",
"2019-10-31 -0.200132\n",
"Name: Close, Length: 713, dtype: float64"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(prices[\"Close\"]-prices['Close'][0])/prices['Close'][0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Exercice: écrire un programme qui calcule le changement de valeur en pourcentage, des actions suivantes depuis le début de l'année: "
]
},
{
"cell_type": "code",
"execution_count": 182,
"metadata": {},
"outputs": [],
"source": [
"stock_list = {'INTC': 'Intel',\n",
" 'MSFT': 'Microsoft',\n",
" 'IBM': 'IBM',\n",
" 'BHP': 'BHP',\n",
" 'TM': 'Toyota',\n",
" 'AAPL': 'Apple',\n",
" 'AMZN': 'Amazon',\n",
" 'BA': 'Boeing',\n",
" 'QCOM': 'Qualcomm',\n",
" 'KO': 'Coca-Cola',\n",
" 'GOOG': 'Google',\n",
" 'SNE': 'Sony',\n",
" 'PTR': 'PetroChina'}"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'Intel': 54.45355501658768, 'Microsoft': 129.0987390895882, 'IBM': -20.013162405206405, 'BHP': 32.11777213026728, 'Toyota': 16.870518334165027, 'Apple': 114.17132263352639, 'Amazon': 135.73448252767687, 'Boeing': 116.54456330428944, 'Qualcomm': 22.996942759360618, 'Coca-Cola': 30.215314111578436, 'Google': 60.29078305027951, 'Sony': 115.02297583054276, 'PetroChina': -35.47826148195809}\n"
]
}
],
"source": [
"price_change = {}\n",
"\n",
"for indice in stock_list:\n",
" prices = web.DataReader(indice, 'yahoo', start, end)\n",
" \n",
" closing_prices = prices['Close']\n",
" change = 100 * (closing_prices[-1]\n",
" - closing_prices[0]) / closing_prices[0]\n",
" name = stock_list[indice]\n",
" price_change[name] = change\n",
"\n",
"print(price_change)"
]
},
{
"cell_type": "code",
"execution_count": 184,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 184,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAGfCAYAAAAqF2TZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3XucJWV95/HPlxlXIHiJTktYBVoISgRkgBZUCCJeVp1NBEMCE0zAmMwmajas62U0apDdxPGS7HrX0SiYGLyjrKhBkQG8IPQMwwwoMQLDekFplFVRLmb47R+nOjlpuplm6O5zep7P+/XqV9d56qmqX9XrMP3learOSVUhSZKkHdtOgy5AkiRJ88/QJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPRJkiQ1YOmgCxhGy5Ytq9HR0UGXIUmStE3r16+/uapGttXP0DeN0dFRxsfHB12GJEnSNiW5YTb9nN6VJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQF+ZMuAjK4+b9AlaBu2rFkx6BIkSZozjvRJkiQ1wNAnSZLUgG2GviRbk2xMclWSjybZdRv9X7k9hSTZLcm7k1yb5OokFyc5Islokqtm2OaMJE/dnuNJkiS1ZDYjfbdV1fKqOhC4E/jjbfSfNvSl556O917gR8B+VXUAcCqw7J4OVFWvqaovbKMeSZKk5t3b6d1LgF8FSPLcJJd1o4DvTrIkyRpgl67tg90o3TeSvAPYAOyZZGWSzd3I4eu7fe0LHAG8qqruAqiq66pq8mmHJUne040Anp9kl267M5Oc0C1vSfLaJBu6/e/ftR+e5CtJruh+P/q+XTJJkqTFZ9ahL8lS4JnA5iS/BpwIHFlVy4GtwMlVtZp/Gxk8udv00cAHquoQ4BfA64FjgeXA45IcBxwAbKyqrTMcfj/g7d0I4P8DfmuGfjdX1aHAO4GXdG3XAEd3x38N8FezPWdJkqQdxWw+smWXJBu75UuAvwVWAYcBlycB2AW4aYbtb6iqS7vlxwHrqmoCIMkHgaOBdduo4fqqmqxhPTA6Q79P9PV5Trf8IOCsJPsBBdxvug2TrOrOi7322msb5UiSJC0uswl9t3Wjef8qvaR3VlW9Yhbb/6x/0xn6XA0cnGSnyendKe7oW95KL2RO546+PpPn9j+AC6vq+CSjzBAwq2otsBZgbGysZti/JEnSorS9H9lyAXBCkocBJHlIkr27db9IMu1oGvA14ElJliVZAqwELqqqa4Fx4LVdoCTJfkmevZ319XsQ8N1u+dQ52J8kSdKis12hr6q+DrwKOD/JJuDzwB7d6rXApm7qdup2NwKvAC4ErgQ2VNWnutV/CPwK8K0km4H3AN/bnvqmeAPwuiRfBpbMwf4kSZIWnVQ5kznV2NhYjY+Pz+sx/Bq24efXsEmSFoMk66tqbFv9/EYOSZKkBhj6JEmSGjCbp3c1D5w6lCRJC8mRPkmSpAYY+iRJkhpg6JMkSWqAoU+SJKkBhj5JkqQGGPokSZIaYOiTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhqwdNAFSMNqdPV5gy5BknYYW9asGHQJzXOkT5IkqQGGPkmSpAYY+iRJkhow1KEvyZ8nuTrJpiQbkxwx6JokSZIWo6F9kCPJE4D/DBxaVXckWQb8hwGXJUmStCgN80jfHsDNVXUHQFXdXFXfS/KUJFck2ZzkfUnuD5BkS5LXJtnQrds/yU5J/jnJSNdnpyTf6gKkJElSM4Y59J0P7Jnkm0nekeRJSXYGzgROrKqD6I1U/knfNjdX1aHAO4GXVNVdwN8DJ3frnwpcWVU3Tz1YklVJxpOMT0xMzONpSZIkLbyhDX1VdStwGLAKmAA+DPwX4Pqq+mbX7Szg6L7NPtH9Xg+MdsvvA36/W/4D4P0zHG9tVY1V1djIyMhcnYYkSdJQGNp7+gCqaiuwDliXZDNwyjY2uaP7vZXu3Krq20l+kORY4Aj+bdRPkiSpGUM70pfk0Un262taDvwAGE3yq13b7wEXzWJ376U3zfuRLkhKkiQ1ZWhDH7AbcFaSryfZBDwGWA08D/hoN/J3F/CuWezr3G5/007tSpIk7eiGdnq3qtYDT5xm1QXAIdP0H+1bHgeO6Vt9ML0HOK6Z2yolSZIWh6ENfXMlyWp6T/h6L58kSWrWME/vzomqWlNVe1fVlwZdiyRJ0qDs8CN90vbasmbFoEuQJGnO7PAjfZIkSTL0SZIkNcHQJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPRJkiQ1wNAnSZLUAEOfJElSAwx9kiRJDVg66AKkYTW6+rxBlyDNiS1rVgy6BElDwJE+SZKkBhj6JEmSGmDokyRJasCCh74kuyf5hyTXJVmf5KtJjp/jY2xJsmwu9ylJkrSYLWjoSxLgk8DFVbVPVR0GnAQ8YiHrkCRJas1Cj/QdC9xZVe+abKiqG6rqrUl2TvL+JJuTXJHkyQD30L5rko8k2ZTkw0m+lmRs6gGTPDfJZUk2Jnl3kiULdraSJElDYqFD3wHAhhnWvRCgqg4CVgJnJdn5HtpfANxSVY8F/gdw2NQdJvk14ETgyKpaDmwFTp7u4ElWJRlPMj4xMXEfTlGSJGn4DPRz+pK8HTgKuBP4DvBWgKq6JskNwKO69TO1v7lrvyrJpmkO8RR6YfDy3swyuwA3TVdLVa0F1gKMjY3VHJ2iJEnSUFjo0Hc18FuTL6rqhd0DF+PAd2fYJveyfWqfs6rqFfeqSkmSpB3MQk/vfhHYOcmf9LXt2v2+mG7qNcmjgL2Af7qH9i8Bv9O1PwY4aJrjXQCckORhXb+HJNl7js9JkiRp6C1o6KuqAo4DnpTk+iSXAWcBLwfeASxJshn4MHBqVd2xjfaRblr35cAm4MdTjvd14FXA+V2/zwN7LMCpSpIkDZUFv6evqm6k9zEt0zl1mv63T9cO3A48t6puT7IvvVG9G7ptRvu2/zC9sChJktSsgT7IcR/tClyY5H707t37k6q6c8A1SZIkDaVFG/qq6qfA3T6XT5IkSXe3aEOfNN+2rFkx6BIkSZozC/7du5IkSVp4hj5JkqQGGPokSZIaYOiTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWqAoU+SJKkBSwddgDSsRlefN+gSmrBlzYpBlyBJTXCkT5IkqQGGPkmSpAYY+iRJkhqwXaEvya8k+VCSa5N8PclnkjxqrovrjrVbknd3x7o6ycVJjtjGNrfORy2SJEmL1b1+kCNJgHOAs6rqpK5tObA78M25LQ+A9wLXA/tV1V1J9gF+bR6OI0mStMPanpG+JwO/qKp3TTZU1UbgS0nemOSqJJuTnDi5PsnLurYrk6zp2v4oyeVd28eT7Dr1QEn2BY4AXlVVd3XHuq6qzuvWv7g73lVJTptm+92SXJBkQ3f8Z2/H+UqSJC162/ORLQcC66dpfw6wHDgYWAZcnuTiru044Iiq+nmSh3T9P1FV7wFI8j+B5wNvnbLPA4CNVbV16sGSHAY8j14oDPC1JBdV1RV93W4Hjq+qnyRZBlya5Nyqqu04b0mSpEVrLh/kOAo4u6q2VtUPgIuAxwFPBd5fVT8HqKofdf0PTHJJks3AyfQC3r093jlV9bOquhX4BPDrU/oE+Kskm4AvAA+nNw19N0lWJRlPMj4xMXEvS5EkSRpu2xP6rgYOm6Y9M/QPMN3I2pnAi6rqIOC1wM5JliTZ2P2c0R3r4CTT1TnT8fqdDIwAh1XVcuAHwM7TdayqtVU1VlVjIyMjs9i1JEnS4rE9oe+LwP2T/NFkQ5LHAbcAJ3bBbQQ4GrgMOB/4g8l79vqmdx8A3JjkfvTCGd0o4fLu5zVVdS0wDry2e4CEJPt19+ZdDByXZNckvwQcD1wypdYHATdV1S+SPBnYezvOV5IkadG71/f0VVUlOR7430lW07tvbgtwGrAbcCW9kb2XVdX3gc91T/eOJ7kT+AzwSuDVwNeAG4DN9ELgdP4Q+GvgW0l+DvwQeGlVbUhyJr1gCfDeKffzAXwQ+D9JxoGNwDX39nwlSZJ2BPGZhrsbGxur8fHxQZehAfO7dxeG370rSfdNkvVVNbatfn4jhyRJUgMMfZIkSQ3Yns/pk5rgtKMkaUfiSJ8kSVIDDH2SJEkNMPRJkiQ1wNAnSZLUAEOfJElSAwx9kiRJDTD0SZIkNcDQJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNWDroAqRhNbr6vEGXMHS2rFkx6BIkSdvJkT5JkqQGGPokSZIaMOvQl+QRST6V5J+TXJfkbUnuvz0HTbIuydj2bCtJkqR7b1ahL0mATwCfrKr9gP2AXYA3zGNtkiRJmiOzHek7Fri9qt4PUFVbgf8G/H6SFyV522THJJ9Ocky3/M4k40muTvLa6Xac5BlJNiS5MskFXdtDknwyyaYklyZ5bNd+epKzkpyfZEuS5yR5Q5LNST6X5H5dvy1J/irJV7vjH5rkH5Ncm+SPt/NaSZIkLVqzDX0HAOv7G6rqJ8AW7vkJ4D+vqjHgscCTJsPbpCQjwHuA36qqg4Hf7la9Friiqh4LvBL4QN9m+wIrgGcDfw9cWFUHAbd17ZO+XVVPAC4BzgROAB4PnDG7U5YkSdpxzDb0BagZ2u/J7yTZAFxBLzg+Zsr6xwMXV9X1AFX1o679KODvurYvAg9N8qBu3Wer6hfAZmAJ8LmufTMw2rfvc/vav1ZVP62qCeD2JA++24kkq7pRwfGJiYltnJYkSdLiMtvQdzXw7x68SPJAYHfgh1P2s3O3/pHAS4CndCN2502u698Nsw+Tk/3uAKiqu4BfVNVk+138+1HHO/ra7+hrn9qPbn9rq2qsqsZGRkamObwkSdLiNdvQdwGwa5LfB0iyBPhr4G3A9cDyJDsl2RM4vNvmgcDPgB8n2R145jT7/Sq9ad9Hdvt9SNd+MXBy13YMcHM3nSxJkqTtMKtv5KiqSnI88PYkrwZGgA9X1V92T/ZeT28a9SpgQ7fNlUmuoDdKeB3w5Wn2O5FkFfCJJDsBNwFPA04H3p9kE/Bz4JT7dpqSJElty7/Njt6LjZInAmcDz6mq9dvqv9iMjY3V+Pj4oMvQgPk1bHfn17BJ0vBJsr57cPYebdd371bVV4C9t2dbSZIkLTy/hk2SJKkB2zXSJ7XAqUxJ0o7EkT5JkqQGGPokSZIaYOiTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWqAoU+SJKkBhj5JkqQGGPokSZIasHTQBUjDanT1eYMuQZJ2aFvWrBh0CU1xpE+SJKkBhj5JkqQGGPokSZIasOChL8nWJBuTXJlkQ5In3od9fWUua5MkSdpRDeJBjtuqajlAkv8EvA540vbsqKq2OzBKkiS1ZNDTuw8EbgFIzxuTXJVkc5ITJzsleWmSy5NsSvLavvZbu9/HJFmX5GNJrknywSTp1j2ra/tSkrck+fQCn6MkSdLADWKkb5ckG4GdgT2AY7v25wDLgYOBZcDlSS4GDgL2Aw4HApyb5OiqunjKfg8BDgC+B3wZODLJOPBu4Oiquj7J2TMVlWQVsApgr732mpMTlSRJGhaDGOm7raqWV9X+wDOAD3SjckcBZ1fV1qr6AXAR8Djg6d3PFcAGYH96IXCqy6rqO1V1F7ARGO36XldV13d9Zgx9VbW2qsaqamxkZGROTlSSJGlYDPTDmavqq0mWASP0RvGmE+B1VfXubezujr7lrfTObaZ9SpIkNWWg9/Ql2R9YAvwQuBg4McmSJCPA0cBlwD8Cf5Bkt26bhyd52CwPcQ2wT5LR7vWJM3eVJEnacQ3ynj7ojcSdUlVbk5wDPAG4EijgZVX1feD7SX4N+Gr3bMatwHOBm7Z1oKq6LckLgM8luZleiJQkSWrOgoe+qloyQ3sBL+1+pq57M/Dmadp3636vA9b1tb+or9uFVbV/d9/g24Hx+1C+JEnSojToj2xZCH/UjSxeDTyI3tO8kiRJTRnogxwLoar+F/C/Bl2HJEnSIO3woU/aXlvWrBh0CZIkzZkWpnclSZKaZ+iTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWqAoU+SJKkBhj5JkqQGGPokSZIasHTQBUjDanT1eYMuQZK0yG1Zs2LQJfwrR/okSZIaYOiTJElqgKFPkiSpAfMe+pIcn6SS7D/fx5IkSdL0FmKkbyXwJeCkBTiWJEmSpjGvoS/JbsCRwPPpQl+SY5JclOQjSb6ZZE2Sk5NclmRzkn27fr+R5GtJrkjyhSS7d+2fSbKx+/lxklOS7Jzk/d32VyR5ctf31CSfSPK5JP+c5A3zeb6SJEnDar5H+o4DPldV3wR+lOTQrv1g4M+Ag4DfAx5VVYcD7wX+tOvzJeDxVXUI8CHgZQBV9ayqWk4vSN4AfBJ4YbfuIHoji2cl2bnbz3LgxO5YJybZcx7PV5IkaSjNd+hbSS+w0f1e2S1fXlU3VtUdwLXA+V37ZmC0W34E8I9JNgMvBQ6Y3GmSZcDfAb9bVT8GjupeU1XX0AuDj+q6X1BVP66q24GvA3tPV2iSVUnGk4xPTEzct7OWJEkaMvP24cxJHgocCxyYpIAlQAGfAe7o63pX3+u7+mp6K/A3VXVukmOA07v9LqEXIM+oqqsmD3cPpfQfaysznHNVrQXWAoyNjdW2z1CSJGnxmM+RvhOAD1TV3lU1WlV7AtfTG5WbjQcB3+2WT+lrXwNsqqoP9bVdDJwMkORRwF7AP92X4iVJknYk8xn6VgLnTGn7OPC7s9z+dOCjSS4Bbu5rfwnw9L6HOX4TeAewpJsK/jBwajd1LEmSJCBVzmRONTY2VuPj44MuQwPmd+9Kku6rhfju3STrq2psW/38Rg5JkqQGGPokSZIaMG9P70qL3UIMyUuStFAc6ZMkSWqAoU+SJKkBhj5JkqQGGPokSZIaYOiTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWrA0kEXIA2r0dXnDboESVr0tqxZMegS1HGkT5IkqQGGPkmSpAYY+iRJkhowdKEvyfFJKsn+92EfZyY5YS7rkiRJWsyGLvQBK4EvAScNuhBJkqQdxVCFviS7AUcCz6cLfUmOSXJxknOSfD3Ju5Ls1K27NclfJ9mQ5IIkI9Ps87AkFyVZn+Qfk+yxoCclSZI0BIYq9AHHAZ+rqm8CP0pyaNd+OPDfgYOAfYHndO2/BGyoqkOBi4C/6N9ZkvsBbwVOqKrDgPcBfznvZyFJkjRkhi30rQQ+1C1/qHsNcFlVXVdVW4GzgaO69ruAD3fLf9/XPunRwIHA55NsBF4FPGK6AydZlWQ8yfjExMScnIwkSdKwGJoPZ07yUOBY4MAkBSwBCvhM97vf1NcztQe4uqqesK3jV9VaYC3A2NjYTPuXJElalIZppO8E4ANVtXdVjVbVnsD19EbvDk/yyO5evhPpPegBvfonn9L93b72Sf8EjCR5AvSme5McMN8nIkmSNGyGKfStBM6Z0vZxemHuq8Aa4Cp6QXCy38+AA5KspzdKeEb/xlV1J71Q+PokVwIbgSfO1wlIkiQNq6GZ3q2qY6Zpe0uSTcBLqurEGbZ7NfDqKW2n9i1vBI6e02IlSZIWmWEa6ZMkSdI8GZqRvplU1Tpg3QzrdlvQYiRJkhapoQ990qBsWbNi0CVIkjRnnN6VJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWqAoU+SJKkBhj5JkqQGGPokSZIaYOiTJElqgKFPkiSpAUsHXYA0rEZXnzfoEubEljUrBl2CJGkIONInSZLUAEOfJElSAwx9kiRJDVjwe/qSPBS4oHv5K8BWYKJ7fXhV3Xkf979Pt58P3Zf9SJIk7UgWPPRV1Q+B5QBJTgdurao3zeEh9gFOAgx9kiRJnaGa3k3ysiRXdT9/2rW9LskL+/q8PskLkuyU5G+6vpuTnNB1WQM8OcnGJP81yb5JLklyRZL1SY4YxLlJkiQN0tB8ZEuSw4GTgcOBJcBlSS4C3ktv1O7tSZYAvw0c1v1+DHAwMAJcnuRiYDXwoqo6rtvvrsDTqur2JPsDZwF3C35JVgGrAPbaa6/5PFVJkqQFN0wjfb8OfLyqfl5VPwU+CRxVVdcCP01yEPBM4LKqugU4CviHqtpaVd8HvgSMTbPf+wN/m+QqeuHxMdMdvKrWVtVYVY2NjIzM/dlJkiQN0NCM9AG5h3V/C5wKjALvnkX/fv8d+DbwXOB+wK3bV54kSdLiNUwjfRcDxyfZJcluwLOBS7p1Hwd+g94DIF/o639SkiVJdgeOBMaBnwIP6Nvvg4Abq6qAU5h9WJQkSdphDM1IX1VdluRs4PKu6Z1Vtblbd3t3v973q+qubv3HgMcDVwIFvLiqbkry/4AlSa6kN0L4NuBjSVbSC4x3LNxZSZIkDYeBhr6qOn3K6zcAb5jaL8lO9B7wOK6v713Ai6fZ553AMVOaD+pbftV2FyxJkrRIDdP07rS6BziuBT5XVdcNuh5JkqTFaGimd2fSTfE+ctB1qD1b1qwYdAmSJM2ZoR/pkyRJ0n1n6JMkSWqAoU+SJKkBhj5JkqQGGPokSZIaYOiTJElqgKFPkiSpAYY+SZKkBhj6JEmSGmDokyRJaoChT5IkqQGGPkmSpAYY+iRJkhpg6JMkSWrA0kEXIA2r0dXnDbqEpm1Zs2LQJUjSDsWRPkmSpAYY+iRJkhpg6JMkSWrAogp9SbYm2ZjkyiQbkjyxax9NctWUvqcneUm3fGaS67ttNyR5wiDqlyRJGpRFFfqA26pqeVUdDLwCeN292PalVbUcWA28e16qkyRJGlKLLfT1eyBwy3ZsdzHwq3NciyRJ0lBbbB/ZskuSjcDOwB7AsX3r9u3WTfoV4E3T7OM3gM1TG5OsAlYB7LXXXnNWsCRJ0jBYbKHvtm6Klu6+vA8kObBbd+3kum796VO2fWOSVwETwPOn7riq1gJrAcbGxmoeapckSRqYxRb6/lVVfTXJMmBklpu8tKo+Np81SZIkDatFe09fkv2BJcAPB12LJEnSsFtsI3279N23F+CUqtqaZJA1SZIkDb1FFfqqaskM7VuAA6e0nd63fOp81iVJkjTsFu30riRJkmbP0CdJktSARTW9Ky2kLWtWDLoESZLmjCN9kiRJDTD0SZIkNcDQJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPRJkiQ1wNAnSZLUAEOfJElSAwx9kiRJDVg66AK0uIyuPm/QJSyYLWtWDLoESZLmjCN9kiRJDTD0SZIkNcDQJ0mS1IBFGfqS3Nr9Hk1yW5KNSa5M8pUkj+7WHZOkkjy/b7tDuraXDKp2SZKkQViUoW+Ka6tqeVUdDJwFvLJv3WbgxL7XJwFXLmRxkiRJw2BHCH39Hgjc0vf6/wI7J9k9SYBnAJ8dSGWSJEkDtCN8ZMu+STYCDwB2BY6Ysv5jwG8DVwAbgDsWtjxJkqTB2xFG+iand/cFTgPWTln/EXqhbyVw9kw7SbIqyXiS8YmJifmrVpIkaQB2hNDX71zg6P6Gqvo+8AvgacAFM21YVWuraqyqxkZGRua3SkmSpAW2I0zv9jsKuHaa9tcAD6uqrb1b+yRJktqyI4S+yXv6AtwJ/OHUDlX1lQWvSpIkaYgsytBXVbt1v7cAu8zQZx2wbpr20+evMkmSpOG0o93TJ0mSpGkY+iRJkhqwKKd3NThb1qwYdAmSJGk7ONInSZLUAEOfJElSAwx9kiRJDTD0SZIkNcDQJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPRJkiQ1wNAnSZLUAEOfJElSA5YOugBpWI2uPm/QJUiSFtiWNSsGXcK8caRPkiSpAYY+SZKkBsxJ6EtSSf6u7/XSJBNJPt29/s0kq+fiWPeyrv2TbExyRZLDkrxgoWuQJEkaBnM10vcz4MAku3SvnwZ8d3JlVZ1bVWtms6P0zFVdxwGfqqpDgB8Chj5JktSkuZze/SwweffjSuDsyRVJTk3ytm559yTnJLmy+3liktEk30jyDmADsGeSlUk2J7kqyeu7bZckObNr25zkv3Xty5NcmmRTt+9fTvIs4DTgD5NcCKwB9u1G/t44h+ctSZI09Oby6d0PAa/ppnQfC7wP+PVp+r0FuKiqjk+yBNgN+GXg0cDzquoFSf4j8HrgMOAW4PwkxwHfBh5eVQcCJHlwt88PAH9aVRclOQP4i6o6Lcm7gFur6k1JRoEDq2r5HJ6zJEnSojBnI31VtQkYpTfK95l76Hos8M5um61V9eOu/YaqurRbfhywrqomqupfgA8CRwPXAfskeWuSZwA/SfIg4MFVdVG37Vld33slyaok40nGJyYm7u3mkiRJQ22un949F3gTfVO798LP+pYzXYequgU4GFgHvBB473YcZ1pVtbaqxqpqbGRkZK52K0mSNBTmOvS9DzijqjbfQ58LgD+Bf71H74HT9Pka8KQky7op4JXARUmWATtV1ceBVwOHdiOFtySZnEr+PeCiafb5U+AB23VWkiRJi9ychr6q+k5VvXkb3f4MeHKSzcB64IBp9nMj8ArgQuBKYENVfQp4OLAuyUbgzK4PwCnAG5NsApYDZ0yzzx8CX+4eAvFBDkmS1JRU1aBrGDpjY2M1Pj4+6DI0YH4NmyS1ZzF+DVuS9VU1tq1+fiOHJElSAwx9kiRJDZjLz+mTdiiLcYhfkqSZONInSZLUAEOfJElSAwx9kiRJDTD0SZIkNcDQJ0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPSHXpO1AAAGX0lEQVRJkiQ1wNAnSZLUAEOfJElSA5YOugBpWI2uPm/QJUhsWbNi0CVI2kE40idJktQAQ58kSVIDDH2SJEkNWBShL8mts+hzWpJdZ9FvXZKxualMkiRpcVgUoW+WTgO2GfokSZJatKhCX5JjupG6jyW5JskH0/Nfgf8IXJjkwq7v05N8NcmGJB9Nsttgq5ckSRqcRRX6OofQG9V7DLAPcGRVvQX4HvDkqnpykmXAq4CnVtWhwDjw4nvaaZJVScaTjE9MTMzvGUiSJC2wxRj6Lquq71TVXcBGYHSaPo+nFwq/nGQjcAqw9z3ttKrWVtVYVY2NjIzMdc2SJEkDtRg/nPmOvuWtTH8OAT5fVSsXpiRJkqThthhH+mbyU+AB3fKlwJFJfhUgya5JHjWwyiRJkgZsRwp9a4HPJrmwqiaAU4Gzk2yiFwL3H2RxkiRJg7Qopnerarfu9zpgXV/7i/qW3wq8te/1F4HHTbOvY+avUkmSpOG0I430SZIkaQaLYqRPGoQta1YMugRJkuaMI32SJEkNMPRJkiQ1wNAnSZLUAEOfJElSAwx9kiRJDTD0SZIkNcDQJ0mS1IBU1aBrGDpJJoAbBl3HPFoG3DzoIhYBr9PseJ1mz2s1O16n2fE6zU4L12nvqhrZVidDX4OSjFfV2KDrGHZep9nxOs2e12p2vE6z43WaHa/Tv3F6V5IkqQGGPkmSpAYY+tq0dtAFLBJep9nxOs2e12p2vE6z43WaHa9Tx3v6JEmSGuBInyRJUgMMfQ1J8sYk1yTZlOScJA/u2keT3JZkY/fzrkHXOmhJnpHkn5J8K8nqQdczLJLsmeTCJN9IcnWSP+vaT0/y3b730LMGXeugJdmSZHN3Pca7tock+XySf+5+//Kg6xykJI/ue89sTPKTJKf5foIk70tyU5Kr+tqmff+k5y3dv1ebkhw6uMoX1gzXyb91M3B6tyFJng58sar+JcnrAarq5UlGgU9X1YGDrG9YJFkCfBN4GvAd4HJgZVV9faCFDYEkewB7VNWGJA8A1gPHAb8D3FpVbxpogUMkyRZgrKpu7mt7A/CjqlrT/c/EL1fVywdV4zDp/rv7LnAE8Dwafz8lORq4FfjA5L/NM71/ulD8p8Cz6F2/N1fVEYOqfSHNcJ38WzcDR/oaUlXnV9W/dC8vBR4xyHqG2OHAt6rquqq6E/gQ8OwB1zQUqurGqtrQLf8U+Abw8MFWtag8GzirWz6LXmBWz1OAa6tqR/5g/FmrqouBH01pnun982x6oaeq6lLgwd3/oO3wprtO/q2bmaGvXX8AfLbv9SOTXJHkoiS/PqiihsTDgW/3vf4OBpu76f6v+RDga13Ti7rplPe1Pm3ZKeD8JOuTrOradq+qG6EXoIGHDay64XMScHbfa99PdzfT+8d/s2bm37o+hr4dTJIvJLlqmp9n9/X5c+BfgA92TTcCe1XVIcCLgX9I8sCFr35oZJo274Pok2Q34OPAaVX1E+CdwL7Acnrvp78eYHnD4siqOhR4JvDCbhpK00jyH4DfBD7aNfl+unf8N2sa/q27u6WDLkBzq6qeek/rk5wC/GfgKdXd0FlVdwB3dMvrk1wLPAoYn+dyh9V3gD37Xj8C+N6Aahk6Se5HL/B9sKo+AVBVP+hb/x7g0wMqb2hU1fe63zclOYfebQM/SLJHVd3YTb/dNNAih8czgQ2T7yPfTzOa6f3jv1lT+Ldueo70NSTJM4CXA79ZVT/vax/pbqImyT7AfsB1g6lyKFwO7Jfkkd0IxEnAuQOuaSgkCfC3wDeq6m/62vvvHzoeuGrqti1J8kvdgy4k+SXg6fSuybnAKV23U4BPDabCobOSvqld308zmun9cy7w+91TvI8Hfjw5Ddwi/9bNzKd3G5LkW8D9gR92TZdW1R8n+S3gDHrD4FuBv6iq/zOgModC9zTc/waWAO+rqr8ccElDIclRwCXAZuCurvmV9P5oL6c3pbQF+C+N/9HZBzine7kU+Ieq+sskDwU+AuwF/F/gt6tq6s36TUmyK7370fapqh93bX9H4++nJGcDxwDLgB8AfwF8kmneP93/jL0NeAbwc+B5VdXE6NUM1+kV+LduWoY+SZKkBji9K0mS1ABDnyRJUgMMfZIkSQ0w9EmSJDXA0CdJktQAQ58kSVIDDH2SJEkNMPRJkiQ14P8DWj1vl4t3YBcAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pc = pds.Series(price_change)\n",
"#pc.sort_values()\n",
"pc.plot(kind='barh',figsize=(10,7))"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"ename": "ConnectionError",
"evalue": "HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/AAPL/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mgaierror\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 158\u001b[0m conn = connection.create_connection(\n\u001b[0;32m--> 159\u001b[0;31m (self._dns_host, self.port), self.timeout, **extra_kw)\n\u001b[0m\u001b[1;32m 160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/util/connection.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSOCK_STREAM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[0;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[1;32m 744\u001b[0m \u001b[0maddrlist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 745\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 746\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mgaierror\u001b[0m: [Errno 8] nodename nor servname provided, or not known",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mNewConnectionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 599\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbody\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mheaders\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 600\u001b[0;31m chunked=chunked)\n\u001b[0m\u001b[1;32m 601\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 343\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_validate_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 344\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mSocketTimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mBaseSSLError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36m_validate_conn\u001b[0;34m(self, conn)\u001b[0m\n\u001b[1;32m 838\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'sock'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# AppEngine might not have `.sock`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 839\u001b[0;31m \u001b[0mconn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 840\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[0;31m# Add certificate verification\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 301\u001b[0;31m \u001b[0mconn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_new_conn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 302\u001b[0m \u001b[0mhostname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connection.py\u001b[0m in \u001b[0;36m_new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 167\u001b[0m raise NewConnectionError(\n\u001b[0;32m--> 168\u001b[0;31m self, \"Failed to establish a new connection: %s\" % e)\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNewConnectionError\u001b[0m: : Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax_retries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 449\u001b[0;31m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 450\u001b[0m )\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/connectionpool.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 637\u001b[0m retries = retries.increment(method, url, error=e, _pool=self,\n\u001b[0;32m--> 638\u001b[0;31m _stacktrace=sys.exc_info()[2])\n\u001b[0m\u001b[1;32m 639\u001b[0m \u001b[0mretries\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/urllib3/util/retry.py\u001b[0m in \u001b[0;36mincrement\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 397\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnew_retry\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_exhausted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 398\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMaxRetryError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_pool\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merror\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mResponseError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcause\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 399\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mMaxRetryError\u001b[0m: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/AAPL/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mConnectionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mclosing_prices\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mclosing_prices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'apple'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"AAPL\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'yahoo'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Close'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mclosing_prices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'google'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDataReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"GOOG\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'yahoo'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Close'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mclosing_prices\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/data.py\u001b[0m in \u001b[0;36mDataReader\u001b[0;34m(name, data_source, start, end, retry_count, pause, session, access_key)\u001b[0m\n\u001b[1;32m 308\u001b[0m \u001b[0madjust_price\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[0mretry_count\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mretry_count\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpause\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpause\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 310\u001b[0;31m session=session).read()\n\u001b[0m\u001b[1;32m 311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 312\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mdata_source\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"google\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/base.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mstring_types\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 209\u001b[0m df = self._read_one_data(self.url,\n\u001b[0;32m--> 210\u001b[0;31m params=self._get_params(self.symbols))\n\u001b[0m\u001b[1;32m 211\u001b[0m \u001b[0;31m# Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msymbols\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/yahoo/daily.py\u001b[0m in \u001b[0;36m_read_one_data\u001b[0;34m(self, url, params)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0murl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msymbol\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 128\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 129\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_response\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 130\u001b[0m \u001b[0mptrn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mr'root\\.App\\.main = (.*?);\\n}\\(this\\)\\);'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/pandas_datareader/base.py\u001b[0m in \u001b[0;36m_get_response\u001b[0;34m(self, url, params, headers)\u001b[0m\n\u001b[1;32m 130\u001b[0m response = self.session.get(url,\n\u001b[1;32m 131\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 132\u001b[0;31m headers=headers)\n\u001b[0m\u001b[1;32m 133\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstatus_code\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcodes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mok\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, url, **kwargs)\u001b[0m\n\u001b[1;32m 544\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 545\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'allow_redirects'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 546\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'GET'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 547\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 548\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36mrequest\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 531\u001b[0m }\n\u001b[1;32m 532\u001b[0m \u001b[0msend_kwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 533\u001b[0;31m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprep\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0msend_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 534\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 535\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/sessions.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 645\u001b[0m \u001b[0;31m# Send the request\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 646\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madapter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 647\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;31m# Total elapsed time of the request (approximately)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/anaconda3/envs/snorkel/lib/python3.6/site-packages/requests/adapters.py\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mSSLError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mConnectionError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrequest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 517\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 518\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mClosedPoolError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mConnectionError\u001b[0m: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/AAPL/history?period1=1483239600&period2=1572577199&interval=1d&frequency=1d&filter=history (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))"
]
}
],
"source": [
"closing_prices = pds.DataFrame()\n",
"closing_prices['apple'] = web.DataReader(\"AAPL\", 'yahoo', start, end)['Close']\n",
"closing_prices['google'] = web.DataReader(\"GOOG\", 'yahoo', start, end)['Close']\n",
"closing_prices.plot()"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"# On a aussi des données de la World Bank"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"from pandas_datareader import wb\n",
"data = wb.download(indicator='NY.GDP.PCAP.KD', \n",
" country=['US','CA','FR'],\n",
" start=2010,end=2017)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" \n",
" NY.GDP.PCAP.KD \n",
" \n",
" \n",
" country \n",
" year \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Canada \n",
" 2017 \n",
" 51150.754621 \n",
" \n",
" \n",
" 2016 \n",
" 50263.834326 \n",
" \n",
" \n",
" 2015 \n",
" 50279.585838 \n",
" \n",
" \n",
" 2014 \n",
" 50309.159896 \n",
" \n",
" \n",
" 2013 \n",
" 49400.458302 \n",
" \n",
" \n",
" 2012 \n",
" 48788.333034 \n",
" \n",
" \n",
" 2011 \n",
" 48466.850914 \n",
" \n",
" \n",
" 2010 \n",
" 47450.318470 \n",
" \n",
" \n",
" France \n",
" 2017 \n",
" 43001.591285 \n",
" \n",
" \n",
" 2016 \n",
" 42054.531258 \n",
" \n",
" \n",
" 2015 \n",
" 41765.244027 \n",
" \n",
" \n",
" 2014 \n",
" 41478.246966 \n",
" \n",
" \n",
" 2013 \n",
" 41282.990807 \n",
" \n",
" \n",
" 2012 \n",
" 41258.274735 \n",
" \n",
" \n",
" 2011 \n",
" 41329.035369 \n",
" \n",
" \n",
" 2010 \n",
" 40638.334004 \n",
" \n",
" \n",
" United States \n",
" 2017 \n",
" 53356.236236 \n",
" \n",
" \n",
" 2016 \n",
" 52534.365284 \n",
" \n",
" \n",
" 2015 \n",
" 52099.269760 \n",
" \n",
" \n",
" 2014 \n",
" 51015.135477 \n",
" \n",
" \n",
" 2013 \n",
" 50161.075821 \n",
" \n",
" \n",
" 2012 \n",
" 49596.421917 \n",
" \n",
" \n",
" 2011 \n",
" 48862.424944 \n",
" \n",
" \n",
" 2010 \n",
" 48466.823375 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NY.GDP.PCAP.KD\n",
"country year \n",
"Canada 2017 51150.754621\n",
" 2016 50263.834326\n",
" 2015 50279.585838\n",
" 2014 50309.159896\n",
" 2013 49400.458302\n",
" 2012 48788.333034\n",
" 2011 48466.850914\n",
" 2010 47450.318470\n",
"France 2017 43001.591285\n",
" 2016 42054.531258\n",
" 2015 41765.244027\n",
" 2014 41478.246966\n",
" 2013 41282.990807\n",
" 2012 41258.274735\n",
" 2011 41329.035369\n",
" 2010 40638.334004\n",
"United States 2017 53356.236236\n",
" 2016 52534.365284\n",
" 2015 52099.269760\n",
" 2014 51015.135477\n",
" 2013 50161.075821\n",
" 2012 49596.421917\n",
" 2011 48862.424944\n",
" 2010 48466.823375"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" NY.GDP.PCAP.KD \n",
" \n",
" \n",
" country \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Canada \n",
" 49513.661925 \n",
" \n",
" \n",
" France \n",
" 41601.031056 \n",
" \n",
" \n",
" United States \n",
" 50761.469102 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NY.GDP.PCAP.KD\n",
"country \n",
"Canada 49513.661925\n",
"France 41601.031056\n",
"United States 50761.469102"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(level=0).mean()"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" id \n",
" name \n",
" source \n",
" sourceNote \n",
" sourceOrganization \n",
" topics \n",
" unit \n",
" \n",
" \n",
" \n",
" \n",
" 7502 \n",
" IT.CEL.COVR.ZS \n",
" Population covered by mobile cellular network (%) \n",
" WDI Database Archives \n",
" \n",
" b'' \n",
" \n",
" \n",
" \n",
" \n",
" 7557 \n",
" IT.MOB.COV.ZS \n",
" Population coverage of mobile cellular telepho... \n",
" Africa Development Indicators \n",
" Please cite the International Telecommunicatio... \n",
" b'International Telecommunication Union, World... \n",
" \n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id name \\\n",
"7502 IT.CEL.COVR.ZS Population covered by mobile cellular network (%) \n",
"7557 IT.MOB.COV.ZS Population coverage of mobile cellular telepho... \n",
"\n",
" source \\\n",
"7502 WDI Database Archives \n",
"7557 Africa Development Indicators \n",
"\n",
" sourceNote \\\n",
"7502 \n",
"7557 Please cite the International Telecommunicatio... \n",
"\n",
" sourceOrganization topics unit \n",
"7502 b'' \n",
"7557 b'International Telecommunication Union, World... "
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"wb.search('population.*cell.*%')"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" IT.MOB.COV.ZS \n",
" \n",
" \n",
" country \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Africa \n",
" 84.770645 \n",
" \n",
" \n",
" Benin \n",
" 99.000000 \n",
" \n",
" \n",
" Botswana \n",
" 96.000000 \n",
" \n",
" \n",
" Cape Verde \n",
" 96.000000 \n",
" \n",
" \n",
" Central African Republic \n",
" 56.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" IT.MOB.COV.ZS\n",
"country \n",
"Africa 84.770645\n",
"Benin 99.000000\n",
"Botswana 96.000000\n",
"Cape Verde 96.000000\n",
"Central African Republic 56.000000"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cov = wb.download(indicator=[\"IT.MOB.COV.ZS\"], country='all', \n",
" start=2011, end=2011).dropna().droplevel(\"year\")\n",
"cov.head()"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"ind = ['NY.GDP.PCAP.KD']#, 'IT.MOB.COV.ZS']\n",
"dat2 = wb.download(indicator=ind, country='all', \n",
" start=2011, end=2011).dropna().droplevel(\"year\")\n",
"#dat2.columns = ['gdp', 'cellphone']"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" gdp \n",
" cellphone \n",
" \n",
" \n",
" country \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Benin \n",
" 758.575276 \n",
" 99.0 \n",
" \n",
" \n",
" Botswana \n",
" 6728.201954 \n",
" 96.0 \n",
" \n",
" \n",
" Central African Republic \n",
" 504.746050 \n",
" 56.0 \n",
" \n",
" \n",
" Chad \n",
" 862.919428 \n",
" 75.0 \n",
" \n",
" \n",
" Congo, Dem. Rep. \n",
" 345.266115 \n",
" 50.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" gdp cellphone\n",
"country \n",
"Benin 758.575276 99.0\n",
"Botswana 6728.201954 96.0\n",
"Central African Republic 504.746050 56.0\n",
"Chad 862.919428 75.0\n",
"Congo, Dem. Rep. 345.266115 50.0"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fusion = dat2.join(cov).dropna()\n",
"fusion.columns = ['gdp', 'cellphone']\n",
"fusion.head()"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pylab.plot((fusion[\"gdp\"]),(fusion[\"cellphone\"]),\"o\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}