Desempenho do Pandas DataFrame

O Pandas é realmente ótimo, mas estou realmente surpreso com a ineficiência de recuperar valores de um Pandas.DataFrame. No exemplo de brinquedo a seguir, mesmo o método DataFrame.iloc é mais de 100 vezes mais lento que um dicionário.

A pergunta: a lição aqui é apenas que os dicionários são a melhor maneira de procurar valores? Sim, entendo que é exatamente para isso que eles foram feitos. Mas eu me pergunto se falta algo no desempenho da pesquisa do DataFrame.

Sei que essa pergunta é mais "reflexiva" do que "perguntada", mas aceitarei uma resposta que forneça informações ou perspectivas sobre isso. Obrigado.

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))

valor = dicionário [5] [5]

0.130625009537

valor = df.loc [5, 5]

19.4681699276

valor = df.iloc [5, 5]

17.2575249672

questionAnswers(5)

yourAnswerToTheQuestion