{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 19 Tableaux et analyse de données" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.1 Tableau unidimensionnel de données" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[2,\n", " 3,\n", " 5,\n", " 7,\n", " 11,\n", " 13,\n", " 17,\n", " 19,\n", " 23,\n", " 29,\n", " 31,\n", " 37,\n", " 41,\n", " 43,\n", " 47,\n", " 53,\n", " 59,\n", " 61,\n", " 67,\n", " 71,\n", " 73,\n", " 79,\n", " 83,\n", " 89,\n", " 97]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import isprime\n", "L = [i for i in range(100) if isprime(i)]\n", "L" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 2\n", "1 3\n", "2 5\n", "3 7\n", "4 11\n", "5 13\n", "6 17\n", "7 19\n", "8 23\n", "9 29\n", "10 31\n", "11 37\n", "12 41\n", "13 43\n", "14 47\n", "15 53\n", "16 59\n", "17 61\n", "18 67\n", "19 71\n", "20 73\n", "21 79\n", "22 83\n", "23 89\n", "24 97\n", "dtype: int64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import Series\n", "s = Series(L)\n", "s" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "43" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[13]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "24" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.argmax()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 2\n", "1 5\n", "2 10\n", "3 17\n", "4 28\n", "5 41\n", "6 58\n", "7 77\n", "8 100\n", "9 129\n", "10 160\n", "11 197\n", "12 238\n", "13 281\n", "14 328\n", "15 381\n", "16 440\n", "17 501\n", "18 568\n", "19 639\n", "20 712\n", "21 791\n", "22 874\n", "23 963\n", "24 1060\n", "dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.cumsum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.2 Afficher quelques statistiques" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "count 25.000000\n", "mean 42.400000\n", "std 29.475979\n", "min 2.000000\n", "25% 17.000000\n", "50% 41.000000\n", "75% 67.000000\n", "max 97.000000\n", "dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.describe()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "42.399999999999999" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.mean()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "29.475978920696313" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.std()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.min()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 6\n", "2 22\n", "3 46\n", "4 118\n", "5 166\n", "6 286\n", "7 358\n", "8 526\n", "9 838\n", "10 958\n", "11 1366\n", "12 1678\n", "13 1846\n", "14 2206\n", "15 2806\n", "16 3478\n", "17 3718\n", "18 4486\n", "19 5038\n", "20 5326\n", "21 6238\n", "22 6886\n", "23 7918\n", "24 9406\n", "dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def f(p):\n", " return p**2 - 3\n", "s.apply(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.3 Opérations sur une série" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 20045\n", "1 30045\n", "2 50045\n", "3 70045\n", "4 110045\n", "5 130045\n", "6 170045\n", "7 190045\n", "8 230045\n", "9 290045\n", "10 310045\n", "11 370045\n", "12 410045\n", "13 430045\n", "14 470045\n", "15 530045\n", "16 590045\n", "17 610045\n", "18 670045\n", "19 710045\n", "20 730045\n", "21 790045\n", "22 830045\n", "23 890045\n", "24 970045\n", "dtype: int64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s * 10000 + 45" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 0.001887\n", "1 0.002830\n", "2 0.004717\n", "3 0.006604\n", "4 0.010377\n", "5 0.012264\n", "6 0.016038\n", "7 0.017925\n", "8 0.021698\n", "9 0.027358\n", "10 0.029245\n", "11 0.034906\n", "12 0.038679\n", "13 0.040566\n", "14 0.044340\n", "15 0.050000\n", "16 0.055660\n", "17 0.057547\n", "18 0.063208\n", "19 0.066981\n", "20 0.068868\n", "21 0.074528\n", "22 0.078302\n", "23 0.083962\n", "24 0.091509\n", "dtype: float64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s / sum(s)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t = Series([i**3 for i in range(25)])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 0\n", "1 1\n", "2 8\n", "3 27\n", "4 64\n", "5 125\n", "6 216\n", "7 343\n", "8 512\n", "9 729\n", "10 1000\n", "11 1331\n", "12 1728\n", "13 2197\n", "14 2744\n", "15 3375\n", "16 4096\n", "17 4913\n", "18 5832\n", "19 6859\n", "20 8000\n", "21 9261\n", "22 10648\n", "23 12167\n", "24 13824\n", "dtype: int64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 3\n", "2 390625\n", "3 -9223372036854775808\n", "4 -9223372036854775808\n", "5 -9223372036854775808\n", "6 -9223372036854775808\n", "7 -9223372036854775808\n", "8 -9223372036854775808\n", "9 -9223372036854775808\n", "10 -9223372036854775808\n", "11 -9223372036854775808\n", "12 -9223372036854775808\n", "13 -9223372036854775808\n", "14 -9223372036854775808\n", "15 -9223372036854775808\n", "16 -9223372036854775808\n", "17 -9223372036854775808\n", "18 -9223372036854775808\n", "19 -9223372036854775808\n", "20 -9223372036854775808\n", "21 -9223372036854775808\n", "22 -9223372036854775808\n", "23 -9223372036854775808\n", "24 -9223372036854775808\n", "dtype: int64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s ** t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.4 Concaténation de deux séries" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
020
131
258
3727
41164
513125
617216
719343
823512
929729
10311000
11371331
12411728
13432197
14472744
15533375
16594096
17614913
18675832
19716859
20738000
21799261
228310648
238912167
249713824
\n", "
" ], "text/plain": [ " 0 1\n", "0 2 0\n", "1 3 1\n", "2 5 8\n", "3 7 27\n", "4 11 64\n", "5 13 125\n", "6 17 216\n", "7 19 343\n", "8 23 512\n", "9 29 729\n", "10 31 1000\n", "11 37 1331\n", "12 41 1728\n", "13 43 2197\n", "14 47 2744\n", "15 53 3375\n", "16 59 4096\n", "17 61 4913\n", "18 67 5832\n", "19 71 6859\n", "20 73 8000\n", "21 79 9261\n", "22 83 10648\n", "23 89 12167\n", "24 97 13824" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pandas import concat\n", "df = concat([s,t], axis=1)\n", "df" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.5 Tableau 2-dimensionnel de données" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pa\n", "d = {'nb premiers':s, 'cubes':t}\n", "df = pa.DataFrame(d, columns=['nb premiers', 'cubes'])" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nb premierscubes
020
131
258
3727
41164
513125
617216
719343
823512
929729
10311000
11371331
12411728
13432197
14472744
15533375
16594096
17614913
18675832
19716859
20738000
21799261
228310648
238912167
249713824
\n", "
" ], "text/plain": [ " nb premiers cubes\n", "0 2 0\n", "1 3 1\n", "2 5 8\n", "3 7 27\n", "4 11 64\n", "5 13 125\n", "6 17 216\n", "7 19 343\n", "8 23 512\n", "9 29 729\n", "10 31 1000\n", "11 37 1331\n", "12 41 1728\n", "13 43 2197\n", "14 47 2744\n", "15 53 3375\n", "16 59 4096\n", "17 61 4913\n", "18 67 5832\n", "19 71 6859\n", "20 73 8000\n", "21 79 9261\n", "22 83 10648\n", "23 89 12167\n", "24 97 13824" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nb premierscubes
count25.00000025.000000
mean42.4000003600.000000
std29.4759794236.452427
min2.0000000.000000
25%17.000000216.000000
50%41.0000001728.000000
75%67.0000005832.000000
max97.00000013824.000000
\n", "
" ], "text/plain": [ " nb premiers cubes\n", "count 25.000000 25.000000\n", "mean 42.400000 3600.000000\n", "std 29.475979 4236.452427\n", "min 2.000000 0.000000\n", "25% 17.000000 216.000000\n", "50% 41.000000 1728.000000\n", "75% 67.000000 5832.000000\n", "max 97.000000 13824.000000" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.6 Accéder à une colonne d'un tableau" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 0\n", "1 1\n", "2 8\n", "3 27\n", "4 64\n", "5 125\n", "6 216\n", "7 343\n", "8 512\n", "9 729\n", "10 1000\n", "11 1331\n", "12 1728\n", "13 2197\n", "14 2744\n", "15 3375\n", "16 4096\n", "17 4913\n", "18 5832\n", "19 6859\n", "20 8000\n", "21 9261\n", "22 10648\n", "23 12167\n", "24 13824\n", "Name: cubes, dtype: int64" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['cubes']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.7 Afficher les premières/dernières lignes" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "L = [isprime(i) for i in range(10000)]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[False, False, True, True, False, True, False, True, False, False]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L[:10]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "L = map(isprime, range(10000))" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[False, False, True, True, False, True, False, True, False, False]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "L[:10]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true }, "outputs": [], "source": [ "s = Series(L)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t = s.cumsum()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df = pa.DataFrame()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df['isprime'] = s" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df['pi_x'] = t" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_x
0False0
1False0
2True1
3True2
4False2
\n", "
" ], "text/plain": [ " isprime pi_x\n", "0 False 0\n", "1 False 0\n", "2 True 1\n", "3 True 2\n", "4 False 2" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_x
9992False1229
9993False1229
9994False1229
9995False1229
9996False1229
9997False1229
9998False1229
9999False1229
\n", "
" ], "text/plain": [ " isprime pi_x\n", "9992 False 1229\n", "9993 False 1229\n", "9994 False 1229\n", "9995 False 1229\n", "9996 False 1229\n", "9997 False 1229\n", "9998 False 1229\n", "9999 False 1229" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.tail(8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.8 Sous-tableau" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_x
500False95
501False95
502False95
503True96
504False96
505False96
506False96
507False96
508False96
509True97
510False97
511False97
512False97
513False97
514False97
515False97
516False97
517False97
518False97
519False97
\n", "
" ], "text/plain": [ " isprime pi_x\n", "500 False 95\n", "501 False 95\n", "502 False 95\n", "503 True 96\n", "504 False 96\n", "505 False 96\n", "506 False 96\n", "507 False 96\n", "508 False 96\n", "509 True 97\n", "510 False 97\n", "511 False 97\n", "512 False 97\n", "513 False 97\n", "514 False 97\n", "515 False 97\n", "516 False 97\n", "517 False 97\n", "518 False 97\n", "519 False 97" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[500:520]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.9 Ajouter une colonne dans un tableau" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from math import log " ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1085.7362047581294" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "10000 / log(10000)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1229.0" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from math import sqrt\n", "12.29*sqrt(10000)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def x_sur_log_x(x): \n", " if x > 1: \n", " return x/log(x) \n", " else: \n", " return None " ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": false }, "outputs": [], "source": [ "X = Series(range(10000))\n", "gauss = X.apply(x_sur_log_x)\n", "nous = X.apply(lambda x:12.29*sqrt(x))" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df['x_logx'] = gauss\n", "df['nous'] = nous" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_xx_logxnous
0False0NaN0.000000
1False0NaN12.290000
2True12.88539017.380685
3True22.73071821.286904
4False22.88539024.580000
\n", "
" ], "text/plain": [ " isprime pi_x x_logx nous\n", "0 False 0 NaN 0.000000\n", "1 False 0 NaN 12.290000\n", "2 True 1 2.885390 17.380685\n", "3 True 2 2.730718 21.286904\n", "4 False 2 2.885390 24.580000" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.10 Visualiser les données" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n3wGJPgsAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot()" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "del df['nous']\n", "df[:100].plot()" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sympy import Li\n", "df['Li_x'] = Series([Li(x).n() for x in range(10000)], dtype='float64')" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_xx_logxLi_x
0False0NaN-1.045164
1False0NaN-inf
2True12.8853900.000000
3True22.7307181.118425
4False22.8853901.922421
\n", "
" ], "text/plain": [ " isprime pi_x x_logx Li_x\n", "0 False 0 NaN -1.045164\n", "1 False 0 NaN -inf\n", "2 True 1 2.885390 0.000000\n", "3 True 2 2.730718 1.118425\n", "4 False 2 2.885390 1.922421" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 -1.045164\n", "1 -inf\n", "2 0.000000\n", "3 1.118425\n", "4 1.922421\n", "5 2.589425\n", "6 3.177059\n", "7 3.711888\n", "8 4.208555\n", "9 4.676074\n", "10 5.120436\n", "11 5.545845\n", "12 5.955384\n", "13 6.351384\n", "14 6.735662\n", "15 7.109661\n", "16 7.474553\n", "17 7.831301\n", "18 8.180711\n", "19 8.523462\n", "20 8.860136\n", "21 9.191234\n", "22 9.517189\n", "23 9.838383\n", "24 10.155152\n", "25 10.467793\n", "26 10.776570\n", "27 11.081723\n", "28 11.383464\n", "29 11.681988\n", " ... \n", "9970 1241.834312\n", "9971 1241.942921\n", "9972 1242.051528\n", "9973 1242.160134\n", "9974 1242.268739\n", "9975 1242.377343\n", "9976 1242.485945\n", "9977 1242.594547\n", "9978 1242.703147\n", "9979 1242.811746\n", "9980 1242.920344\n", "9981 1243.028940\n", "9982 1243.137536\n", "9983 1243.246130\n", "9984 1243.354723\n", "9985 1243.463315\n", "9986 1243.571906\n", "9987 1243.680495\n", "9988 1243.789084\n", "9989 1243.897671\n", "9990 1244.006257\n", "9991 1244.114842\n", "9992 1244.223425\n", "9993 1244.332008\n", "9994 1244.440589\n", "9995 1244.549169\n", "9996 1244.657748\n", "9997 1244.766326\n", "9998 1244.874903\n", "9999 1244.983478\n", "Name: Li_x, dtype: float64" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.Li_x" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEACAYAAACgS0HpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdcVeUfwPHP4yD3wAUI4t45U9NKKU2basuVVmpqOUvN\n1H6lmZna0KxcOStn2dBSU1Msc5eDHDgZiuAEEVDW9/fHuQhuhAv3At/363VfnHvuuec85+Fyvzzb\niAhKKaXUneRydAKUUkplDRowlFJKpYoGDKWUUqmiAUMppVSqaMBQSimVKhowlFJKpUqqA4YxZrYx\nJswYs/cmrw0xxiQaY1xT7BthjDlsjDlgjGmdYn8DY8xeY8whY8zk9N+CUkqpzHA3JYy5QJvrdxpj\nPIFHgcAU+2oAHYAawOPAVGOMsb08DegpIlWBqsaYG86plFLK+aQ6YIjIJuDCTV6aBLx13b52wGIR\niReRAOAw0NgY4wYUFpEdtuO+AdrfdaqVUkplunS1YRhj2gLBIuJ33UtlgeAUz0/a9pUFTqTYf8K2\nTymllJPLk9Y3GmPyAyOxqqOUUkplc2kOGEAloDywx9Y+4Qn8a4xpjFWiKJfiWE/bvpOA103235Qx\nRie6UkqpNBARc+ej7s7dVkkZ2wMR+U9E3ESkoohUwKpeqi8ip4HlQEdjjIsxpgJQGdguIqFAhDGm\nsS3IvAT8crsLiog+RBg1apTD0+AsD80LzQvNi9s/MsrddKtdCGzG6tkUZIzpft0hQnIw2Q8sBfYD\nK4G+knwX/YDZwCHgsIisTt8tKKWUygyprpISkS53eL3idc8/Aj66yXH/APem9rpKKaWcg470ziJ8\nfHwcnQSnoXmRTPMimeZFxjMZWd+VXsYYceb0KaWUMzLGIBnQ6J2eXlIOU758eQIDA+98oEoTb29v\nAgICHJ0MpZSTyZIlDFv0dECKcgbNX6WytowqYWgbhlJKqVTRgKGUUipVNGAopZRKFQ0Ydla7dm3+\n/PNPu57zo48+onfv3nY9p1JK3S1t9FY30PxVKmvTRu8cKiEhwdFJUEopQAOG3VWoUIH169ezY8cO\nGjVqRNGiRXF3d2fo0KEABAYGkitXLr7++mvKli1L2bJl+fTTT6++//333+eFF16gW7duFCtWjPnz\n5/P+++/TrVu3a94/b948ypUrR4kSJZgxYwY7d+6kbt26uLq6MmDAgGvSNGfOHGrWrEmJEiV4/PHH\nCQoKyrwMUUplGxow7CxpJdpBgwbxxhtvEBERwdGjR+nQocM1x/n6+nL06FF+//13JkyYwPr166++\ntnz5cjp06EB4eDhdunS55rxJtm/fzpEjR1iyZAlvvPEG48aNY/369fz3338sXbqUv/76C4BffvmF\n8ePH8/PPP3PmzBkeeughOnfunJFZoJTKprJlwDDGPo+0SKr7d3Fx4ciRI5w7d44CBQrQuHHja44b\nPXo0+fLlo3bt2nTv3p1FixZdfa1p06Y8/fTTAOTLl+8m92d47733cHFxoVWrVhQsWJDOnTtTokQJ\nPDw8eOihh9i1axcAM2bMYMSIEVStWpVcuXIxfPhwdu/eTXBw8A3nVUqp28mWAUPEPo/0mD17Nv7+\n/lSvXp0mTZrw22+/XX3NGIOnp+fV597e3oSEhFx97uXlxZ2ULl366nb+/PkpU6bMNc8vXboEWFVY\ngwYNwtXVFVdXV0qUKIExhpMnb7lulVJK3VSWnEsqK6hUqRILFy4EYNmyZTz//POcP38esEohwcHB\nVK1aFYCgoCA8PDyuvvf66qf08PLy4n//+59WQyml0i1bljCcwYIFCzh79iwARYsWxRhDrlzJ2f3B\nBx8QExPDvn37mDt3Lp06dUr1ue+my+trr73GuHHj2L9/PwARERH88MMPqX6/Ukol0RKGnSWVDlav\nXs3gwYOJiYnB29ubJUuWcM8991w9rkWLFlSuXBkRYdiwYbRs2fKur5Ga5+3btycqKopOnToRFBRE\n0aJFefTRR3n++efTcntKKSeWIMKmiIgMO78O3MtkgYGBVKxYkbi4uGtKHM4kK+evUjlRVEIC80JD\n+Sw4mDIuLmxp2FDXw8gu9MtYKWUPYbGxfHXyJNNDQniwaFHmVqtKg4IuFM6g66X6X1xjzGxjTJgx\nZm+KfRONMQeMMbuNMcuMMUVSvDbCGHPY9nrrFPsbGGP2GmMOGWMm2+9Wsg57NmorpXIe/+ho+vj7\nU2P7ds7ExfFDFXdKHPucp6aXp8wnZe58gjS6mzqRuUCb6/atAWqJSD3gMDACwBhTE+gA1AAeB6aa\n5G/JaUBPEakKVDXGXH/ObM3b25uEhASnrY5SSjknEWFTeDjt/Px4aNcu3F1c+LFCYcJ2DeeR6VWJ\njo9mU49NRI2MyrA0pPpbS0Q2AReu27dORBJtT7cCSYML2gKLRSReRAKwgkljY4wbUFhEdtiO+wZo\nn470K6VUtpYgwrIzZ2j677+8cvAgj7m6sqmmJwF73qfV7IZ4FfHi+KDjLHh2AXXK1MnQtNizDaMH\nkDRcuSywJcVrJ2374oETKfafsO1XSimVQnRCAnNtDdmlXVwYVq4c97lc4bMtH9N32+d0rdOVIwOP\nUL5Y+UxLk10ChjHmHSBORBbd8WCllFK3dDo2li9tDdkPFC3KNzVqUDIulElb36XL7nk8Xe1pdvXZ\nRT23epmetnQHDGPMK8ATwCMpdp8EUs5v4Wnbd6v9tzR69Oir2z4+Pvj4+KQnuUop5ZT8o6P5LDiY\npWfO0LFUKf6qX5/YyKMM+vkZNgRsoHeD3mx4eQNNvZre8F5fX198fX0zPI13NQ7DGFMeWCEi99qe\nPwZ8CjQXkXMpjqsJLACaYFU5rQWqiIgYY7YCA4EdwG/AFBFZfYvrZbtxGFmB5q9SmUNE+Dsigk+C\ng9l88SKve3jwQrG8TNv8EcfDj7P22FoG3z+Y/zX/H4XvSX1nWYcvoGSMWQhsxurZFGSM6Q58ARQC\n1hpj/jXGTAUQkf3AUmA/sBLom+Kbvx8wGzgEHL5VsMhuNm3aRI0aNRydDKWUE0hqyG62axevHDxI\na1dXfqtUhD3b3qTeF+WJuBJBl3u7cHjAYSY8OuGugkVG0pHe6gaav0pljOgUI7JLubjwlpcXTxQv\nSv+VfZm3ex7DHxxOv0b9cC/snq7rZFQJQ0d6K6VUBjttG5E9LSSEZkWKML9GDerky8XvR3+nwdL3\nKOhSkAP9DlClRBVHJ/W2dPSYnVWoUIHx48dTq1YtSpQoQc+ePYmNjWXjxo13XOfi2LFjlChRgt27\ndwMQEhJC6dKl+fPPPzMj6UopOztkG5Fdbft2wmJj+at+fRZUq8ieQwvwnOTJB39+wIDGA9jSc4vT\nBwvQgJEhFi5cyNq1azl69Cj+/v6MHTsWuPOUIBUrVmTixIl07dqVmJgYunfvTvfu3WnevHlmJFsp\nZQdJDdnt/fx4cNcu3Fxc8G/cmMElDbM2jaLUx6WYs2sO89vPZ89re3i90evkyZU1KnuyRirvknnf\nPlV3Mipt9fgDBgy4uiDSO++8w4ABA1I9fXnPnj1ZsWIFTZo0IVeuXFeDjVLKuSWKsPzsWSYGB3M6\nNpbBXl4srFmT81GnGPrbqyz6bxFd7u3Cb11+4+EKDzs6uWmSLQNGWr/o7eX65VdPnTp1V+9/9dVX\nadeuHTNnziRv3rz2Tp5Syo4uJyTwXVgYHwcHUzRPHoZ5efFMqVKcvBjMkFX9mf7PdLrW6crhAYcz\ndVR2RtAqqQwQHBx8dTswMPCa5VfvJCoqijfeeIOePXsyevRowsPDMyKJSql0uhAXx0eBgVTYto2f\nzp5lRtWqbKlfj5Dji2kwox6VplTiXMw5/Pv78+0z32b5YAHardbuKlSoQJEiRVi5ciX58+enXbt2\n+Pj40KpVK7p27XpNMLmZnj17EhMTw8KFC+nTpw/h4eEsWbIkk1Jvceb8VcrRgi9fZvKJE8wNDeXp\nEiUY6uVF5Xtys+zAMvqv7I9bITcmPjqR5t7NKZavmEPSqN1qs5AuXbrQunVrTp06Rfv27XnnnXfY\ntm3bHRu9ly9fzpo1a/Dz8wPgs88+o379+ixatIjOnTtnRtKVUrfgd+kSnwQHs+LcObq7ubHnvvvI\nFXuOpX5f03LTR5QqWIpJbSbxSr1Xsu2aN1rCsLMKFSowe/ZsHnnkkTsf7KScOX+VykwiwsbwcCYG\nB7Pr0iUGli3Lax4e+If9w6DVg9gTuoeGHg0Z+eBInqjyhNMECi1hKKVUJkkQ4aczZ5gYHExEfDxv\neXmxrFYt9p7aSf8VI1n832LG+Ixh/UvrKehS0NHJzTQaMOzsTv9hBAcHU7NmzWuOExGMMezfv/+a\nHlZKqcwVY5u641Pb1B0jy5WjbcmS/HfajxZz2rPvzD461erEsYHH8C7m7ejk3lxERIadWquk1A00\nf1VOcy4ujqknT/LlyZM0KVKEYV5ePFC0KFcSrjB0zVDm7JrD4KaDGe0z2jkH2SUmwpo1MH06bN2K\nCQvTKimllLKngJgYJp04wbdhYTxTsiQb6tWjZsGCxCXEMX7TeCZtnURl18r81/c/Khav6Ojk3igs\nDObMga+/huLF4bXX4LvvoHDGzG6rAUMplePsjozk4+BgVp8/z6vu7vg1akTZe+7hyPkjjN7xHZ9s\n/oTKrpVZ8vwSfMr7OE1jNgAisGGDVZpYuxaeew6WLoX77svwS2uVlLqB5q/KjkSEPy5cYGJwMPui\nonjD05PeHh4QH8Ufx/9gS/AWJm+bzPM1n+fV+q/SsmLqpvPJNOfOwbx5MHMmuLhYpYmuXaFo0RsO\n1V5SSimVBvGJifxg6/F0OTGRt7y86FKmDGGRJ/hy8wT+t+F/NPNqRq1Stfin9z/UKVPH0UlOJgJ/\n/22VJn79Fdq2hblzoWlTcECpRwOGUipbikpIYO6pU3x64gSe99zD++XL06Z4UVYdXsmAnb/x9b9f\n09y7OZt7bL7pOtkOFR4O334LM2ZAfDz06QNTpoCrq0OTpQHDwR5++GG6detGjx49HJ0UpbKFM7Gx\nfGlbrOiBokVZUKMGzYoWZYX/Ckp+/SJeRb1oU6kNxwYeo0LxCo5ObjIR2LHDKk389BO0aQNffgkt\nWjikNHEzGjCUUtnC0ZgYPgsOZuHp07xQqhR/1a9PtQIF2BO6hxrfdSI4IpipT06lW51uztWIHRkJ\nCxdapYmICOjdG/z9oXRpR6fsBqmerdYYM9sYE2aM2ZtiX3FjzBpjjL8x5ndjTNEUr40wxhw2xhww\nxrROsb+BMWavMeaQMWay/W5FKZUT/RMZScd9+2jyzz8UzZOH/Y0a8ZFXSXYfW0HtqbWpN6MeXWp3\n4eKIi7xU9yXnCRa7d1sN197e1hiK8ePh8GF4+22nDBZwd9ObzwXaXLdvOLBORKoB64ERAMaYmkAH\noAbwODDVJP+WpgE9RaQqUNUYc/05s6z0LrEqIowdO5by5cvj5ubGK6+8wsWLF6++/s0331C+fHlK\nlSrF2LFjqVChAuvXrwfgySefZOjQoVeP7dSpE6+++qod704p5yEirDt/nla7d9P+v/9oUqQIx++/\nn7EVyjNr60S8JnkxcfNE+jbqS9y7cbzb4l1yGSdYzSE62mq0vv9+qwG7bFn47z9Ytgxat4ZcTpDG\n2xGRVD8Ab2BviucHgTK2bTfgoG17OPB2iuNWAU1sx+xPsb8TMO0215ObudV+ZzBr1iypVauWREdH\nS+vWrWXYsGG3Pd7Hx0dmz54tIiKzZ8+WKlWqSEBAgERFRcmzzz4r3bp1ExGRffv2SaFChWTz5s0S\nFxcnQ4cOFRcXF/njjz9ERCQ0NFTKlCkjGzZskO+++04qVaokUVFRaboHZ85flbPFJybK0rAwabBj\nh9TYtk3mnTolVxIS5MCZA/L22rfF8zNPqf5lddkbutfRSb3W/v0igwaJlCgh8uSTIitWiMTHZ9jl\nbH/Dd/X9nppHegPG+eteP2/7+QXQJcX+WcCzQENgTYr9DwLLb3O922XG7XLLPo80ateundx7771S\nt25diY2Nve2xKQNGy5YtZdq0aVdf8/f3FxcXF0lISJAxY8ZIly5drr4WHR19TcAQEfnxxx/Fy8tL\nSpUqJZs3b05z+jVgKGcTEx8vM06elMpbt8r9//wjP585IxcvR0rfX/uK6wRXYTTS/efu8qv/r5KY\nmOjo5FquXBFZskTEx0ekTBmRkSNFAgIy5dIZFTDs3eht99Feo0ePvrrt4+ODj49PKlLh2EFnaV1i\nNSQkBG/v5AnNvL29iY+PJywsjJCQELy8vK6+lj9/fkqUKHHN+5966in69+9PtWrVaNrUyboJKpUG\nEfHxTA8J4fMTJ6hfqBCzq1XjgSKFGbJmCN12zaGJZxPWdF3DvWXuxSW3i6OTawkMtAbXzZkD1avD\n669D+/bWYLsM4uvri6+vb4adP0l6A0aYMaaMiIQZY9yA07b9JwGvFMd52vbdav8tpQwYWcH1S6w+\n99xzFCuWulW3PDw8CAwMvPo8MDCQPHnyUKZMGdzd3Tl06NDV12JiYjh37tw17x85ciQ1a9bk+PHj\nLF68mE6dOtnnppTKZKFXrvD5yZPMDAnhMVdXVt57L7mij7Pkn49pu+MrqpaoyoaXN9DQo6Gjk2pJ\nSIDVq2HaNNiyBbp1g/XroUaNTLn89f9Mv//++xlzobspjgDlAb8Uzydga6sA3gbG27ZrArsAF6AC\ncITkaUi2Ao0BA6wEHrvN9W5X3HJKPXr0kM6dO4uISO/evaVDhw63PT5lldSsWbOkatWqcvz4cYmM\njJTnn39eXnrpJRGx2jCKFCkiW7ZskdjYWBk2bNg1VVIbN26UUqVKyalTp+Svv/6SkiVLSkhISJru\nwZnzV2Vvh6OipM/Bg1L8r7+kn7+/7L94Xsb/NV4KjSskecbkkc4/dJYtwVucp9opNFRk3DgRb2+R\nRo1EZs8WSWPboT3h6DYMYCEQAlwBgoDuQHFgHeAPrAGKpTh+hC1QHABap9jfEPADDgOf3+Gat8sM\np/PLL7+Ip6enXLhwQURELl26JFWqVJGFCxfe8j0PP/zw1YCRmJgoH3zwgXh5eUnp0qXlpZdekvDw\n8KvHzp8/X8qVKyclS5aUsWPHiqenp2zatEkuXrwo5cuXl6VLl149dvjw4dKmTZs03Yez5q/Kvv65\neFE6/PeflPjrL/nfsWMSEhMti/0WS54xeaTZ7Gay+vBqRycxWWKiiK+vSMeOIsWKifTsKbJzp6NT\ndY2MChg6+WAWFRUVRbFixThy5Mg17R72oPmrMoOIsCE8nPFBQeyPimKwlxfPFnNhzs6vmPnPTGIT\n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\nSmVbWSpgBMTE0GLnJk4HrOP3eb/w0OFozOTJOvBOKaUyQZap5Pe9cJ7aWzfi5vs1F96cSfP72mEO\nHIBnn9VgoZRSmcBhJQxjzGPAZKygNVtEJtzq2HknjtL7wH4+nD6egf7nuef3ddCwYaalVSmllINK\nGMaYXMCXQBugFtDZGFP9Zsd+ctSPfnv3sm7YCN68tyX3/LtHg4VSSjmAo0oYjYHDIhIIYIxZDLQD\nDl5/4If7DvHHmFE0mTkX06hRJidTKaVUEkcFjLJAcIrnJ7CCyA1mLZzF/es3Q5EimZIwpZRSN+f0\njd4vLPkNU7QIxpCmR/Hidz6mcOHbv16wIBQokPw8X76bH3f//alPV968d75u06ZQuvSN+6tWtX66\nu9/4WuXKNz9XhQrJ1/Xyuvt8bNDg2ue5c0O1alCyZPI+V1e4777k57VqWdcqWtR6XqjQtcfeKq+N\nsf4/uP61UqWSt1OeyxioWBHy57eul/S7SsqnlOdzcUnOh6TX8uRJ3s6f/9p9JUrcOk+SzmUMFCt2\n7Wspz3n9/aa8dsrfde7c1+7z9Lx53lx/b9c/Uv5ObvYoVgzq1rW2a9S4Nq0pP+dJed6iBbi53fj5\nvT5vks5TpsyN91K5snWuRo2sz4Wrq5V/N/s93+zh4XHrv+UGDazfv7f3jZ/R6z83KfeXLJmcp9Wr\n310eJt1ryt9rs2a3//waY/X8T/m5uVW+G2PlVdJ28eLJ3wXXf7auT9crr2Tc97GjAsZJoFyK5562\nfTcQxgCjbQ9fwPpwJMmd+/YXSs0UUh4eXF2yO3/+m79eLkVq3dySt11crA8XWH/EAOXL3/56bm7W\nH5u7u/VBSKls2eTt2rWT7zVfPutnqVLWFzVYX46QHNDA+gK4mfr1k9N2q+EqhQtfe28p1a59Yzo9\nPZPTAtC4Mdx7b/LzqlWtvEu6XqVK1s977rn2Ou7uydtJx1aubKUnpbp1rT/QIkWsfMmXL/n3Ur16\n8u/R3d36XCStsOvqmvw7Sfo8PPKIFcjACnIpr587N9SsaT0vXz75i+h6Hh43zx9XVysAeHsn70vZ\n7Fa5cvJ7k/KkXj0rT/LmtZ6XLm3dU0re3taXsTHW9YoVu/b1vHmtR1IeurjcmM6ke6pXz9quXz/5\nd+HiYqWnXDnrM50nj3XNihWTP4dJQdXdPTntKe+7XDnr95702UxSo4b1ealY0douV85KR8pzJOXx\n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\nihuGmZlV+QkwmkkwUe1EVQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.11 Exporter des données" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pandas import ExcelWriter\n", "writer = ExcelWriter('tableau.xlsx')\n", "df.to_excel(writer, 'Feuille 1')\n", "writer.save()" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df.to_csv('tableau.csv')" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16-02-01.ipynb 16-02-16.ipynb 16-03-22.ipynb 16-04-19.ipynb tableau.csv\r\n", "16-02-03.ipynb 16-02-23.ipynb 16-04-12.ipynb 16-05-03.ipynb tableau.xlsx\r\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ",isprime,pi_x,x_logx,Li_x\r\n", "0,False,0,,-1.04516378012\r\n", "1,False,0,,-inf\r\n", "2,True,1,2.88539008178,0.0\r\n", "3,True,2,2.73071767988,1.11842481455\r\n", "4,False,2,2.88539008178,1.92242131492\r\n", "5,True,3,3.1066746728,2.58942452992\r\n", "6,False,3,3.34866375931,3.17705861042\r\n", "7,True,4,3.59728839659,3.71188798588\r\n", "8,False,4,3.8471867757,4.20855451944\r\n" ] } ], "source": [ "!head tableau.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.12 Importer des données" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df2 = pa.read_excel('tableau.xlsx')" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
isprimepi_xx_logxLi_x
0False0NaN-1.045164
1False0NaN-inf
2True12.8853900.000000
3True22.7307181.118425
4False22.8853901.922421
\n", "
" ], "text/plain": [ " isprime pi_x x_logx Li_x\n", "0 False 0 NaN -1.045164\n", "1 False 0 NaN -inf\n", "2 True 1 2.885390 0.000000\n", "3 True 2 2.730718 1.118425\n", "4 False 2 2.885390 1.922421" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pa.read_csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 19.13 Exemple: analyser des données de data.gov.be" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }