ne pas faire en cours, lire en autonomie
import pandas as pd
import numpy as npde 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)à 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)
dfpareil 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)à 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)# ici on indique les index dans les deux directions
pd.DataFrame(
nd,
index=['snail', 'pig', 'elephant', 'rabbit'],
columns = ['speed', 'lifespan'],
)exercice : création de df et type des éléments¶
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 codeAffichez 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 codecréez une
pandas.DataFrameà partir du tableau numpy
et avec pour noms de colonnes'names','speed'et'lifespan'le passage par numpy est-il une bonne idée ?dans cet exercice on vous impose de passer par le tableau numpy, ce qui en l’espèce n’est pas forcément la meilleure idée
mais ça peut être intéressant de voir ce que ça donne ... :)
# votre codeaffichez la valeur et le type du
'lifespan'de l’éléphant
Que constatez-vous ?
(objectsignifie icistr)
# votre codeaffichez la valeur et le type du
'names'de l’éléphant
Que constatez-vous ?
# votre codeavec
locouiloc, modifiez la valeurelephantpar'grey elephant more than 32 charaters long'
affichez la valeur et le type du'names'de l’éléphant
un constat ?
# votre codeaffichez le type des colonnes
utilisez l’attributdtypesdespandas.DataFrame
# votre codeavec la méthode
pandas.DataFrame.to_numpy
affichez le tableaunumpysous-jacent de votre data-frame
affichez le type du tableau
que constatez-vous ?
# votre codemodifiez les colonnes
'speed'et'lifespan'de manière à leur donner le typefloat
(utilisezpandas.Series.astypevoir les rappels en fin d’exercice)
# votre codepour 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