Fonction pd.value_counts() de Pandas
pd.value_counts()est une fonction de la bibliothèque Pandas utilisée pourcompter la fréquence de chaque valeur. Elle calcule le nombre d'occurrences de chaque valeur unique dans le tableau et les renvoie triées par fréquence par ordre décroissant.
Il s'agit de l'une des fonctions les plus couramment utilisées dans l'analyse de données catégorielles, permettant de comprendre rapidement la distribution des données, comme le comptage des résultats de vote, la répartition des catégories de produits, etc.
Signification du mot: value_countsCela signifie « compter les valeurs », c'est-à-dire compter le nombre d'occurrences de chaque valeur.
Syntaxe de base et paramètres
pd.value_counts()Il s'agit d'une fonction de premier niveau de la bibliothèque Pandas, utilisée pour calculer la fréquence de chaque valeur unique.
Format de syntaxe
pd.value_counts(values, sort=True, ascending=False, normalize=False, bins=None, dropna=True)
Description du paramètre
- Paramètre:
values- Type : Series, objet de type tableau.
- Description : Les données dont les fréquences doivent être comptées. Généralement une Series.
- Paramètre:
sort- Type : booléen.
- Indique s'il faut trier par fréquence. La valeur par défaut est
True(ordre décroissant par fréquence).
ascending
- Type : booléen.
- Si
True, trier par fréquence par ordre croissant ; siFalse(par défaut), trier par fréquence par ordre décroissant.
normalize
- Type : booléen.
- Si
True, renvoie la proportion de chaque valeur (entre 0 et 1) au lieu de la fréquence absolue. Valeur par défaut :False。
bins
- Type : Integer ou None.
- Si un entier est spécifié, les données numériques sont regroupées en intervalles et les fréquences sont comptées (similaire à un histogramme). Non applicable aux données catégorielles.
dropna
- Type : booléen.
- Indique si les NaN doivent être inclus dans les résultats statistiques. Valeur par défaut :
True(non inclus).
Description de la fonction
- Valeur de retour: Renvoie une Series où l’index correspond aux valeurs uniques et les valeurs correspondent aux fréquences (ou proportions).
- Effet: Compte et affiche le nombre d’occurrences de chaque valeur unique.
Exemples
Maîtrisons parfaitementpd.value_counts()l'utilisation de.
Exemple 1 : Utilisation de base - Compter les fréquences de données catégorielles
Exemple
import numpy as np
# 1. Créer une Series contenant des valeurs en double
colors = pd.Series(['red', 'blue', 'green', 'red', 'blue', 'yellow', 'red', 'blue', 'blue'])
print("=== Série originale ===")
print(colors)
# 2. Utiliser pd.value_counts() pour compter les fréquences
result = pd.value_counts(colors)
print("\n=== pd.value_counts() statistiques de fréquence ===")
print(result)
Sortie attendue :
=== 原始 Series === 0 red 1 blue 2 green 3 red 4 blue 5 yellow 6 red 7 blue 8 blue dtype: object === pd.value_counts() 频次统计 === blue 4 red 3 green 1 yellow 1 dtype: int64
Explication du code :
- Les résultats sont triés par ordre décroissant de fréquence ; le bleu apparaît le plus souvent (4 fois), le rouge vient ensuite (3 fois), et le vert et le jaune apparaissent chacun 1 fois.
- Ce qui est renvoyé est une Series, avec les valeurs de couleur comme index et les effectifs comme valeurs.
Exemple 2 : Utilisation du paramètre normalize pour calculer des proportions
normalize=TrueLes fréquences peuvent être converties en proportions, ce qui facilite la visualisation de la répartition relative des données.
Exemple
import numpy as np
# Créer des données de vote
votes = pd.Series(['A', 'B', 'A', 'C', 'A', 'B', 'A', 'A', 'C', 'B', 'A', 'B'])
print("=== Données de vote ===")
print(votes)
# 1. Fréquence absolue
print("\n=== Fréquence absolue ===")
print(pd.value_counts(votes))
# 2. Proportions relatives (normalize=True)
print("\n=== Proportions relatives ===")
result_normalized = pd.value_counts(votes, normalize=True)
print(result_normalized)
print(f"\nSomme des proportions : {result_normalized.sum():.2f}")
# 3. Trier par ordre croissant
print("\n=== Trié par ordre croissant ===")
print(pd.value_counts(votes, ascending=True))
Sortie attendue :
=== 投票数据 === 0 A 1 B 2 A 3 C 4 A 5 B 值 'A' 出现 6 次,占 50% 值 'B' 出现 4 次,约 33.3% 值 'C' 出现 2 次,约 16.7% === 相对比例 === A 0.500000 B 0.333333 C 0.166667 dtype: float64 === 升序排列 === C 2 B 4 A 6 dtype: int64
Explication du code :
- Utilisation
normalize=Truepermet de calculer rapidement la proportion de chaque catégorie. - Toutes les proportions totalisent 1.0, ce qui facilite l'analyse des proportions.
- Utilisation
ascending=Truepermet de visualiser les résultats par ordre croissant de fréquence.
Exemple 3 : Gestion des données numériques et utilisation du paramètre bins
Pour des valeurs numériques continues, vous pouvez utiliser lebinsparamètre pour effectuer des statistiques de regroupement.
Exemple
import numpy as np
# 1. Créer des données numériques
scores = pd.Series([85, 90, 78, 92, 88, 76, 95, 82, 70, 89, 91, 77, 84, 86])
print("=== Notes des étudiants ===")
print(scores)
# 2. Sans regroupement - compter chaque valeur unique
print("\n=== Compter chaque note ===")
print(pd.value_counts(scores))
# 3. Utiliser le paramètre bins pour le regroupement
print("\n=== Divisé en 4 bins ===")
result_bins = pd.value_counts(scores, bins=4)
print(result_bins)
# 4. Afficher les bornes des intervalles
print("\n=== Bornes des intervalles ===")
print(f"Valeur min : {scores.min()}, Valeur max : {scores.max()}")
Sortie attendue :
=== 学生成绩 === [85, 90, 78, 92, 88, 76, 95, 82, 70, 89, 91, 77, 84, 86] === 统计每个分数 === 85 2 90 1 78 1 92 1 88 1 76 1 95 1 82 1 70 1 89 1 91 1 77 1 84 1 86 1 Name: count, dtype: int64 === 分成 4 个箱 === result_bins = pd.value_counts(scores, bins=4) (88.75, 95.0] 5 (82.5, 88.75] 4 (76.25, 82.5] 3 (69.97399999999999, 76.25] 2 Name: count, dtype: int64 === 分箱边界 === 最小值: 70, 最大值: 95
Ceci est similaire à un histogramme, montrant que la distribution des scores est principalement concentrée dans la fourchette moyenne à élevée. Le paramètre bins divise les données numériques en intervalles discrets par plage, puis compte la quantité de données dans chaque intervalle.
Exemple 4 : Gestion des valeurs manquantes
En utilisant ladropnale paramètre contrôle si les valeurs manquantes sont comptées.
Exemple
import numpy as np
# 1. Données contenant des valeurs manquantes
data = pd.Series(['a', 'b', np.nan, 'a', None, 'c', np.nan, 'b', 'a'])
print("=== Données contenant des valeurs manquantes ===")
print(data)
# 2. NaN n'est pas inclus par défaut (dropna=True)
print("\n=== NaN non inclus par défaut ===")
print(pd.value_counts(data))
# 3. Inclure NaN (dropna=False)
print("\n=== Inclure NaN ===")
print(pd.value_counts(data, dropna=False))
# 4. Compter les valeurs manquantes pour les données numériques
numeric_data = pd.Series([1, 2, np.nan, 3, 2, np.nan, 1, 4])
print("\n=== Données numériques contenant NaN ===")
print(pd.value_counts(numeric_data, dropna=False))
Sortie attendue :
=== 包含缺失值的数据 === 0 a 1 b 2 NaN 3 a 4 None 5 c 6 NaN 7 b 8 a dtype: object === 默认不包含 NaN === a 3 b 2 c 1 dtype: 64 === 包含 NaN (dropna=False) === a 3 b 2 NaN 2 # 2 个 NaN (2 个 np.nan) c 1 dtype: int64 === 数值型数据包含 NaN === 1.0 2 2.0 2 NaN 2 # 2 个 NaN 3.0 1 4.0 1 dtype: int64
Explication du code :
- Par défaut (
dropna=True), les valeurs NaN ne sont pas comptées. - Utilisation
dropna=Falsevous permet de visualiser le nombre de valeurs manquantes, ce qui est utile dans l'analyse de la qualité des données. - Cela s'applique également aux données numériques.
Autres extensionsAstuce :
pd.value_counts()Il s'agit de l'une des fonctions les plus importantes de l'analyse exploratoire des données, vous permettant de comprendre rapidement la distribution des données. Si vous avez seulement besoin d'obtenir une liste de valeurs uniques sans fréquences, utilisez lapd.unique()fonction.
Fonctions courantes de Pandas