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
Freigeben: 2024-11-29 11:32:15
Original
251 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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']})
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage