Was ist die Auswirkung auf die Leistungsfähigkeit von non-unique-Indizes in pandas?
Aus der pandas Dokumentation, die ich gesammelt habe, die einzigartige geschätzten Indizes machen bestimmte Operationen effizienter, und das nicht-eindeutige Indizes werden gelegentlich geduldet.
Von außen, es sieht nicht wie nicht eindeutige Indizes in Anspruch genommen, in keiner Weise. Zum Beispiel, die folgenden ix
Abfrage ist langsam genug, dass es scheint, um mit dem Scannen der gesamten dataframe
In [23]: import numpy as np
In [24]: import pandas as pd
In [25]: x = np.random.randint(0, 10**7, 10**7)
In [26]: df1 = pd.DataFrame({'x':x})
In [27]: df2 = df1.set_index('x', drop=False)
In [28]: %timeit df2.ix[0]
1 loops, best of 3: 402 ms per loop
In [29]: %timeit df1.ix[0]
10000 loops, best of 3: 123 us per loop
(Ich weiß die zwei ix
Abfragen nicht das gleiche zurückgeben-es ist nur ein Beispiel, dass Anrufe zu ix
auf einen nicht eindeutigen index erscheinen viel langsamer)
Gibt es eine Möglichkeit, Koax-pandas in schneller lookup-Methoden, wie binäre Suche auf nicht eindeutigen und/oder sortierte Indizes?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der index eindeutig ist, pandas verwenden einer hashtable-zu-Karte-Taste, um den Wert O(1). Wenn der index ist nicht eindeutig und sortiert, pandas verwenden Sie die binäre Suche O(logN), wenn der index ist zufällig bestellt pandas brauchen, um zu überprüfen, alle Schlüssel im index O(N).
Können Sie anrufen
sort_index
Methode:Ergebnis:
@HYRY sagte es auch, aber nichts sagt es ganz wie eine bunte Grafik mit den timings.
Parzellen wurden generiert mit perfplot. Code für Ihre Referenz: