{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "fQFD6mGbMIub"
},
"source": [
"# **SNT - Les données structurées et leur traitement**\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "My2uwQok3V45"
},
"source": [
"\n",
"# Partie A\n",
"\n",
"\n",
"* **le tri**\n",
" * ordonner les objets selon l'un de leur descripteur ;\n",
" * sur plusieurs critères ;\n",
" * tri sur des valeurs textuelles.\n",
"* **le filtre**\n",
" * ne retenir que les objets pour lesquels un critère est vérifié ;\n",
" * combiner les critères : et/ou. \n",
"* **le calcul individuel**\n",
"* **le calcul agrégatif**\n",
" * faire un calcul sur plusieurs des objets (tous ou une sélection).\n",
" \n",
"Pour les questions $2$ à $8$ quelques réponses en images (*à \"afficher\" pour agrandir*) en appliquant des filtres/tris adaptés :\n",
"\n",
"**2. Combien de personnes étaient âgées de $10$ ans ?**\n",
"\n",
"\n",
"**3. Quel est le prix du billet le plus élevé ?**\n",
"\n",
"\n",
"**4. Combien de femmes en $1$-ère classe voyageaient sur le Titanic ?**\n",
"\n",
"\n",
"\n",
"**Quel âge pour la plus jeune ?**\n",
"\n",
"\n",
"\n",
"**Pour la plus âgée ?**\n",
"\n",
"\n",
"**5. En considérant que l'on est enfant lorsqu'on a moins de $18$ ans, déterminer le nombre de\n",
"femmes et d'enfants qui ont survécu.**\n",
"\n",
"**Que penser alors de l'adage \"les femmes et les enfants d'abord\" ?**\n",
"\n",
"\n",
"**6. Quel est le tarif moyen du billet des personnes qui voyageaient en $1$-ère classe ?**\n",
"\n",
"\n",
"**7. Quelle est la moyenne d'âge des personnes qui voyageaient en $3$-ème classe ?**\n",
"\n",
"\n",
"**8. Indiquer selon le genre des personnes de chaque classe, la fréquence du descripteur\n",
"\"Survivant\".**\n",
"\n",
"\n",
"Voir le fichier en ligne : [excel](https://acnicefr-my.sharepoint.com/:x:/g/personal/franck_lagrave_ac-nice_fr/EQou8zOTLWhBnVbAehDJqFABF_KCEfrH2bbR8yp1DWqElg?rtime=9wWHBEDa1kg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Partie B"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "8eexXBGvtPmw"
},
"outputs": [],
"source": [
"!pip install matplotlib\n",
"!pip install seaborn\n",
"%matplotlib inline\n",
"!pip install pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "s1z817sntYfO"
},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "wpNvNPYutkXW"
},
"outputs": [],
"source": [
"import pandas\n",
"data=pandas.read_csv('titanic.csv',sep=';')"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "HRBKUjoktzzs"
},
"source": [
"**1. Instruction $\\texttt{data.head()}$**"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "4H5MrLDWt-ef"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" classe | \n",
" survie | \n",
" nom | \n",
" sexe | \n",
" age | \n",
" tarif | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" Allen, Miss. Elisabeth Walton | \n",
" 2 | \n",
" 29.0 | \n",
" 211.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" Allison, Master. Hudson Trevor | \n",
" 1 | \n",
" 1.0 | \n",
" 152.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
" 0 | \n",
" Allison, Miss. Helen Loraine | \n",
" 2 | \n",
" 2.0 | \n",
" 152.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
" 0 | \n",
" Allison, Mr. Hudson Joshua Creighton | \n",
" 1 | \n",
" 30.0 | \n",
" 152.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
" 0 | \n",
" Allison, Mrs. Hudson Bessie Waldo Daniels | \n",
" 2 | \n",
" 25.0 | \n",
" 152.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" classe survie nom sexe age \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton 2 29.0 \n",
"1 1 1 Allison, Master. Hudson Trevor 1 1.0 \n",
"2 1 0 Allison, Miss. Helen Loraine 2 2.0 \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton 1 30.0 \n",
"4 1 0 Allison, Mrs. Hudson Bessie Waldo Daniels 2 25.0 \n",
"\n",
" tarif \n",
"0 211.0 \n",
"1 152.0 \n",
"2 152.0 \n",
"3 152.0 \n",
"4 152.0 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "I6yRswxxuDZd"
},
"source": [
"**1. Instruction $\\texttt{data.shape}$**\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "7bXn0phguTEd"
},
"outputs": [
{
"data": {
"text/plain": [
"(1309, 6)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "ijiol3V_uo9y"
},
"source": [
"**1. Instruction $\\texttt{data.dtypes}$**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 395
},
"colab_type": "code",
"id": "5F_1LygXuqHu",
"outputId": "c0ddf66c-8a08-47d6-d20f-3ac12358d0c3"
},
"outputs": [
{
"data": {
"text/plain": [
"classe int64\n",
"survie int64\n",
"nom object\n",
"sexe int64\n",
"age float64\n",
"tarif float64\n",
"dtype: object"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**2. Exécuter la commande $\\texttt{data.describe()}$ Quel est le prix moyen du billet ?**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" classe | \n",
" survie | \n",
" sexe | \n",
" age | \n",
" tarif | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 1309.000000 | \n",
" 1309.000000 | \n",
" 1309.000000 | \n",
" 1046.000000 | \n",
" 1308.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 2.294882 | \n",
" 0.381971 | \n",
" 1.355997 | \n",
" 29.897706 | \n",
" 33.363150 | \n",
"
\n",
" \n",
" std | \n",
" 0.837836 | \n",
" 0.486055 | \n",
" 0.478997 | \n",
" 14.414973 | \n",
" 51.751529 | \n",
"
\n",
" \n",
" min | \n",
" 1.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 2.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
" 21.000000 | \n",
" 8.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 3.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
" 28.000000 | \n",
" 14.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 3.000000 | \n",
" 1.000000 | \n",
" 2.000000 | \n",
" 39.000000 | \n",
" 31.000000 | \n",
"
\n",
" \n",
" max | \n",
" 3.000000 | \n",
" 1.000000 | \n",
" 2.000000 | \n",
" 80.000000 | \n",
" 512.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" classe survie sexe age tarif\n",
"count 1309.000000 1309.000000 1309.000000 1046.000000 1308.000000\n",
"mean 2.294882 0.381971 1.355997 29.897706 33.363150\n",
"std 0.837836 0.486055 0.478997 14.414973 51.751529\n",
"min 1.000000 0.000000 1.000000 0.000000 0.000000\n",
"25% 2.000000 0.000000 1.000000 21.000000 8.000000\n",
"50% 3.000000 0.000000 1.000000 28.000000 14.000000\n",
"75% 3.000000 1.000000 2.000000 39.000000 31.000000\n",
"max 3.000000 1.000000 2.000000 80.000000 512.000000"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**3 -2. Combien de personnes étaient âgées de $10$ ans ?**"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 1046.000000\n",
"mean 29.897706\n",
"std 14.414973\n",
"min 0.000000\n",
"25% 21.000000\n",
"50% 28.000000\n",
"75% 39.000000\n",
"max 80.000000\n",
"Name: age, dtype: float64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data['age'].describe() # remarque : pour statistiques descriptives "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" classe | \n",
" survie | \n",
" nom | \n",
" sexe | \n",
" age | \n",
" tarif | \n",
"
\n",
" \n",
" \n",
" \n",
" 828 | \n",
" 3 | \n",
" 0 | \n",
" Goodwin, Miss. Jessie Allis | \n",
" 2 | \n",
" 10.0 | \n",
" 47.0 | \n",
"
\n",
" \n",
" 1141 | \n",
" 3 | \n",
" 0 | \n",
" Rice, Master. Albert | \n",
" 1 | \n",
" 10.0 | \n",
" 29.0 | \n",
"
\n",
" \n",
" 1207 | \n",
" 3 | \n",
" 0 | \n",
" Skoog, Master. Karl Thorsten | \n",
" 1 | \n",
" 10.0 | \n",
" 28.0 | \n",
"
\n",
" \n",
" 1265 | \n",
" 3 | \n",
" 0 | \n",
" Van Impe, Miss. Catharina | \n",
" 2 | \n",
" 10.0 | \n",
" 24.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" classe survie nom sexe age tarif\n",
"828 3 0 Goodwin, Miss. Jessie Allis 2 10.0 47.0\n",
"1141 3 0 Rice, Master. Albert 1 10.0 29.0\n",
"1207 3 0 Skoog, Master. Karl Thorsten 1 10.0 28.0\n",
"1265 3 0 Van Impe, Miss. Catharina 2 10.0 24.0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('age == 10')\n",
"#data.loc[data['age']==10,:]\n",
"##liste individus avec #lignes => filtre age=10 #colonnes = : (toutes les colonnes)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('age == 10').shape[0]\n",
"#(data['age']==10).value_counts() #denombrement par booleen"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**3 -3. Quel est le prix du billet le plus élevé ?**"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"512.0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#data['tarif'].describe() # remarque : pour statistiques descriptives \n",
"data['tarif'].max()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"classe 3\n",
"survie 1\n",
"nom van Melkebeke, Mr. Philemon\n",
"sexe 2\n",
"age 80\n",
"tarif 512\n",
"dtype: object"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Par defaut axis = 0 ==> chaque colonne sera transmise à la fonction\n",
"#on peut aussi calculer sur les lignes plutôt que les colonnes :\n",
"#data.apply(lambda x: x.max(), axis = 1)\n",
"#la selection select_dtypes() permet d'exclure les variables non numériques\n",
"#data.select_dtypes(exclude=['object']).apply(lambda x: x.max(), axis = 1)\n",
"data.apply(lambda x: x.max()) \n",
"# (apply prend une fonction qui prend en argument une série) ; ici calcul aggrégat"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**4. Combien de femmes en $1$-ère classe voyageaient sur le Titanic ?\n",
"Quel âge pour la plus jeune ? Pour la plus âgée ?**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"144"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('sexe==2 and classe==1').shape[0]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.0"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('sexe==2 and classe==1')['age'].min()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"76.0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('sexe==2 and classe==1')['age'].max()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Combien de femmes en 1-ère classe voyageaient sur le Titanic ? 144\n",
"Quel âge pour la plus jeune ? 2.0\n",
"Quel âge pour la plus âgée ? 76.0\n"
]
}
],
"source": [
"groupe1=data.groupby('sexe') #scission des donnees selon le sexe\n",
"\n",
"#calculer la dimension du sous-DataFrame associé aux femmmes\n",
"#print(groupe1.get_group(2).shape)\n",
"\n",
"groupe2=data.groupby(['sexe','classe']) #scission des donnees selon le sexe et la classe\n",
"#groupe2.min()\n",
"#groupe2.get_group((2,1))\n",
"print(\"Combien de femmes en 1-ère classe voyageaient sur le Titanic ? \",\n",
" groupe2.get_group((2,1)).shape[0])\n",
"print(\"Quel âge pour la plus jeune ? \",groupe2.get_group((2,1))['age'].min())\n",
"print(\"Quel âge pour la plus âgée ? \",groupe2.get_group((2,1))['age'].max())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**5. En considérant que l'on est enfant lorsqu'on a moins de $18$ ans, déterminer le nombre de\n",
"femmes et d'enfants qui ont survécu.**\n",
"\n",
"**Que penser alors de l'adage \"les femmes et les enfants d'abord\" ?**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"370"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#data.shape[0]\n",
"#data.query('survie==1').shape[0]\n",
"data.query('survie==1 and (sexe==2 or age < 18)').shape[0] #!= 396\n",
"\n",
"#data.query('survie==1').isnull().sum()\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" sexe | \n",
" 1 | \n",
" 2 | \n",
" All | \n",
"
\n",
" \n",
" survie | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 682 | \n",
" 127 | \n",
" 809 | \n",
"
\n",
" \n",
" 1 | \n",
" 161 | \n",
" 339 | \n",
" 500 | \n",
"
\n",
" \n",
" All | \n",
" 843 | \n",
" 466 | \n",
" 1309 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"sexe 1 2 All\n",
"survie \n",
"0 682 127 809\n",
"1 161 339 500\n",
"All 843 466 1309"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pandas.crosstab(data[\"survie\"],data[\"sexe\"],margins=True)\n",
"#pandas.crosstab(data[\"survie\"],data[\"sexe\"],margins=True).iat[1,1] #valeur lig 1 et col 1,\n",
"#data.query('survie==1 and sexe==1 and age < 18').shape[0]\n",
"#data['age'].max()\n",
"#age_groups = pandas.cut(data['age'], bins=[0, 17, 80]) # creer 2 groupes age : (0, 17] et (17, 80]\n",
"#pandas.crosstab(age_groups, data['survie'],margins=True) # Total != valeurs age manquantes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Seaborn est une librairie qui vient s'ajouter à Matplotlib, remplace certains réglages par défaut et fonctions, et lui ajoute de nouvelles fonctionnalités (les fonctions de Matplotlib ne sont pas faites pour interagir avec les Dataframes de Pandas) en utilisant toujours Matplotlib \"sous le capot\"."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/fk/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:545: UserWarning: No labelled objects found. Use label='...' kwarg on individual plots.\n",
" warnings.warn(\"No labelled objects found. \"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAFnCAYAAACoxECQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUVXX+//HXEaEg8IaapQcFU8sYNfCCKDmJZVg5SPrF\n0Zpw0RVIuzFlOaXjrayTCuT3i5eilH5dTP2iVjOjplgq2Zkcbbx0MQRvRxodBcRMOd8/XJxfZ0A8\n1jlsZT8fa7lW+7P357Pf2xW+2LfPtjidTqcAAIBpNDG6AAAA0LAIfwAATIbwBwDAZAh/AABMhvAH\nAMBkCH8AAEzG0PDPy8tTfHy8IiMjlZCQoFWrVtW7/ebNmzVmzBj17t1bUVFRSktLU3FxccMUCwBA\nI2FY+Ofn58tmsyk9PV0FBQVKTk5WZmamNm7cWOf2X331le6//35FRkbqvffe0+LFi1VRUaFx48ap\nsrKygasHAODyZTFikh+n06lBgwZp6NCheu6551zt6enpOn78uJYsWVKrz0svvaRly5Zp8+bNatLk\n3O8su3fv1u9+9zvNnz9fgwYNarD6AQC4nDU1Yqd79+6Vw+HQwIED3dpjY2M1bdo0nTp1SldeeaXb\nOovF4vpTw9/f37WuPna73UuVAwBw+YiOjq6z3ZDw37dvnySpffv2bu1Wq1XV1dUqLS1Vly5d3NYl\nJSXp7bff1qJFi3TPPffI6XRq3rx56tSpk2JiYi64z/P9BQAA0BjVd+JrSPjX3KMPDAx0aw8KCpIk\nVVRU1Opz3XXX6bXXXtP48eNls9kkSZ06ddLChQsVEBBwwX1y9g8AwDmGhP8v8fXXX+uJJ57QiBEj\nNHz4cFVVVWn+/Pl6+OGH9e677yo4OLje/pz5AwDM5JI78w8JCZFU+wy/Zrlm/c/l5OSoQ4cOmjRp\nkqvtxhtv1IABA7R06VKlpKT4rmAAABoRQ17169ixoySptLTUrb24uFj+/v4KCwur1ee7775TRESE\nW1twcLBCQ0NdzxAAAIALMyT8w8PDZbVaVVhY6Na+YcMGxcTE1HkPv127drUm9CkvL9eRI0fUrl07\nX5YLAECjYtgkPxkZGVq2bJlWrFihAwcOaP78+SoqKlJaWpokyWazKTU11bX9Pffco+3bt2v27Nn6\n7rvvtGvXLj3zzDNq2rSpbr/9dqMOAwCAy45hD/wlJiaqsrJS2dnZcjgcCg8PV05OjqKioiRJZWVl\nKikpcW1/yy23KCcnRzk5OVq0aJH8/f3Vo0cP5eXluW4jAACACzNkhr+GZrfbedofAGAq9WUfX/UD\nAMBkCH8AAEyG8AcAwGQIfwBALVlZWYqPj1dWVpbRpcAHCH8AgJuqqioVFBRIklauXKmqqiqDK4K3\nEf4AADenT59WzYtg1dXVOn36tMEVwdsIfwAATIbwBwDAZAh/AABMhvAHAMBkCH8AAEyG8AcAwGQI\nfwAATIbwBwDAZAh/AABMhvAHAMBkCH8AAEyG8AcAwGQIfwAATKap0QUAwC+R8sYEo0totM7+eMZt\nOeP/PSu/K4gLX8kbN7fB98mZPwAAJkP4AwBgMoQ/AAAmQ/gDAGAyhj7BkZeXp8WLF8vhcMhqtSo9\nPV133nlnndvee++9+vzzz+tcl5GRoUcffdSXpQIA0GgYFv75+fmy2WyaMmWKevXqpcLCQmVmZqp5\n8+aKi4urtX12drZ++uknt7ZDhw5pzJgx6tevX0OVDQDAZc+Q8Hc6ncrNzdXo0aOVlJQkSYqIiNDW\nrVuVm5tbZ/i3aNGiVtv06dM1aNAg9e3b1+c1AwDQWBhyz3/v3r1yOBwaOHCgW3tsbKzsdrtOnTp1\nwTG++OILrVmzRpmZmb4qEwCARsmQ8N+3b58kqX379m7tVqtV1dXVKi0tveAY8+bN0+23365OnTr5\nokQAABotQy77V1ZWSpICAwPd2oOCgiRJFRUV9fbfuXOnPvvsM61YscLjfdrt9ousEgAA3zMiny7L\n+RqXLFmi6Oho3XDDDR73iY6O9mFFABrc9reMrgDwCl/lU32/VBhy2T8kJERS7TP8muWa9XWprq7W\nunXr9Nvf/tZn9QEA0JgZEv4dO3aUpFr39ouLi+Xv76+wsLDz9v373/+uY8eOadCgQT6tEQCAxsqQ\n8A8PD5fValVhYaFb+4YNGxQTE6OAgIDz9t26dauCgoLUrVs3X5cJAECjZNj0vhkZGVq2bJlWrFih\nAwcOaP78+SoqKlJaWpokyWazKTU1tVa/ffv2qUOHDg1dLgCYhqWJ5WcL/7GMRsGwB/4SExNVWVmp\n7OxsORwOhYeHKycnR1FRUZKksrIylZSU1Op3/PhxXXXVVQ1dLgCYRhN/PwV3baWKr48quEsrNfH3\nM7okeJnF6XQ6jS7C1+x2O0/7A41MyhsTjC4B8Iq8cXN9Mm592cdX/QAAMBnCHwAAkyH8AQAwGcIf\nAACTIfwBADAZwh8AAJMh/AEAMBnCHwAAkyH8AQAwGcIfAACTIfwBADAZwh8AAJMh/AEAMBnCHwAA\nkyH8AQAwGcIfAACTIfwBADAZwh8AAJMh/AEAMBnCHwAAkyH8AQAwGcIfAACTIfwBADAZwh8AAJMx\nNPzz8vIUHx+vyMhIJSQkaNWqVfVuX15erj/96U/q27evbrrpJqWmpqq0tLSBqgUAoHEwLPzz8/Nl\ns9mUnp6ugoICJScnKzMzUxs3bjxvn7S0NBUXF+vNN9/U22+/rcrKSj300EOqrq5uwMoBALi8NTVi\np06nU7m5uRo9erSSkpIkSREREdq6datyc3MVFxdXq8/GjRu1fft2ffLJJ2rVqpUk6eWXX9Y///lP\n/fTTT7riiisa9BgAALhcGXLmv3fvXjkcDg0cONCtPTY2Vna7XadOnarVZ926derXr58r+CXJarXq\n9ttvJ/gBALgIhoT/vn37JEnt27d3a7daraqurq7zPv7XX3+tTp06af78+brtttsUExOjxx9/XEeP\nHm2QmgEAaCwMuexfWVkpSQoMDHRrDwoKkiRVVFTU6nP06FF9/PHH6tOnj2w2m8rKyjRt2jTdc889\nKigoUNOm9R+K3W73UvUAAHiPEflkSPj/EmfOnNEVV1yhWbNmyc/PT9K5Xx5SUlL02WefadCgQfX2\nj46ObogyATSU7W8ZXQHgFb7Kp/p+qTDksn9ISIik2mf4Ncs163/uqquu0vXXX+8KfkmKioqSxWLR\nnj17fFgtAACNiyHh37FjR0mqdW+/uLhY/v7+CgsLq7PPv//9b7e26upqOZ1OXXXVVb4rFgCARsaQ\n8A8PD5fValVhYaFb+4YNGxQTE6OAgIBafeLi4vSPf/zD7QG/L7/8UpLUrVs33xYMAEAjYtgkPxkZ\nGVq2bJlWrFihAwcOaP78+SoqKlJaWpokyWazKTU11bX98OHDdc0112jChAn65ptvVFRUpClTpigq\nKkq9e/c26jAAALjsGPbAX2JioiorK5WdnS2Hw6Hw8HDl5OQoKipKklRWVqaSkhLX9gEBAcrLy9O0\nadP0X//1X2rSpImGDBmiSZMmGXUIAABclixOp9NpdBG+ZrfbedofaGRS3phgdAmAV+SNm+uTcevL\nPr7qBwCAyRD+AACYDOEPAIDJEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM\n4Q8AgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyTT1dMOKigr9\n7W9/06ZNm7Rz504dPXpU5eXlCgkJUatWrXTDDTdowIABGjJkiEJCQnxZMwAA+BUuGP5VVVVauHCh\nFi9erBMnTigwMFBdunRRhw4dFBISovLych07dkxr167VqlWrNGPGDN13331KTU1VYGBgQxwDAAC4\nCPWG/zfffKPx48dr//79GjFihIYPH65evXqpadPa3c6cOaNt27Zp5cqVmj9/vlavXq3s7Gxdd911\nPiseAABcvHrDf9SoURo8eLDefPNNtW3btv6BmjZV79691bt3b6Wnp+ull17SqFGj9OWXX3q1YAAA\n8OvUG/4vvPCCRowYcdGDtm3bVjabTStWrPjFhQEAAN+oN/zrCv4ff/xRe/bskcPhUL9+/dSsWTNV\nV1erSZPaLw4kJibWu/O8vDwtXrxYDodDVqtV6enpuvPOO+vcNjs7Wzk5ObXag4KCuLoAAMBF8Php\nf0n6n//5H+Xm5qqqqkoWi0XLly9Xs2bNlJWVpdLSUr344ovy9/f3aKz8/HzZbDZNmTJFvXr1UmFh\noTIzM9W8eXPFxcXV2addu3ZaunSpW1tdv3QAAIDz8zg5Fy9erKysLN1+++3Kzs6W0+l0rYuMjNQn\nn3yihQsXejSW0+lUbm6uRo8eraSkJEVERCglJUWDBw9Wbm7uefv5+fmpTZs2bn9CQ0M9PQQAAKCL\nCP933nlHqampmjlzpm699Va3dUOGDNH48eP1wQcfeDTW3r175XA4NHDgQLf22NhY2e12nTp1ytOy\nAADARfI4/EtKSnTzzTefd/1vfvMbHT582KOx9u3bJ0lq3769W7vValV1dbVKS0s9LQsAAFwkj+/5\nBwcH68iRI+ddv3//fjVr1syjsSorKyWp1iRAQUFBks7NJliXqqoqvfDCC9q8ebNOnDih6OhoZWZm\nqlOnThfcp91u96g2AAAakhH55HH4x8bGau7cubr++uvVuXNnSZLFYpEkbd26VS+99FKty/jeFBQU\npMDAQHXt2lVjx47V4cOHNWfOHP3+97/X6tWr1apVq3r7R0dH+6w2AAbY/pbRFQBe4at8qu+XCo/D\nPzMzU2PGjNHw4cMVEREhi8Wip556SidOnNCRI0d0zTXX6Mknn/RorJq5///zDL9mua5vA6Smpio1\nNdW13LVrV3Xt2lW//e1v9c477ygtLc3TQwEAwNQ8vuffrl07FRQUaMKECQoNDVWnTp105swZde7c\nWU888YQKCgp09dVXezRWx44dJanWvf3i4mL5+/srLCzM45patGihsrIyTw8DAADTu6j3/IODg/Xg\ngw/qwQcf/FU7DQ8Pl9VqVWFhoYYMGeJq37Bhg2JiYhQQEFCrz8svv6xOnTpp1KhRrraDBw/q2LFj\nHt3zBwAA59Qb/gcPHlTbtm3VtGlTHTx40KMBr732Wo+2y8jI0KRJkxQVFaU+ffpo9erVKioq0pIl\nSyRJNptNO3fu1KJFiySdmxtg2rRpslgs6tevnxwOh2bNmqU2bdpccCZBAADw/9Ub/vHx8Vq6dKlu\nvPFGDR482PWAX3127drl0Y4TExNVWVmp7OxsORwOhYeHKycnR1FRUZKksrIylZSUuLZ/8skn1bx5\ncy1YsEBTpkxRYGCgYmJi9Morr6h58+Ye7RMAAEgW58+n6vsPy5cv1+DBg9W8eXMtX77cowF/yYeA\nfM1ut/O0P9DIpLwxwegSAK/IGzfXJ+PWl30ef9inW7du6t69u3crAwAADc7jp/2TkpKUkJCgnJwc\nFRcX+7AkAADgSx6H/3PPPafWrVtr3rx5SkhI0IgRI7Ro0SIdOnTIl/UBAAAv8zj87733Xi1evFif\nfvqpJk+erNDQUM2ePVvx8fEaM2aM8vPzdfToUV/WCgAAvMDj8K/RqlUrJScna+HChdq8ebNmzJih\n0NBQvfrqq/V++AcAAFwaLjr8f+7s2bNyOp3y9/dXQECAzp496626AACAj1zUDH/SuYl//va3v2nN\nmjX68ssvdebMGfXs2VMPPfSQEhISfFEjAADwIo/DPycnR2vXrtXu3bvldDoVGRmpxx9/XAkJCR7P\n6gcAAIx3UeF/ww03uALfarX6si4AAOAjHof/pEmTNGzYMLVq1cqX9QAAAB/z+IG/2bNnu821DwAA\nLk8eh/+IESOUl5en06dP+7IeAADgYx5f9g8MDNT+/fsVGxurnj17qlWrVmra1L27xWLRjBkzvF4k\nAADwHo/Df8GCBa7//uyzz+rchvAHAODS53H4796925d1AACABvKrZvgDAACXn4t6z/9CLBaL0tPT\nf1VBAADAt7wS/haLRU6nk/AHAOAy4HH4r127tlab0+lUWVmZ1q5dq507d8pms3m1OAAA4H0eh3/7\n9u3rbO/QoYNuuukmzZs3TzNnztSsWbO8VhwAAPA+rz3w17dvX61fv95bwwEAAB/xWvhv27ZNFovF\nW8MBAAAf8fiy/8SJE+tsP3PmjA4ePKgvv/xSQ4YM8VphAADANzwO/+XLl9fZbrFY1KxZM911113K\nzMz0WmEAAMA3DJ3hLy8vT4sXL5bD4ZDValV6erruvPNOj/pOnTpVS5Ys0VtvvaV+/fp5vTYAABor\nj8O/Rs37/DVKS0t1/Phx3XDDDfLz8/N4nPz8fNlsNk2ZMkW9evVSYWGhMjMz1bx5c8XFxdXbd/v2\n7XrvvfcutnQAAKCLeODv+PHjSk1NVX5+vqtt4sSJuu222zRq1CiNGDFCR44c8Wgsp9Op3NxcjR49\nWklJSYqIiFBKSooGDx6s3NzcevuePXtWL7zwghITEz0tHQAA/IzH4f/yyy/ru+++U48ePSRJ69ev\n1/Lly3X33XcrKytLkpSdne3RWHv37pXD4dDAgQPd2mNjY2W323Xq1Knz9l28eLFOnjypcePGeVo6\nAAD4GY8v+xcWFuqpp55yhf///u//6uqrr9bUqVNdtwFmzpzp0Vj79u2TVHviIKvVqurqapWWlqpL\nly61+h0+fFhZWVl67bXXFBAQ4GnpAADgZzw+8//3v/+tsLAwSecu22/atEm33HKLK/jbtm2rH374\nwaOxKisrJUmBgYFu7UFBQZKkioqKOvtNmzZN8fHx6t+/v6dlAwCA/+DxmX/r1q118OBB9erVS1u2\nbNGJEyd0yy23uNYfOnRIzZo180mRkrRu3Tp9/vnn+uijj35Rf7vd7uWKAAD49YzIJ4/D/+abb9ZL\nL72kHTt26OOPP9a1117rumfvcDi0YMECRUdHezRWSEiIpNpn+DXLNetrnDx5UlOnTtUf//hHhYaG\nelqyG09rA3CZ2P6W0RUAXuGrfKrvlwqPL/s/8cQT6tGjh9577z0FBAQoKyvL9WpfVlaWHA6Hnnzy\nSY/G6tixo6Rzrwn+XHFxsfz9/V23F2p89dVXOnjwoJ5//nl1795d3bt312233SZJSklJ0a233urp\nYQAAYHoen/k3a9bsvE/zP/zww5o0aVKte/jnEx4eLqvVqsLCQrcpgTds2KCYmJhaD/NFRkZq5cqV\nbm1HjhxRamqqpk2bpqioKE8PAwAA06v3zP/pp59WVVXVBQexWq21gr+qqkrPPPPMeftkZGRo2bJl\nWrFihQ4cOKD58+erqKhIaWlpkiSbzabU1FRJ5x4E7Nq1q9ufTp06STr3SeHw8PAL1ggAAM6p98x/\nx44dSkxMVGZm5kV9tGfNmjV65ZVX1LTp+YdPTExUZWWlsrOz5XA4FB4erpycHNdZfFlZmUpKSjze\nJwAA8IzF6XQ6z7fy5MmTeu655/TRRx+pc+fOGj58uPr166fu3bu7XZo/ffq0du3apS1btmjVqlX6\n9ttvlZCQoGnTprle3zOS3W7ngT+gkUl5Y4LRJQBekTdurk/GrS/76j3zDwoK0uzZszVy5EjNmzdP\ns2fPdr3XHxgYqJCQEJWXl7tuDTidTkVFRWnRokWKjY318mEAAABv8OiBvwEDBmjAgAEqLS3Vpk2b\ntGvXLh09elQVFRUKDg5Wy5Yt1b17d8XGxspqtfq6ZgAA8Ctc1Ff9rFarkpOTfVULAABoAB6/5w8A\nABoHj8/8//Wvf2nq1KmuqX3rek7QYrFo586dXi0QAAB4l8fhP2XKFP31r3/VTTfdpPbt28vf39+X\ndQEAAB/xOPyLioqUmZnpmngHAABcni7qnn/Pnj19VQcAAGggHod/XFyctm7d6staAABAA/D4sv/T\nTz+tp556Sj/++KNuueUWtW7d2jXhz89de+21Xi0QAAB4l8fhHxcXJ4vFoqKiIuXm5p53u127dnml\nMAAA4Bseh396enqdZ/oAAODy4nH4P/roo/WuLy8vV2lp6a8uCAAA+JbXZvjbunWr7rvvPm8NBwAA\nfOSi5vZ/5513tHr1ah0+fFjV1dWu9urqah05ckRt2rTxeoEAAMC7PD7zX7x4sSZPnqySkhK1bdtW\nBw4cUIsWLdS0aVMdOnRIt99+u1577TVf1goAALzA4/B/9913NWbMGK1fv175+fmSpOnTp+svf/mL\ncnNz9e2336p169Y+KxQAAHiHx+G/f/9+DRs2zO2J/5pL/4MGDdJdd92l6dOne79CAADgVR6Hv7+/\nv6qqqlzLzZo1U1lZmWs5KipKRUVF3q0OAAB4ncfh37t3b2VlZemf//ynJCkiIkLvvfeea/327du9\nXx0AAPA6j8N/woQJKikpUXZ2tiRp5MiRWrt2rW6++WYlJSVp1qxZiouL81mhAADAOzx+1e/666/X\n6tWrXRP5jBw5UhUVFSooKNCZM2c0ZswYTZgwwWeFAgAA77io9/xbt27t9kR/SkqKUlJSvF0TAADw\noYsKf+ncTH7btm2Tw+HQ/fffr3bt2unw4cNq0aKFrrzySl/UCAAAvMjj8K+srNT48eO1adMmOZ1O\nWSwWjRw5Uu3atdO8efO0ZcsWLVmyRG3btvVlvQAA4Ffy+IG/uXPnaseOHZo5c6a2bNkip9PpWvfA\nAw+oSZMmysnJuaid5+XlKT4+XpGRkUpISNCqVavq3X7FihVKTExUz5491bdvX40fP14HDhy4qH0C\nAGB2Hof/X/7yFz322GNKTExUixYt3NZZrValp6dr7dq1Hu84Pz9fNptN6enpKigoUHJysjIzM7Vx\n48Y6t1+1apUmTpyoESNGaOXKlcrOztaePXuUlpbm9p0BAABQP4/D/1//+pe6du163vUdOnTQ8ePH\nPRrL6XQqNzdXo0ePVlJSkiIiIpSSkqLBgwcrNze3zj4ffvihhg0bpvvuu09hYWHq16+fMjIytHv3\nbhUXF3t6GAAAmJ7H4d+2bVt99dVX512/ZcsWtWvXzqOx9u7dK4fDoYEDB7q1x8bGym6369SpU7X6\nzJs3Tzabrc7xmja96OcWAQAwLY/Df9iwYcrKytK7776rY8eOSZJOnz6tkpIS5eTk6LXXXtMdd9zh\n0Vj79u2TJLVv396t3Wq1qrq62jWXQH327Nmj3NxcDR06VGFhYZ4eBgAApufxKfP48eP1/fff64UX\nXtDkyZMlScnJyZLOXcYfMmSI0tPTPRqrsrJSkhQYGOjWHhQUJEmqqKg4b9/8/HzNnDnTNbHQxIkT\nPdqn3W73aDsAABqSEfnkcfgHBATotdde0/bt2/Xpp5/K4XBIkq655hrFxsaqR48ePivy54YPH66Y\nmBh9/fXXstlsOnjwoObNm6cmTeq/iBEdHd0g9QFoINvfMroCwCt8lU/1/VJxUTfLd+7c6fqAT5s2\nbSRJZ86cUWFhoQoLC2WxWDw6+w8JCZFU+wy/Zrlm/fn6hoSEqHPnzurcubPuuusurV27VrfeeuvF\nHAoAAKblcfi/9dZbmjlzptv7/f/J0/Dv2LGjJKm0tFTdunVztRcXF8vf37/WPfyzZ89q3bp1Cg8P\n13XXXedqv+6669SkSRN9//33nh4GAACm53H4v/HGGxoyZIj++Mc/6pprrvlVT9iHh4fLarWqsLBQ\nQ4YMcbVv2LBBMTExCggIcNvez89PU6dOVUxMjGbNmuVq/+abb1RdXc2sggAAXASPn/Y/fvy4/vCH\nP8hqtXrl1bqMjAwtW7ZMK1as0IEDBzR//nwVFRUpLS1NkmSz2ZSamura/v7779fKlSu1cOFCFRcX\n64svvtDEiRPVpk0bt18gAABA/TxO8b59+2rPnj3q06ePV3acmJioyspKZWdny+FwKDw8XDk5OYqK\nipIklZWVqaSkxLX9vffeqyZNmujtt9/WnDlz1LJlS/Xp00dZWVkKDg72Sk0AAJiBxVnfTfyfOXLk\niB5//HHdfPPN6t+/v0JDQ2WxWGptd+2113q9yF/LbrfztD/QyKS8McHoEgCvyBs31yfj1pd9Hp/5\nHz58WMeOHdPs2bM1Z86c8263a9eui68QAAA0GI/D/09/+pPKy8uVlpb2qx/4AwAAxvE4wYuLi/Xq\nq68qPj7el/UAAAAf8/hp/86dO/uyDgAA0EA8Dv9JkyZpwYIFrhn+AADA5cnjy/6zZs3SsWPHlJyc\nrMDAQLVs2bLWNhaLRWvWrPFqgQAAwLs8Dn9/f3+1bduW2fQAALjMeRz+ixcv9mUdAACggXh8zx8A\nADQOhD8AACZD+AMAYDKEPwAAJkP4AwBgMoQ/AAAmQ/gDAGAyhD8AACZD+AMAYDKEPwAAJkP4AwBg\nMoQ/AAAmQ/jjkpaVlaX4+HhlZWUZXQoANBqEPy5ZVVVVKigokCStXLlSVVVVBlcEAI0D4Y9L1unT\np+V0OiVJ1dXVOn36tMEVAUDjQPgDAGAyhoZ/Xl6e4uPjFRkZqYSEBK1atare7Tdt2qTRo0crKipK\nN998syZOnKgffvihgaoFAKBxMCz88/PzZbPZlJ6eroKCAiUnJyszM1MbN26sc/u///3veuCBB9Sj\nRw8tXbpUs2bNkt1u12OPPdbAlQMAcHlrasROnU6ncnNzNXr0aCUlJUmSIiIitHXrVuXm5iouLq5W\nn7y8PHXp0kXPPvusa/vx48frySef1MGDB3Xttdc26DEAAHC5MuTMf+/evXI4HBo4cKBbe2xsrOx2\nu06dOlWrz4svvqjXX3/drS00NFSSdOzYMd8VCwBAI2NI+O/bt0+S1L59e7d2q9Wq6upqlZaW1uoT\nFBSkVq1aubV98sknCg4OVufOnX1XLAAAjYwhl/0rKyslSYGBgW7tQUFBkqSKiooLjrF582YtXrxY\njz/+uK688soLbm+3239BpTBSzf8nNf7xj3/oqquuMqgaAPANI/LJkPD/tTZt2qS0tDTdeuuteuCB\nBzzqEx0d7eOq4G3Hjx93W+7Zs6eaN29uUDW45Gx/y+gKAK/wVT7V90uFIZf9Q0JCJNU+w69Zrllf\nl3Xr1unFZ5Y0AAANqklEQVShhx7SbbfdpldffVUWi8V3hQIA0AgZcubfsWNHSVJpaam6devmai8u\nLpa/v7/CwsLq7Ld161aNHz9ev//97/Xss89eEsE/5o/5RpfQaFWfcX/w86EpS9Wk6YVv8eDivT1r\nrNElAGhAhpz5h4eHy2q1qrCw0K19w4YNiomJUUBAQK0+R44cUUZGhpKSkvTcc89dEsEPAMDlyLB7\n/hkZGZo0aZKioqLUp08frV69WkVFRVqyZIkkyWazaefOnVq0aJGkc1938/f318MPP6yysjK3sUJC\nQjx66A8AABgY/omJiaqsrFR2drYcDofCw8OVk5OjqKgoSVJZWZlKSkpc22/atEllZWW65ZZbao01\nc+ZM12RBAACgfoY+7T927FiNHVv3vcYXX3zRbXndunUNURIAAI0eX/UDAMBkCH8AAEyG8AcAwGQI\nfwAATIbwx6XL4vfzhf9YBgD8UoQ/LllN/PwV2OYGSVJgm+vVxM/f4IoAoHG4LD/sA/NoFtZfzcL6\nG10GADQqnPkDAGAyhD8AACZD+AMAYDKEPwAAJkP4AwBgMoQ/AAAmQ/gDAGAyhD8AACZD+AMAYDKE\nPwAAJkP4AwBgMoQ/AAAmQ/gDAGAyhD8AACZD+AMAYDKEPwAAJkP4AwBgMoaGf15enuLj4xUZGamE\nhAStWrXqgn2++OILxcXFafDgwQ1QIQAAjY9h4Z+fny+bzab09HQVFBQoOTlZmZmZ2rhx43n7vPHG\nG0pNTdWVV17ZgJUCANC4GBL+TqdTubm5Gj16tJKSkhQREaGUlBQNHjxYubm5dfY5ceKEFi5cqEWL\nFql///4NXDEAAI2HIeG/d+9eORwODRw40K09NjZWdrtdp06dqtXnyiuv1AcffKDevXs3VJkAADRK\nhoT/vn37JEnt27d3a7daraqurlZpaWmtPgEBAWrXrl2D1AcAQGPW1IidVlZWSpICAwPd2oOCgiRJ\nFRUVXt+n3W73+phAY8HPB2AcI37+DAl/I0RHR/tm4Hd3+2ZcoAH57OfDl7a/ZXQFgFf46uevvl8q\nDLnsHxISIqn2GX7Ncs16AADgfYaEf8eOHSWp1r394uJi+fv7KywszIiyAAAwBUPCPzw8XFarVYWF\nhW7tGzZsUExMjAICAowoCwAAUzDsnn9GRoYmTZqkqKgo9enTR6tXr1ZRUZGWLFkiSbLZbNq5c6cW\nLVokSTp16pTKy8slST/++KPOnj2rsrIySeceFLzqqquMORAAAC4zhoV/YmKiKisrlZ2dLYfDofDw\ncOXk5CgqKkqSVFZWppKSEtf2H374oSZOnOg2Rs08ARkZGXr00UcbrngAAC5jhj7tP3bsWI0dO7bO\ndS+++KLbclJSkpKSkhqiLAAAGjW+6gcAgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM4Q8A\ngMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJ\nEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJiMoeGfl5en+Ph4RUZGKiEhQatW\nrap3+x07duiee+5Rjx491K9fP73wwguqqqpqoGoBAGgcDAv//Px82Ww2paenq6CgQMnJycrMzNTG\njRvr3P7IkSMaN26c2rdvr/fff19z5szRpk2bNGnSpAauHACAy5sh4e90OpWbm6vRo0crKSlJERER\nSklJ0eDBg5Wbm1tnnyVLlsjf319Tp05Vt27d1L9/fz399NNatWqVSktLG/gIAAC4fBkS/nv37pXD\n4dDAgQPd2mNjY2W323Xq1KlafTZv3qy+ffsqICDAbXuLxaJNmzb5vGYAABoLQ8J/3759kqT27du7\ntVutVlVXV9d5Jl9SUlJr+6CgIIWGhqq4uNhntQIA0Ng0NWKnlZWVkqTAwEC39qCgIElSRUVFnX1q\n1v9nn5rx6mO3239JqRf0ZPL1PhkXaEi++vnwpUd7/MHoEgCvMOLnz5Dwb2jR0dFGlwAAwCXDkMv+\nISEhkmqf4dcs16z/ueDg4DqvCJSXlys4ONgHVQIA0DgZEv4dO3aUpFr39ouLi+Xv76+wsLBafTp1\n6qSSkhK3tuPHj+vYsWPq3Lmz74oFAKCRMST8w8PDZbVaVVhY6Na+YcMGxcTEuD3RX2PgwIHaunWr\n25sAGzZsUJMmTWq9NQAAAM7PsEl+MjIytGzZMq1YsUIHDhzQ/PnzVVRUpLS0NEmSzWZTamqqa/ux\nY8fKz89Pzz33nIqLi1VUVKRXXnlFycnJuvrqq406DAAALjuGPfCXmJioyspKZWdny+FwKDw8XDk5\nOYqKipIklZWVuV3mb9mypfLy8jR9+nQNHz5cwcHBGj58uJ544gmjDgEAgMuSxel0Oo0uAgAANBy+\n6odLVnV1tbKysnT99dcrOzvb6HIA0zh9+rRycnI0dOhQ9erVS3fccYfy8/ONLgteZIr3/HH5OXr0\nqJ566int379fTZrwOyrQkGbMmKEPP/xQU6ZM0Y033qhPPvlEU6dO1RVXXKGRI0caXR68gH9VcUkq\nKCiQn5+fli5dKj8/P6PLAUyjvLxc77//vtLS0pSQkKCwsDDdd999GjBggAoKCowuD17CmT8uSfHx\n8frDH/7AWT/QwIKDg7Vx48Za06+HhoZq165dBlUFb+NfVlySrFYrwQ8YwGKxqFWrVm7hX1VVpS1b\ntqhnz54GVgZv4l9XAEC9/vznP6u8vFwPPvig0aXAS7jsDwCok9Pp1OTJk1VQUKA5c+bUOfU6Lk+E\nPwCglrNnz2rixIn6+OOPNXfuXA0ZMsTokuBFhD8AoJY///nPWrNmjRYtWqQ+ffoYXQ68jPAHALh5\n99139cEHHxD8jRjhj0vSv//9b/3000+u5ZMnT6qsrEyS1KpVK979B3yksrJSNptNI0eOVEREhOvn\nrkabNm0MqgzexNz+uCTde++9+vzzz+tct3btWnXo0KGBKwLM4fPPP9e999573vV79uxpwGrgK4Q/\nAAAmw3v+AACYDOEPAIDJEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM4Q/g\nvA4ePKinnnpKcXFx+s1vfqPBgwfrxRdf1I8//ihJqq6u1oIFCzR06FBFRkaqf//+mjhxon744QdJ\n5z4Lm5SUpGHDhrl9q6G0tFQ9evTQ888/72o7dOiQnnzyScXExCgyMlLDhg3TW2+91bAHDJgE0/sC\nOK+kpCT9+OOPmjBhglq3bq3du3dr9uzZGjp0qKZNm6YZM2ZoyZIleuihhxQbG6vS0lLNnTtXwcHB\nWr58uQICArR7927dfffdevzxx3X//fdLkh555BHt3LlTq1evVnBwsMrLy/W73/1OTZo00fjx43X1\n1VersLBQr7/+uh599FGlpaUZ/DcBNDJOAKjDsWPHnF27dnW++eabbu2FhYXOpUuXOg8fPuzs3r27\nc9asWW7ri4qKnF27dnV+8MEHrrZXX33V2atXL+fhw4edGzZscHbt2tW5fv161/rc3Fzn9ddf7/z6\n66/dxnrmmWecPXv2dJ48edIHRwiYF5f9AdQpMDBQQUFBev/997V9+3ZXe1xcnO6++25t3rxZZ86c\n0dChQ9369enTRyEhIdq2bZurLT09Xe3atdP06dM1ffp0DR8+XIMGDXKt/+yzzxQREaEuXbq4jTV4\n8GBVVVXxJTnAy5oaXQCAS9MVV1yhOXPm6JlnntGoUaPUpk0bxcXFKSkpSX369NGRI0ckSaNGjaqz\nf816SQoICNC0adM0ZswYtWjRQs8++6zbtg6HQ99//726detW51gOh8NLRwVAIvwB1GPQoEFat26d\n1q9fr/Xr12vdunVatmyZMjIydMUVV0iSsrOzZbVaa/UNCgpyW/72229lsVhUXl6u/fv3q2XLlm7r\nu3TpopdffrnOOq655hovHREAiQf+AFyE06dP65FHHlFRUZFmzJihzMxMvf766xowYEC9/RwOh+64\n4w6NHTtW27Zt07Fjx/TBBx/I399fkjRu3Dh9++232rhxY0McBmB63PMHUKcdO3Zo4sSJqqqqcrUF\nBARo4MCB+umnnxQdHS0/Pz+tXLnSrV95ebmeffZZff311662KVOmqHnz5nrkkUf0/PPPa+/evcrN\nzXWt79+/v44cOaKioiK3sdasWaPZs2frzJkzPjpKwJz8Jk+ePNnoIgBceqqrqzV58mTZ7XaFhITo\nxIkT2rp1q+bNm6devXrpnnvu0fHjx/XOO+/oxIkTCgoK0ldffaXnn39e27ZtU0pKioKDg/XRRx/p\nv//7v/XKK6/ouuuuU6tWrXTq1CktWLBAt956q0JDQ9W1a1etXr1aK1euVOvWrVVRUaG//vWvmjp1\nqlq2bKlhw4YZ/dcBNCpc9gdwXtu3b1dWVpZ27NihkydPqm3btoqPj1dGRoaaNWum6upqvf7661q6\ndKn279+vwMBA9e/fX4899pgiIiJ0/PhxDRs2TDfddJNycnJc41ZVVemOO+5QaGio3nnnHfn5+enQ\noUOy2Wz69NNPVV5erquvvlpJSUl68MEHFRAQYODfAtD4EP4AAJgM9/wBADAZwh8AAJMh/AEAMBnC\nHwAAkyH8AQAwGcIfAACTIfwBADAZwh8AAJMh/AEAMJn/AwehBgW6X79/AAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n/79022236bbbbtP48eOVmpqqJ554Qh9++KGmTJkiSbJYLOrVq5d69eqlmTNnKj4+XnFxcUpNTVVg\nYKBtmTvuuMNhxwyYHff8AZPz9/dXu3bttHPnTtsIe0n65JNP1KNHDx09erTC8iUlJZKk5s2b29py\nc3O1detWSf//IyA+Pl4bN26ssG7Pnj3l4+OjCxcu6Ny5c5o7d26lR/YGDBggSTp//ryaN2+uwMBA\nffbZZ7b9llu8eLG2b99+M4cOmJb7yy+//LLRRQAwlr+/v5KSknTixAn5+/srNTVVb7zxhnr06KGo\nqCjFx8erZ8+e6tWrl4qKivTZZ5/pp59+0q233qq0tDTNmjVLgwcP1ldffSU/Pz9ZrVbt27dPK1as\nkKenp65evars7GytXLlSGRkZmjFjhgIDA7V06VJt3rxZvr6+Kioq0vfff69ly5bpypUreuGFF+Tl\n5aXmzZvrww8/1Ndff62mTZsqOztbb775pj766CMNHjxY7du3N/rPB9Q6lrJf/tQHYFpbtmzRypUr\ndfz4cXl7e2vw4MGaMmWKfHx81LFjR02YMEETJ06UdO3RwI8++kgXL15Up06dNG3aNHXq1EmjR4/W\n0aNHNWPGDEVGRmrFihXavHmzzpw5o1tuuUW33367xo0bp/79+0uSfvrpJ8XExGjv3r06f/68br31\nVgUHB2vy5MkVbins2LFDCQkJ+vbbbyVJd955p/7jP/5D/fr1c/0fCqgDCH8AAEyGe/4AAJgM4Q8A\ngMkQ/gAAmAzhDwCAyRD+AACYDOEPAIDJEP4AAJgM4Q8AgMkQ/gAAmAzhDwCAyfwfmlwPDAfovFYA\nAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n3+rVq5fTX/UDAADGcVn47969WxaLxVWrA1DPWRr95t8Dy39MAzCU06f9p0+fXm17eXm5Dh06pE8/\n/dThbX0AzK2Rp4d8r/VXydfH5NvFX408PYwuCcD/43T4v/3229W2WywWNW3aVEOHDlViYqLLCgNQ\n/zXvdbWa97ra6DIA/AfD3vAHAACMUetr/na73WG6qKhIX3zxhc6dO+eyogAAgPs4Hf4nTpxQbGys\nMjIyKtumT5+u2267Tffcc4+GDx+uo0ePuqVIAADgOk6H/6JFi/Tdd9+pR48ekqQPP/xQb7/9tu6+\n+24lJydLklJSUtxTJQAAcBmnr/lnZ2dr6tSpleH/97//XW3atNGcOXMqH/GbP3++e6oEAAAu4/TI\n/6efflJAQICkX6/779ixQ/37968M/tatW+uHH35wT5UAAMBlnA7/li1b6tChQ5KknTt36uTJk+rf\nv3/l/MOHD6tp06aurxAAALiU06f9b731Vj333HP6/PPPtXnzZl199dWKiIiQJNlsNi1fvlyhoaFu\nKxQAALiG0+H/2GOP6ccff9Qbb7yhli1bavHixfLw+PWNXcnJybLZbFqyZInbCgUAAK7hdPg3bdr0\ngnfz//GPf9SMGTPk7e3tssIAAIB71HjNf9q0aSorK/vdlVit1irBX1ZWpj/96U+XVh0AAHC5GsP/\n888/V1RUlLZs2VKrlW7ZskXDhw/XF198cUnFAQAA16sx/NeuXavu3bsrISFBd955p9LS0rR7926d\nOXPGYbkzZ87os88+U1pamoYOHapHHnlE3bt31xtvvOHW4gEAQO3VeM3fx8dHS5Ys0ciRI7V06VIt\nWbKk8rl+b29v+fn56dSpU5WXBux2u0JCQrRixQqFh4e7v3oAAFBrTt3wd8stt+iWW25RUVGRduzY\noX379unYsWMqKSmRr6+vmjdvru7duys8PFxWq9XdNQMAgEvg9N3+0q839kVHR7urFgAAUAdq/Ulf\nAABQvzk98v/xxx81Z86cylf72u32KstYLBbt3bvXpQUCAADXcjr8Z8+erX/84x+66aab1L59e3l6\nerqzLgAA4CZOh39OTo4SExMVGxvrznoAAICb1eqa/w033OCuOgAAQB1xOvz79u2r3Nxcd9YCAADq\ngNOn/adNm6apU6fql19+Uf/+/dWyZcvKF/781tVXX+30xtPT07Vy5UrZbDZZrVbFx8frrrvuuuDy\n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\nuaDU/AAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#import warnings\n",
"def plot_cat(data, x_axis, y_axis, hue):\n",
" #plt.figure() \n",
" sns.set(style=\"whitegrid\")\n",
" sns.set_context(\"notebook\", font_scale=1.6)\n",
" sns.barplot(x=x_axis, y=y_axis, hue=hue, data=data)\n",
" plt.legend(loc=\"upper right\", fontsize=\"medium\")\n",
" plt.show()\n",
"\n",
"#with warnings.catch_warnings(record=True):\n",
"\n",
"plot_cat(data,\"sexe\", \"survie\", None)\n",
"plot_cat(data,\"classe\", \"survie\", \"sexe\") \n",
"plot_cat(data,\"classe\", \"survie\", None)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**6. Quel est le tarif moyen du billet des personnes qui voyageaient en $1$-ère classe ?**"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"87.59442724458205"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('classe==1')['tarif'].mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**7. Quelle est la moyenne d'âge des personnes qui voyageaient en $3$-ème classe ?**"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"24.842315369261478"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('classe==3')['age'].mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**8. Indiquer selon le genre des personnes de chaque classe, la fréquence du descripteur\n",
"\"Survivant\".**"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"classe sexe\n",
"1 1 0.340782\n",
" 2 0.965278\n",
"2 1 0.146199\n",
" 2 0.886792\n",
"3 1 0.152130\n",
" 2 0.490741\n",
"Name: survie, dtype: float64\n"
]
}
],
"source": [
"#groupe3=data.groupby(['classe','sexe']) #scission des donnees selon la classe et le sexe\n",
"#groupe30=data.groupby(['classe','sexe','survie'])\n",
"#print(groupe30.get_group((1,1,1)).shape[0])\n",
"#print(groupe30.get_group((1,1,0)).shape[0])\n",
"##eff1=groupe30['survie'].count()\n",
"##print(eff1)\n",
"#total=groupe3['survie'].count()\n",
"#print(total)\n",
"\n",
"eff=data.query('survie==1').groupby(['classe','sexe'])['survie'].count()\n",
"total= data.groupby(['classe','sexe'])['survie'].count()\n",
"\n",
"print(eff/total) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**La solution -Tableaux croisés dynamiques- version \"Datascientist\"** sur [OpenClassrooms](https://openclassrooms.com/fr/courses/4452741-decouvrez-les-librairies-python-pour-la-data-science/5574866-manipulez-les-donnees-contenues-dans-vos-dataframes)."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" classe | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
"
\n",
" \n",
" sexe | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 0.340782 | \n",
" 0.146199 | \n",
" 0.152130 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.965278 | \n",
" 0.886792 | \n",
" 0.490741 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
"classe 1 2 3\n",
"sexe \n",
"1 0.340782 0.146199 0.152130\n",
"2 0.965278 0.886792 0.490741"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.pivot_table('survie', index='sexe', columns='classe')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Remarque :** La gestion des données manquantes est souvent un point délicat. De nombreuses stratégies ont été élaborées, nous décrivons ici une possibilité à mettre en œuvre avec $\\texttt{pandas}$.\n",
"\n",
"Il est ainsi facile de supprimer toutes les observations présentant des données manquantes lorsque celles-ci sont peu nombreuses et majoritairement regroupées sur certaines lignes ou colonnes.\n",
"- les individus ou lignes $\\quad \\texttt{data.dropna(axis=0)}$\n",
"- les variables ou colonnes $\\,\\texttt{data.dropna(axis=1)}$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#'any' supprime lignes/colonnes de chaque valeur Null et 'all' seulement si toutes les valeurs Null\n",
"groupe4=data.dropna(axis=0, how='any') \n",
"groupe4.shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#Pour eviter de multiples affichages de longs tableaux\n",
"#vous pouvez modifier cette option à votre guise\n",
"#pandas.options.display.max_rows = 10\n",
"groupe4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Le «croisement» de deux tables \n",
" * sur la base du descripteur commun.\n",
" \n",
"**Répondre à des requêtes et identifier les opérations utilisées à l'aide d'un tableur.**\n",
"\n",
"*Activité* sur la fréquentation des Musées de France"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import HTML\n",
"\n",
"HTML('')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Les [donnees](https://data.opendatasoft.com/explore/dataset/frequentation-des-musees-de-france@culture/download/?format=csv&timezone=Europe/Berlin&use_labels_for_header=true) sources sur la fréquentation des musées au format $\\texttt{csv}$ (sep=\";\") [https://data.opendatasoft.com/](https://data.opendatasoft.com/)\n",
"* Les [sources](https://www.insee.fr/fr/statistiques/fichier/3545833/ensemble.xls) de l'[INSEE](https://www.insee.fr/fr/statistiques/3545833?sommaire=3292701) sur la population au format $\\texttt{xls}$.\n",
"\n",
"*Pour pouvoir fusionner des données provenant de deux fichiers différents, ceux-ci doivent convenablement être structurés...*\n",
"\n",
"**Pour répondre aux requètes**, le [classeur](http://lycee.lagrave.free.fr/SNTdata/TP/croisement_tables.xlsx) (format $\\texttt{xlsx}$) issu des données précédentes est disponible. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**1. Quel musée a le plus petit nombre d'entrées ?**\n",
"\n",
"\n",
"\n",
"**2. Combien de musées sont dans la ville de Lyon ?**\n",
"\n",
"\n",
"\n",
"**3. Quel est le nombre d'habitants de la ville du musée Alpin ?**\n",
"\n",
"\n",
"\n",
"**4. Quelle est la somme des entrées des musées de Lyon ?**\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Avec Pandas\n",
"\n",
"#### Importer un fichier Excel"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['frequentation', 'habitants']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"src = pandas.ExcelFile('http://lycee.lagrave.free.fr/SNTdata/TP/croisement_tables.xlsx') \n",
"src.sheet_names"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" NOM DU MUSEE | \n",
" VILLE | \n",
" ENTREES | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Musée d'Arts Africains, Océaniens, Amérindiens | \n",
" MARSEILLE | \n",
" 0.0 | \n",
"
\n",
" \n",
" 1 | \n",
" Musée de la Faïence | \n",
" MARSEILLE | \n",
" 0.0 | \n",
"
\n",
" \n",
" 2 | \n",
" Musée de la Mode | \n",
" MARSEILLE | \n",
" 0.0 | \n",
"
\n",
" \n",
" 3 | \n",
" Musée de l'Hôtel d'Espeyran | \n",
" MONTPELLIER | \n",
" 0.0 | \n",
"
\n",
" \n",
" 4 | \n",
" Musée Quentovic | \n",
" ETAPLES-SUR-MER | \n",
" 0.0 | \n",
"
\n",
" \n",
" 5 | \n",
" Atelier Musée Louis Leygue | \n",
" NAVEIL | \n",
" 51.0 | \n",
"
\n",
" \n",
" 6 | \n",
" Musée Municipal | \n",
" VAYRAC | \n",
" 106.0 | \n",
"
\n",
" \n",
" 7 | \n",
" Musée Municipal de Civray | \n",
" CIVRAY | \n",
" 142.0 | \n",
"
\n",
" \n",
" 8 | \n",
" Musée Charles-Louis Philippe | \n",
" CERILLY | \n",
" 185.0 | \n",
"
\n",
" \n",
" 9 | \n",
" Cabinet des Estampes et des Dessins | \n",
" STRASBOURG | \n",
" 217.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NOM DU MUSEE VILLE ENTREES\n",
"0 Musée d'Arts Africains, Océaniens, Amérindiens MARSEILLE 0.0\n",
"1 Musée de la Faïence MARSEILLE 0.0\n",
"2 Musée de la Mode MARSEILLE 0.0\n",
"3 Musée de l'Hôtel d'Espeyran MONTPELLIER 0.0\n",
"4 Musée Quentovic ETAPLES-SUR-MER 0.0\n",
"5 Atelier Musée Louis Leygue NAVEIL 51.0\n",
"6 Musée Municipal VAYRAC 106.0\n",
"7 Musée Municipal de Civray CIVRAY 142.0\n",
"8 Musée Charles-Louis Philippe CERILLY 185.0\n",
"9 Cabinet des Estampes et des Dessins STRASBOURG 217.0"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1 = pandas.read_excel(src, sheet_name=\"frequentation\")\n",
"df1.head(10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#df2 = pandas.read_excel(src, sheet_name=\"habitants\")\n",
"#df2.head()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" VILLE | \n",
" REGION | \n",
" HABITANTS | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" ABBEVILLE | \n",
" HAUTS-DE-France | \n",
" 23278 | \n",
"
\n",
" \n",
" 1 | \n",
" AGDE | \n",
" OCCITANIE | \n",
" 26946 | \n",
"
\n",
" \n",
" 2 | \n",
" AGEN | \n",
" NOUVELLE-AQUITAINE | \n",
" 33988 | \n",
"
\n",
" \n",
" 3 | \n",
" AIGUILLES | \n",
" PROVENCE-ALPES-COTE D'AZUR | \n",
" 425 | \n",
"
\n",
" \n",
" 4 | \n",
" AIGUINES | \n",
" PROVENCE-ALPES-COTE D'AZUR | \n",
" 271 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" VILLE REGION HABITANTS\n",
"0 ABBEVILLE HAUTS-DE-France 23278\n",
"1 AGDE OCCITANIE 26946\n",
"2 AGEN NOUVELLE-AQUITAINE 33988\n",
"3 AIGUILLES PROVENCE-ALPES-COTE D'AZUR 425\n",
"4 AIGUINES PROVENCE-ALPES-COTE D'AZUR 271"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_map = pandas.read_excel(src, sheetname=None) \n",
"df1=df_map[\"frequentation\"]\n",
"df2=df_map[\"habitants\"]\n",
"df2.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**2. Combien de musées sont dans la ville de Lyon ?**"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" NOM DU MUSEE | \n",
" VILLE | \n",
" ENTREES | \n",
"
\n",
" \n",
" \n",
" \n",
" 361 | \n",
" Musée des Sapeurs-Pompiers de Lyon | \n",
" LYON | \n",
" 9248.0 | \n",
"
\n",
" \n",
" 629 | \n",
" Musée de l'Imprimerie et de la Communication G... | \n",
" LYON | \n",
" 26478.0 | \n",
"
\n",
" \n",
" 781 | \n",
" Centre d'Histoire de la Résistance et de la Dé... | \n",
" LYON | \n",
" 59935.0 | \n",
"
\n",
" \n",
" 785 | \n",
" Musée Historique des Tissus - Musée des Arts D... | \n",
" LYON | \n",
" 60391.0 | \n",
"
\n",
" \n",
" 824 | \n",
" Musées Gadagne | \n",
" LYON | \n",
" 79449.0 | \n",
"
\n",
" \n",
" 847 | \n",
" Musée de la Civilisation Gallo-Romaine | \n",
" LYON | \n",
" 94476.0 | \n",
"
\n",
" \n",
" 869 | \n",
" Musée d'Art Contemporain de Lyon | \n",
" LYON | \n",
" 135000.0 | \n",
"
\n",
" \n",
" 914 | \n",
" Musée des Beaux-Arts | \n",
" LYON | \n",
" 334459.0 | \n",
"
\n",
" \n",
" 926 | \n",
" Muséum d'histoire naturelle - Musée des Conflu... | \n",
" LYON | \n",
" 767509.0 | \n",
"
\n",
" \n",
" 1050 | \n",
" Musée des Hospices Civils de Lyon | \n",
" LYON | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NOM DU MUSEE VILLE ENTREES\n",
"361 Musée des Sapeurs-Pompiers de Lyon LYON 9248.0\n",
"629 Musée de l'Imprimerie et de la Communication G... LYON 26478.0\n",
"781 Centre d'Histoire de la Résistance et de la Dé... LYON 59935.0\n",
"785 Musée Historique des Tissus - Musée des Arts D... LYON 60391.0\n",
"824 Musées Gadagne LYON 79449.0\n",
"847 Musée de la Civilisation Gallo-Romaine LYON 94476.0\n",
"869 Musée d'Art Contemporain de Lyon LYON 135000.0\n",
"914 Musée des Beaux-Arts LYON 334459.0\n",
"926 Muséum d'histoire naturelle - Musée des Conflu... LYON 767509.0\n",
"1050 Musée des Hospices Civils de Lyon LYON NaN"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.loc[df1['VILLE']=='LYON',:]#.count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La fonction $\\texttt{pandas.merge}$ va automatiquement reconnaître que la colonne VILLE est commune aux deux Dataframes, et va l'utiliser comme condition de [jointure](https://openclassrooms.com/fr/courses/4452741-decouvrez-les-librairies-python-pour-la-data-science/5559346-effectuez-les-operations-dalgebre-relationnelle-sur-les-dataframes).\n",
"\n",
"**3. Quel est le nombre d'habitants de la ville du musée Alpin ?**"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" NOM DU MUSEE | \n",
" VILLE | \n",
" ENTREES | \n",
" REGION | \n",
" HABITANTS | \n",
"
\n",
" \n",
" \n",
" \n",
" 947 | \n",
" Musée Alpin | \n",
" CHAMONIX | \n",
" 35747.0 | \n",
" AUVERGNE-RHONE-ALPES | \n",
" 8906 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" NOM DU MUSEE VILLE ENTREES REGION HABITANTS\n",
"947 Musée Alpin CHAMONIX 35747.0 AUVERGNE-RHONE-ALPES 8906"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df3 = pandas.merge(df1, df2)\n",
"df3.loc[df3['NOM DU MUSEE']=='Musée Alpin',:]\n",
"##liste individus avec \n",
"#lignes => filtre 'NOM DU MUSEE'='Musée Alpin' #colonnes = : (toutes les colonnes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**4. Quelle est la somme des entrées des musées de Lyon ?**"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ENTREES | \n",
"
\n",
" \n",
" VILLE | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" LYON | \n",
" 1566945.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ENTREES\n",
"VILLE \n",
"LYON 1566945.0"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1.loc[df1['VILLE']=='LYON',:].groupby('VILLE').sum()"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "Ehrenfest.ipynb",
"provenance": [],
"version": "0.3.2"
},
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}