Skip to article frontmatterSkip to article content

ne pas faire en cours, lire en autonomie

import pandas as pd
import numpy as np

de très nombreuses voies sont possibles pour créer une dataframe par programme
en voici quelques-unes à titre d’illustration
voyez la documentation de pd.DataFrame? pour les détails

à partir du dict Python des colonnes

# le code
import pandas as pd
import numpy as np
cols_dict = {'names' : ['snail', 'pig', 'elephant', 'rabbit',
                        'giraffe', 'coyote', 'horse'],
             'speed' : [0.1, 17.5, 40, 48, 52, 69, 88],
             'lifespan' : [2, 8, 70, 1.5, 25, 12, 28], }

df = pd.DataFrame(cols_dict)
df
Loading...

à partir du dict des colonnes et d’une list (d’index) des lignes

cols_dict = {'speed' : [0.1, 17.5, 40, 48, 52, 69, 88],
             'lifespan' : [2, 8, 70, 1.5, 25, 12, 28], }

line_ids =  ['snail', 'pig', 'elephant', 'rabbit',
             'giraffe', 'coyote', 'horse']

df = pd.DataFrame(cols_dict, index = line_ids)
df.values
array([[ 0.1, 2. ], [17.5, 8. ], [40. , 70. ], [48. , 1.5], [52. , 25. ], [69. , 12. ], [88. , 28. ]])

à partir d’un numpy.ndarray

# le code
nd = np.array([[ 0.1,  2. ],
               [17.5,  8. ],
               [40. , 70. ],
               [48. ,  1.5],
               [52. , 25. ],
               [69. , 12. ],
               [88. , 28. ]])

df = pd.DataFrame(nd)
df
Loading...
# le code
nd = np.array([[ 0.1,  2. ],
               [17.5,  8. ],
               [40. , 70. ],
               [48. ,  1.5],
               [52. , 25. ],
               [69. , 12. ],
               [88. , 28. ]])

df = pd.DataFrame(nd,
                  index=['snail', 'pig', 'elephant',
                         'rabbit', 'giraffe', 'coyote', 'horse'],
                  columns = ['speed', 'lifespan'])
df['Names'] = df.index
df.values
array([[0.1, 2.0, 'snail'], [17.5, 8.0, 'pig'], [40.0, 70.0, 'elephant'], [48.0, 1.5, 'rabbit'], [52.0, 25.0, 'giraffe'], [69.0, 12.0, 'coyote'], [88.0, 28.0, 'horse']], dtype=object)

exercice : création de df et type des éléments

  1. créer un numpy.ndarray à partir de la liste suivante
animals = [['snail', 0.1, 2.0],
           ['pig', 17.5, 8.0],
           ['elephant', 40.0, 70.0],
           ['rabbit', 48.0, 1.5],
           ['giraffe', 52.0, 25.0],
           ['coyote', 69.0, 12.0],
           ['horse', 88.0, 28.0]]
# votre code
  1. Affichez le type des éléments de la table
    Que constatez-vous ? (U = Unicode) Que se passe-t-il si on essaie d’affecter dans la case (2, 0) la chaine "grey elephant more than 32 charaters long" Remettez-y le mot "elephant"
# votre code
  1. créez une pandas.DataFrame à partir du tableau numpy
    et avec pour noms de colonnes 'names', 'speed' et 'lifespan'
# votre code
  1. affichez la valeur et le type du 'lifespan' de l’éléphant
    Que constatez-vous ?
    (object signifie ici str)
# votre code
  1. affichez la valeur et le type du 'names' de l’éléphant
    Que constatez-vous ?
# votre code
  1. avec loc ou iloc, modifiez la valeur elephant par 'grey elephant more than 32 charaters long'
    affichez la valeur et le type du 'names' de l’éléphant
    un constat ?
# votre code
  1. affichez le type des colonnes
    utilisez l’attribut dtypes des pandas.DataFrame
# votre code
  1. avec la méthode pandas.DataFrame.to_numpy
    affichez le tableau numpy sous-jacent de votre data-frame
    affichez le type du tableau
    que constatez-vous ?
# votre code
  1. modifiez les colonnes 'speed' et 'lifespan' de manière à leur donner le type float
    (utilisez pandas.Series.astype voir les rappels en fin d’exercice)
# votre code
  1. pour comparer, construisez directement une dataframe à partir de l’objet liste
    a-t-on besoin dans ce cas de convertir les types des colonnes ?
# your code