Pandas pd.value_counts() Funktion

Pandas 通用函数Gängige Pandas-Funktionen


pd.value_counts()ist eine Funktion in der Pandas-Bibliothek, die verwendet wird, umdie Häufigkeit jedes Werts zu zählen. Sie berechnet die Anzahl der Vorkommen jedes eindeutigen Werts im Array und gibt sie nach Häufigkeit in absteigender Reihenfolge sortiert zurück.

Dies ist eine der am häufigsten verwendeten Funktionen in der Analyse kategorialer Daten. Sie ermöglicht es Ihnen, die Verteilung der Daten schnell zu verstehen, z. B. beim Zählen von Abstimmungsergebnissen, Produktkategorieverteilungen usw.

Wortbedeutung: value_countsEs bedeutet "Werte zählen", d. h. das Zählen der Anzahl der Vorkommen jedes Werts.


Grundlegende Syntax und Parameter

pd.value_counts()Es ist eine Funktion auf oberster Ebene der Pandas-Bibliothek, die verwendet wird, um die Häufigkeit jedes eindeutigen Werts zu berechnen.

Syntaxformat

pd.value_counts(values, sort=True, ascending=False, normalize=False, bins=None, dropna=True)

Parameterbeschreibung

  • Parameter: values
    • Typ: Series, array-ähnliches Objekt.
    • Beschreibung: Die Daten, deren Häufigkeiten gezählt werden sollen. Normalerweise eine Series.
  • Parameter: sort
    • Typ: Boolean.
    • Ob nach Häufigkeit sortiert werden soll. StandardmäßigTrue(absteigende Reihenfolge nach Häufigkeit).
  • Parameter: ascending
    • Typ: Boolean.
    • WennTrue, nach Häufigkeit in aufsteigender Reihenfolge sortieren; wennFalse(Standard), nach Häufigkeit in absteigender Reihenfolge sortieren.
  • Parameter: normalize
    • Typ: Boolean.
    • WennTrue, den Anteil jedes Werts (zwischen 0 und 1) anstelle der absoluten Häufigkeit zurückgeben. Standardwert istFalse。
  • Parameter: bins
    • Typ: Integer oder None.
    • Wenn eine Ganzzahl angegeben wird, werden die numerischen Daten in Klassen eingeteilt und die Häufigkeiten gezählt (ähnlich einem Histogramm). Nicht auf kategorische Daten anwendbar.
  • Parameter: dropna
    • Typ: Boolean.
    • Gibt an, ob NaN in die statistischen Ergebnisse einbezogen werden soll. Standardwert istTrue(nicht enthalten).
  • Funktionsbeschreibung

    • Rückgabewert: Gibt eine Series zurück, bei der der Index die eindeutigen Werte und die Werte die Häufigkeiten (oder Anteile) sind.
    • Effekt: Zählt die Anzahl der Vorkommen jedes eindeutigen Werts und zeigt sie an.

    Beispiele

    Lass uns das gründlich meisternpd.value_counts()die Verwendung von.

    Beispiel 1: Grundlegende Verwendung - Zählen der Häufigkeiten kategorischer Daten

    Beispiel

    import pandas as pd
    import numpy as np

    # 1. Erstelle eine Series mit doppelten Werten
    colors = pd.Series(['red', 'blue', 'green', 'red', 'blue', 'yellow', 'red', 'blue', 'blue'])

    print("=== Ursprüngliche Series ===")
    print(colors)

    # 2. Verwende pd.value_counts(), um Häufigkeiten zu zählen
    result = pd.value_counts(colors)
    print("\n=== pd.value_counts() Häufigkeitsstatistik ===")
    print(result)

    Erwartete Ausgabe:

    === 原始 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
    

    Code-Erklärung:

    1. Die Ergebnisse sind nach Häufigkeit in absteigender Reihenfolge sortiert; Blau kommt am häufigsten vor (4 Mal), Rot folgt als Nächstes (3 Mal), und Grün und Gelb kommen jeweils 1 Mal vor.
    2. Zurückgegeben wird eine Series, wobei die Farbwerte als Index und die Anzahlen als Werte dienen.

    Beispiel 2: Verwenden des Parameters normalize zur Berechnung von Anteilen

    normalize=TrueHäufigkeiten können in Anteile umgewandelt werden, wodurch sich die relative Verteilung der Daten leichter betrachten lässt.

    Beispiel

    import pandas as pd
    import numpy as np

    # Abstimmungsdaten erstellen
    votes = pd.Series(['A', 'B', 'A', 'C', 'A', 'B', 'A', 'A', 'C', 'B', 'A', 'B'])

    print("=== Abstimmungsdaten ===")
    print(votes)

    # 1. Absolute Häufigkeit
    print("\n=== Absolute Häufigkeit ===")
    print(pd.value_counts(votes))

    # 2. Relative Anteile (normalize=True)
    print("\n=== Relative Anteile ===")
    result_normalized = pd.value_counts(votes, normalize=True)
    print(result_normalized)
    print(f"\nSumme der Anteile: {result_normalized.sum():.2f}")

    # 3. In aufsteigender Reihenfolge sortieren
    print("\n=== Aufsteigend sortiert ===")
    print(pd.value_counts(votes, ascending=True))

    Erwartete Ausgabe:

    === 投票数据 ===
    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
    

    Code-Erklärung:

    • Verwendungnormalize=Truekann schnell den Anteil jeder Kategorie berechnen.
    • Alle Anteile summieren sich zu 1.0, was die Analyse von Anteilen erleichtert.
    • Verwendungascending=Trueermöglicht es Ihnen, die Ergebnisse in aufsteigender Reihenfolge der Häufigkeit anzuzeigen.

    Beispiel 3: Umgang mit numerischen Daten und Verwenden des bins-Parameters

    Für kontinuierliche numerische Werte können Sie denbinsParameter verwenden, um Binning-Statistiken durchzuführen.

    Beispiel

    import pandas as pd
    import numpy as np

    # 1. Numerische Daten erstellen
    scores = pd.Series([85, 90, 78, 92, 88, 76, 95, 82, 70, 89, 91, 77, 84, 86])

    print("=== Punktzahlen der Studierenden ===")
    print(scores)

    # 2. Ohne Binning - jeden eindeutigen Wert zählen
    print("\n=== Jede Punktzahl zählen ===")
    print(pd.value_counts(scores))

    # 3. Verwenden Sie den bins-Parameter für das Binning
    print("\n=== In 4 Bins aufgeteilt ===")
    result_bins = pd.value_counts(scores, bins=4)
    print(result_bins)

    # 4. Bin-Grenzen anzeigen
    print("\n=== Bin-Grenzen ===")
    print(f"Minimalwert: {scores.min()}, Maximalwert: {scores.max()}")

    Erwartete Ausgabe:

    === 学生成绩 ===
    [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
    

    Dies ähnelt einem Histogramm und zeigt, dass die Score-Verteilung hauptsächlich im mittleren bis hohen Bereich konzentriert ist. Der Parameter bins teilt numerische Daten nach Bereich in diskrete Bins auf und zählt dann die Datenmenge in jedem Bin.

    Beispiel 4: Umgang mit fehlenden Werten

    Mit derdropnaParameter steuert, ob fehlende Werte gezählt werden.

    Beispiel

    import pandas as pd
    import numpy as np

    # 1. Daten mit fehlenden Werten
    data = pd.Series(['a', 'b', np.nan, 'a', None, 'c', np.nan, 'b', 'a'])

    print("=== Daten mit fehlenden Werten ===")
    print(data)

    # 2. NaN ist standardmäßig nicht enthalten (dropna=True)
    print("\n=== NaN standardmäßig nicht enthalten ===")
    print(pd.value_counts(data))

    # 3. NaN einbeziehen (dropna=False)
    print("\n=== Einschließlich NaN ===")
    print(pd.value_counts(data, dropna=False))

    # 4. Fehlende Werte für numerische Daten zählen
    numeric_data = pd.Series([1, 2, np.nan, 3, 2, np.nan, 1, 4])
    print("\n=== Numerische Daten mit NaN ===")
    print(pd.value_counts(numeric_data, dropna=False))

    Erwartete Ausgabe:

    === 包含缺失值的数据 ===
    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
    

    Code-Erklärung:

    • Standardmäßig (dropna=True), NaN-Werte werden nicht gezählt.
    • Verwendungdropna=Falseermöglicht es Ihnen, die Anzahl fehlender Werte anzuzeigen, was bei der Datenqualitätsanalyse nützlich ist.
    • Es gilt auch für numerische Daten.

    Tipp: pd.value_counts()Sie ist eine der wichtigsten Funktionen in der explorativen Datenanalyse und ermöglicht es Ihnen, die Verteilung der Daten schnell zu verstehen. Wenn Sie nur eine Liste eindeutiger Werte ohne Häufigkeiten erhalten möchten, verwenden Sie diepd.unique()Funktion.

    Pandas 常用函数Gängige Pandas-Funktionen

    Andere Erweiterungen