Pandas ist wirklich großartig, aber ich bin wirklich überrascht, wie ineffizient es ist, Werte von einem Pandas.DataFrame abzurufen. Im folgenden Spielzeugbeispiel ist sogar die DataFrame.iloc-Methode mehr als 100-mal langsamer als ein Wörterbuch.
Die Frage: Ist die Lektion hier nur, dass Wörterbücher der bessere Weg sind, um nach Werten zu suchen? Ja, ich verstehe, dass genau dafür sie gemacht wurden. Aber ich frage mich nur, ob mir etwas an der Leistung der DataFrame-Suche fehlt.
Mir ist klar, dass diese Frage mehr "Nachdenken" als "Fragen" ist, aber ich werde eine Antwort akzeptieren, die Einblicke oder Perspektiven bietet. Vielen Dank.
import timeit
setup = '''
import numpy, pandas
df = pandas.DataFrame(numpy.zeros(shape=[10, 10]))
dictionary = df.to_dict()
'''
f = ['value = dictionary[5][5]', 'value = df.loc[5, 5]', 'value = df.iloc[5, 5]']
for func in f:
print func
print min(timeit.Timer(func, setup).repeat(3, 100000))
Wert = Wörterbuch [5] [5]
0,130625009537
value = df.loc [5, 5]
19.4681699276
Wert = df.iloc [5, 5]
17.2575249672