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 d’une liste de dicts (les lignes)

lines_as_dicts = [
    {'name': 'snail',    'speed': 0.1,  'lifespan': 2},
    {'name': 'pig',      'speed': 17.5, 'lifespan': 8},
    {'name': 'elephant', 'speed': 40,   'lifespan': 70},
    {'name': 'rabbit',   'speed': 48,   'lifespan': 1.5},
]

pd.DataFrame(lines_as_dicts)
Loading...

à partir d’un dict de list (les colonnes)

# le code

cols_dict = {
    'name' :     ['snail', 'pig', 'elephant', 'rabbit'],
    'speed' :    [0.1,      17.5,         40,       48],
    'lifespan' : [2,           8,         70,      1.5],
}

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

pareil avec un index

# le même effet que la précédente, si on avait mis 'name' commme index

cols_dict = {
    'speed' :    [0.1,      17.5,         40,       48],
    'lifespan' : [2,           8,         70,      1.5],
}

line_ids =  ['snail', 'pig', 'elephant', 'rabbit']

pd.DataFrame(cols_dict, index = line_ids)
Loading...

à partir d’un tableau numpy

# sans préciser, on obtient un RangeIndex dans les deux directions

nd = np.array([
    [ 0.1,  2. ],
    [17.5,  8. ],
    [40. , 70. ],
    [48. ,  1.5],
])

pd.DataFrame(nd)
Loading...
# ici on indique les index dans les deux directions

pd.DataFrame(
    nd,
    index=['snail', 'pig', 'elephant', 'rabbit'],
    columns = ['speed', 'lifespan'],
)
Loading...

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