Skip to article frontmatterSkip to article content
import pandas as pd
import numpy as np

conditions sur une dataframe


conditions et masques

structure d’un masque

# le code
df = pd.read_csv('data/titanic.csv', index_col='PassengerId')
children = df['Age'] < 12
children
PassengerId 552 False 638 False 499 False 261 False 395 False ... 463 False 287 False 326 False 396 False 832 True Name: Age, Length: 891, dtype: bool
children.dtype
dtype('bool')
girls = (df['Age'] < 12) & (df['Sex'] == 'female')
girls.sum()
np.int64(32)

indexation par un masque

# le code

girls_df = df[girls]
girls_df.head(2)
Loading...
# avec .loc (même si on ne l'a pas encore vu...)

girls_df = df.loc[girls]
girls_df.head(2)
Loading...

value_counts()

children.sum()
np.int64(68)
children.value_counts()
Age False 823 True 68 Name: count, dtype: int64

valeurs manquantes

contexte général


valeurs manquantes dans une colonne

# le code
df['Age'].isna()
PassengerId 552 False 638 False 499 False 261 True 395 False ... 463 False 287 False 326 False 396 False 832 False Name: Age, Length: 891, dtype: bool
df['Age'].isna().sum()
np.int64(177)
# remarquez qu'on peut tout aussi bien
# utiliser le sum() de np ou de Python
import numpy as np
np.sum(df['Age'].isna()), sum(df['Age'].isna())
(np.int64(177), 177)

valeurs manquantes sur une dataframe

# le code
df.isna()
Loading...

compter les valeurs manquantes

dans l’autre direction (axis=1)

# le code
df.isna().sum()       # c'est la
df.isna().sum(axis=0) # même chose
Survived 0 Pclass 0 Name 0 Sex 0 Age 177 SibSp 0 Parch 0 Ticket 0 Fare 0 Cabin 687 Embarked 2 dtype: int64
# le code
df.isna().sum(axis=1)
PassengerId 552 1 638 1 499 0 261 2 395 0 .. 463 0 287 1 326 0 396 1 832 1 Length: 891, dtype: int64

les fonctions numpy d’agrégation

df.isna().sum().sum()
np.int64(866)
# le code
df.isna().to_numpy()
array([[False, False, False, ..., False, True, False], [False, False, False, ..., False, True, False], [False, False, False, ..., False, False, False], ..., [False, False, False, ..., False, False, False], [False, False, False, ..., False, True, False], [False, False, False, ..., False, True, False]], shape=(891, 11))
# le code
np.sum(df.isna().to_numpy())
df.isna().to_numpy().sum()
np.int64(866)

exercice valeurs uniques

  1. lisez la data-frame du titanic df
# votre code
  1. utilisez la méthode pd.Series.unique (1) pour compter le nombre de valeurs uniques
    des colonnes 'Survived', 'Pclass', 'Sex' et 'Embarked'
    vous pouvez utiliser un for-python pour parcourir la liste cols des noms des colonnes choisies

(1) servez-vous du help pd.Series.unique?

# votre code
  1. utilisez l’expression df[cols] pour sélectionner la sous-dataframe réduite à ces 4 colonnes
    et utilisez l’attribut dtypes des pandas.DataFrame pour afficher le type de ces 4 colonnes
# votre code
  1. que constatez-vous ?
    quel type serait plus approprié pour ces colonnes ?
# votre code

exercice conditions

  1. lisez la data-frame des passagers du titanic
# votre code
  1. comptez les valeurs manquantes: dans toute la table, par colonne et par ligne
# votre code
  1. calculez le nombre de classes du bateau
# votre code
  1. calculez le taux d’hommes et de femmes
    indice: voyez les paramètres optionnels de Series.value_counts()
# votre code
  1. calculez le taux de personnes entre 20 et 40 ans (bornes comprises)
# votre code
  1. calculez le taux de survie des passagers
# votre code
  1. calculez le taux de survie des hommes et des femmes par classes
    (notez qu’on reverra ces décomptes d’une autre manière)
# votre code