Fonctions courantes de Pandas
La liste suivante présente quelques fonctions Pandas couramment utilisées et des exemples d'utilisation :
Lire les données
| Fonction | Description |
|---|---|
| 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
# 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
| Fonction | Description |
|---|---|
| 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.shape | Affiche 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
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))
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
| Fonction | Description |
|---|---|
| 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()
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
| Fonction | Description |
|---|---|
| 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)
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
| Fonction | Description |
|---|---|
| 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()
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
| Fonction | Description |
|---|---|
| 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')
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
| Fonction | Description |
|---|---|
| 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')
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
| Fonction | Description |
|---|---|
| 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
| Fonction | Description |
|---|---|
| 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
}
]
{
"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()
# 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