Skip to article frontmatterSkip to article content

introduction sur les tables de données

lecture d’une table de données

format CSV


la librairie de data-science


on importe pandas

# le code
import pandas as pd
pd.__version__
'2.3.0'

lecture d’un fichier csv

# le code
df = pd.read_csv('data/titanic.csv')
type(df)
pandas.core.frame.DataFrame
# pour vous convaincre que les types sont bien les mêmes

pd.core.frame.DataFrame is pd.DataFrame
True
# pour afficher les premières lignes
# à votre avis, comment on voit les dernières lignes ?
df.head(2)
Loading...

lecture d’un fichier excel

# le code
# %pip install openpyxl
# le code
df1 = pd.read_excel('data/titanic.xlsx')

description rapide de la table des données

# le code

# pas besoin de 6 chiffres après la virgule
pd.options.display.precision = 2

df.describe()
Loading...
df[['Age', 'Fare']].describe()
Loading...
# le code
df.describe(include='all')
Loading...
# le code
df['Sex'].describe()
count 891 unique 2 top male freq 577 Name: Sex, dtype: object

les index et indices des tables

la notion d’index


index des colonnes

# le code
df.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')
df.columns[0]
'PassengerId'

accès aux colonnes avec df[]

df['Age'].head(2)
0 27.0 1 31.0 Name: Age, dtype: float64
# type Series
type(df['Age'])
pandas.core.series.Series
# on peut aussi passer une liste de colonnes
# auquel cas on récupère une dataframe
df[['Age', 'Sex']].head()
Loading...

accès aux colonnes avec df.

# le code
# on peut aussi accéder à une colonne par un attribut
# qui est une notation plus lisible
df.Age
0 27.00 1 31.00 2 25.00 3 NaN 4 24.00 ... 886 47.00 887 30.00 888 36.00 889 22.00 890 0.83 Name: Age, Length: 891, dtype: float64
df.Age is df['Age']
True

type des colonnes pandas.Series

# le code
type(df['Age'])
pandas.core.series.Series

indexer les lignes

# le code
# option 1.
df = pd.read_csv('data/titanic.csv', index_col='PassengerId')
# le code
# option 2.
df = pd.read_csv('data/titanic.csv')
# la table avant
df.head(1)
Loading...
# la table après
# remarquez que 'PassengerId'
# n'est plus présenté de la même manière
df = df.set_index('PassengerId')
df.head(1)
Loading...
# le code
# option 2-bis
# la méthode set_index avec son paramètre inplace à True modifie directement la table sans renvoyer une nouvelle dataframe
df = pd.read_csv('data/titanic.csv')
df.set_index('PassengerId', inplace=True)
df.head(1)
Loading...

une série aussi possède un index

# le code
df = pd.read_csv('data/titanic.csv', index_col='PassengerId')
df['Name']
PassengerId 552 Sharp, Mr. Percival James R 638 Collyer, Mr. Harvey 499 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) 261 Smith, Mr. Thomas 395 Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengt... ... 463 Gee, Mr. Arthur H 287 de Mulder, Mr. Theodore 326 Young, Miss. Marie Grice 396 Johansson, Mr. Erik 832 Richards, Master. George Sibley Name: Name, Length: 891, dtype: object
# ici on obtient bien la première ligne !

# quand on indexe une Series,
# c'est par l'index (552)
# et non pas par l'indice qui ici serait 0
df['Name'][552]
'Sharp, Mr. Percival James R'

différence entre index et indice

l’index des lignes


forme et dimension de la table

# le code
df = pd.read_csv('data/titanic.csv', index_col='PassengerId')
print(df.shape)
print(df.ndim)
(891, 11)
2

exercice basique

Le fichier data/petit-titanic.csv contient les 10 premières lignes de passagers
Attention ce n’est pas exactement le même format que data/titanic.csv

# pour voir le contenu du fichier

%cat data/petit-titanic.csv

# remarquez qu'on peut aussi voir ce contenu en Python pur
#with open("data/petit-titanic.csv") as f:
#    for line in f:
#        print(line, end="")
552;0;2;Sharp, Mr. Percival James R;male;27.0;0;0;244358;26.0;;S
638;0;2;Collyer, Mr. Harvey;male;31.0;1;1;C.A. 31921;26.25;;S
499;0;1;Allison, Mrs. Hudson J C (Bessie Waldo Daniels);female;25.0;1;2;113781;151.55;C22 C26;S
261;0;3;Smith, Mr. Thomas;male;;0;0;384461;7.75;;Q
395;1;3;Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson);female;24.0;0;2;PP 9549;16.7;G6;S
811;0;3;Alexander, Mr. William;male;26.0;0;0;3474;7.8875;;S
758;0;2;Bailey, Mr. Percy Andrew;male;18.0;0;0;29108;11.5;;S
703;0;3;Barbara, Miss. Saiide;female;18.0;0;1;2691;14.4542;;C
406;0;2;Gale, Mr. Shadrach;male;34.0;1;0;28664;21.0;;S
641;0;3;Jensen, Mr. Hans Peder;male;20.0;0;0;350050;7.8542;;S
  1. lisez le contenu de ce fichier avec les paramètres par défaut de pandas.read_csv
    affichez les 2 premières lignes avec pandas.DataFrame.head
    voyez-vous les trois problèmes ?
    essayez de les résoudre en lisant le help de la fonction help(pd.read_csv) ou pd.read_csv?
    ou passez à la question 2 pour être aidé
# votre code
  1. passez le bon séparateur à la méthode pandas.read_csv
    indiquez lui que l’entête ne contient pas la liste des noms des colonnes
    passez-lui la liste des noms des colonnes puisqu’elles ne sont pas mentionnées dans le fichier (à récupérer plus haut)
# votre code
  1. appliquer la méthode describe aux colonnes Age et Fare
    (ou plus exactement à une dataframe qui contient ces colonnes)
# votre code
  1. affichez le nombre de colonnes et de lignes
# votre code
  1. affichez les index des colonnes et des lignes
# votre code
  1. modifiez l’index des colonnes par la liste
columns = ['Identifiant', 'Survécu', 'Pclass',
           'Nom', 'Genre', 'Age', 'SibSp', 'Parch',
           'Ticket', 'Tarif', 'Cabine', 'Embarquement']
# votre code
  1. modifiez l’index des lignes par la colonne 'Identifiant'
# votre code