Heim >Backend-Entwicklung >Python-Tutorial >Wie findet man effizient den häufigsten Wert in einer Pandas DataFrame-Gruppe?

Wie findet man effizient den häufigsten Wert in einer Pandas DataFrame-Gruppe?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 11:32:15249Durchsuche

How to Efficiently Find the Most Common Value in a Pandas DataFrame Group?

GroupBy pandas DataFrame and Select Most Common Value

Problem


Angenommen, Sie haben einen Datenrahmen mit mehreren Zeichenfolgenspalten. Jede Kombination der ersten beiden Spalten sollte nur einen gültigen Wert in der dritten Spalte haben. Sie müssen die Daten konsistent bereinigen, indem Sie den Datenrahmen nach den ersten beiden Spalten gruppieren und für jede Kombination den häufigsten Wert der dritten Spalte auswählen.

Der folgende Code zeigt Ein Versuch, dies zu erreichen:


import pandas as pd<br>from scipy import stats</p>
<p>source = pd.DataFrame({</p>
<pre class="brush:php;toolbar:false">'Country': ['USA', 'USA', 'Russia', 'USA'], 
'City': ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
'Short name': ['NY', 'New', 'Spb', 'NY']})

source.groupby(['Country','City']).agg(lambda x: stats.mode(x[' Kurzname'])[0])

Allerdings der letzte Codezeile schlägt mit einem KeyError fehl. Wie können Sie dieses Problem beheben? h4>

Für Pandas-Versionen 0.16 und höher verwenden Sie der folgende Code:

source.groupby(['Country','City'])['Short name'].agg(pd.Series.mode)
< /pre>

Dieser Code verwendet die Funktion pd.Series.mode, die in Pandas 0.16 eingeführt wurde, um jeweils den häufigsten Wert zu finden Gruppe.



Alternativen für den Umgang mit mehreren Modi


Die Series.mode-Funktion behandelt Fälle mit mehreren Modi effektiv:

  • Wenn mehrere Modi vorhanden sind, wird ein zurückgegeben Serie enthält alle Modi.

  • Wenn Sie für jeden Modus eine separate Zeile benötigen, verwenden Sie GroupBy.apply(pd.Series.mode).< /li>
  • Wenn Sie einen der Modi benötigen, verwenden Sie GroupBy.agg(lambda x: pd.Series.mode(x)[0]).



Zu berücksichtigende Alternativen


Während Sie Statistics.mode von Python aus verwenden könnten, kommt es nicht gut mit mehreren Modi zurecht und kann einen Fehler auslösen StatisticsError. Daher wird es nicht empfohlen.

Das obige ist der detaillierte Inhalt vonWie findet man effizient den häufigsten Wert in einer Pandas DataFrame-Gruppe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn