Fonctions courantes de Pandas

La liste suivante présente quelques fonctions Pandas couramment utilisées et des exemples d'utilisation :

Lire les données

FonctionDescription
pd.read_csv(filename)Lire les fichiers CSV ;
pd.read_excel(filename)Lire les fichiers Excel ;
pd.read_sql(query, connection_object)Lire les données d'une base de données SQL ;
pd.read_json(json_string)Lire les données d'une chaîne JSON ;
pd.read_html(url)Lire les données à partir de pages HTML.

Exemple

import pandas as pd

# Lire les données à partir d'un fichier CSV
df = pd.read_csv('data.csv')

# Lire depuis Excel
df = pd.read_excel('data.xlsx')

# Lire les données depuis une base de données SQL
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql(SELECT * FROM table_name', conn)

# Lire les données depuis une chaîne JSON
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd.read_json(json_string)

# Lire les données depuis une page HTML
url = 'https://www.example.com'
dfs = pd.read_html(url)
df = dfs[0] # Sélectionner le premier dataframe

Afficher les données

FonctionDescription
df.head(n)Affiche les n premières lignes des données ;
df.tail(n)Affiche les n dernières lignes des données ;
df.info()Affiche les informations sur les données, notamment les noms de colonnes, les types de données, les valeurs manquantes, etc. ;
df.describe()Affiche les informations statistiques de base des données, notamment la moyenne, la variance, le maximum, le minimum, etc. ;
df.shapeAffiche le nombre de lignes et de colonnes des données.

Exemple

# Afficher les cinq premières lignes de données
df.head()

# Afficher les cinq dernières lignes des données
df.tail()

# Afficher les informations sur les données
df.info()

# Afficher les informations statistiques de base
df.describe()

# Afficher le nombre de lignes et de colonnes des données
df.shape

Exemple

import pandas as pd

data = [
    {"name": "Google", "likes": 25, "url": "https://www.google.com"},
    {"name": "Example", "likes": 30, "url": "https://www.example.com"},
    {"name": "Taobao", "likes": 35, "url": "https://www.taobao.com"}
]

df = pd.DataFrame(data)
# Afficher les deux premières lignes de données
print(df.head(2))
# Afficher la dernière ligne de données
print(df.tail(1))

La sortie des exemples ci-dessus est :

     name  likes                     url
0  Google     25  https://www.google.com
1  Example     30  https://www.example.com
     name  likes                     url
2  Taobao     35  https://www.taobao.com

Nettoyage des données

FonctionDescription
df.dropna()Supprimer les lignes ou colonnes contenant des valeurs manquantes ;
df.fillna(value)Remplacer les valeurs manquantes par les valeurs spécifiées ;
df.replace(old_value, new_value)Remplacer les valeurs spécifiées par de nouvelles valeurs ;
df.duplicated()Vérifier s'il existe des données en double ;
df.drop_duplicates()Supprimer les données en double.

Exemple

# Supprimer les lignes ou colonnes contenant des valeurs manquantes
df.dropna()

# Remplacer les valeurs manquantes par des valeurs spécifiées
df.fillna(0)

# Remplacer les valeurs spécifiées par de nouvelles valeurs
df.replace('old_value', 'new_value')

# Vérifier s'il y a des données en double
df.duplicated()

# Supprimer les données en double
df.drop_duplicates()

Sélection et découpage des données

FonctionDescription
df[column_name]Sélectionner les colonnes spécifiées ;
df.loc[row_index, column_name]Sélectionner les données par étiquette ;
df.iloc[row_index, column_index]Sélectionner les données par position ;
df.ix[row_index, column_name]Sélectionner les données par étiquette ou par position ;
df.filter(items=[column_name1, column_name2])Sélectionner les colonnes spécifiées ;
df.filter(regex='regex')Sélectionner les colonnes dont les noms correspondent à une expression régulière ;
df.sample(n)Sélectionner aléatoirement n lignes de données.

Exemple

# Sélectionner les colonnes spécifiées
df['column_name']

# Sélectionner des données par étiquette
df.loc[row_index, column_name]

# Sélectionner des données par position
df.iloc[row_index, column_index]

# Sélectionner des données par étiquette ou position
df.ix[row_index, column_name]

# Sélectionner les colonnes spécifiées
df.filter(items=['column_name1', 'column_name2'])

# Sélectionner les colonnes dont les noms correspondent à une expression régulière
df.filter(regex='regex')

# Sélectionner aléatoirement n lignes de données
df.sample(n=5)

Tri de données

FonctionDescription
df.sort_values(column_name)Trier selon les valeurs d'une colonne spécifiée;
df.sort_values([column_name1, column_name2], ascending=[True, False])Trier selon les valeurs de plusieurs colonnes;
df.sort_index()Trier par index.

Exemple

# Trier selon les valeurs d'une colonne spécifiée
df.sort_values('column_name')

# Trier selon les valeurs de plusieurs colonnes
df.sort_values(['column_name1', 'column_name2'], ascending=[True, False])

# Trier par index
df.sort_index()

Regroupement et agrégation des données

FonctionDescription
df.groupby(column_name)Regrouper par une colonne spécifiée ;
df.aggregate(function_name)Effectuer des opérations d'agrégation sur les données regroupées ;
df.pivot_table(values, index, columns, aggfunc)Générer un tableau croisé dynamique.

Exemple

# Regrouper par une colonne spécifiée
df.groupby('column_name')

# Effectuer des opérations d'agrégation sur les données groupées
df.aggregate('function_name')

# Générer un tableau croisé dynamique
df.pivot_table(values='value', index='index_column', columns='column_name', aggfunc='function_name')

Fusion de données

FonctionDescription
pd.concat([df1, df2])Fusionner plusieurs dataframes par lignes ou colonnes ;
pd.merge(df1, df2, on=column_name)Fusionner deux dataframes par les colonnes spécifiées.

Exemple

# Fusionner plusieurs dataframes par lignes ou colonnes
df = pd.concat([df1, df2])

# Fusionner deux dataframes par colonnes spécifiées
df = pd.merge(df1, df2, on='column_name')

Sélection et filtrage des données

FonctionDescription
df.loc[row_indexer, column_indexer]Sélectionner des lignes et des colonnes par étiquette.
df.iloc[row_indexer, column_indexer]Sélectionner des lignes et des colonnes par position.
df[df['column_name'] > value]Sélectionner les lignes d'une colonne qui satisfont une condition.
df.query('column_name > value')Utiliser une expression de chaîne pour sélectionner les lignes d'une colonne qui satisfont une condition.

Statistiques et description des données

FonctionDescription
df.describe()Calculer des informations statistiques de base, telles que la moyenne, l'écart type, le minimum, le maximum, etc.
df.mean()Calculer la moyenne de chaque colonne.
df.median()Calculer la médiane de chaque colonne.
df.mode()Calculer le mode de chaque colonne.
df.count()Calculer le nombre de valeurs non manquantes dans chaque colonne.

Exemple

Supposons que nous ayons les données JSON suivantes, enregistrées dans le fichierdata.json:

fichier data.json

[
  {
    "name": "Alice",
    "age": 25,
    "gender": "féminin",
    "score": 80
  },
  {
    "name": "Bob",
    "age": null,
    "gender": "masculin",
    "score": 90
  },
  {
    "name": "Charlie",
    "age": 30,
    "gender": "masculin",
    "score": null
  },
  {
    "name": "David",
    "age": 35,
    "gender": "masculin",
    "score": 70
  }
]

Nous pouvons utiliser Pandas pour lire des données JSON et effectuer des opérations telles que le nettoyage et le traitement des données, la sélection et le filtrage des données, les statistiques et la description des données, comme suit :

Exemple

import pandas as pd

# Lire les données JSON
df = pd.read_json('data.json')

# Supprimer les valeurs manquantes
df = df.dropna()

# Remplir les valeurs manquantes avec les valeurs spécifiées
df = df.fillna({'age': 0, 'score': 0})

# Renommer les noms de colonnes
df = df.rename(columns={'name': 'Name', 'age': 'age', 'gender': 'Gender', 'score': 'Score'})

# Trier par score
df = df.sort_values(by='Score', ascending=False)

# Grouper par genre et calculer l'âge et le score moyens
grouped = df.groupby('Gender').agg({'age': 'mean', 'Score': 'mean'})

# Sélectionner les lignes où score est supérieur ou égal à 90, et ne conserver que les colonnes name et score
df = df.loc[df['Score'] >= 90, ['Name', 'Score']]

# Calculer les informations statistiques de base pour chaque colonne
stats = df.describe()

# Calculer la moyenne de chaque colonne
mean = df.mean()

# Calculer la médiane de chaque colonne
median = df.median()

# Calculer le mode de chaque colonne
mode = df.mode()

# Calculer le nombre de valeurs non manquantes dans chaque colonne
count = df.count()

Le résultat de sortie est le suivant :

# df
   姓名  年龄 性别  成绩
1  Bob   0  male  90

# grouped
             年龄  成绩
性别                
female  25.000000  80
male    27.500000  80

# stats
         成绩
count   1.0
mean   90.0
std     NaN
min    90.0
25%    90.0
50%    90.0
75%    90.0
max    90.0

# mean
成绩    90.0
dtype: float64

# median
成绩    90.0
dtype: float64

# mode
    姓名    成绩
0  Bob  90.0

# count
姓名    1
成绩    1
dtype: int64
Autres extensions