Pandas - це дійсно чудово, але я справді здивований тим, наскільки неефективно отримувати значення з Pandas.DataFrame. У наступному прикладі іграшок навіть метод DataFrame.iloc більш ніж у 100 разів повільніший за словник.
Питання: чи урок тут полягає лише у тому, що словники є кращим способом пошуку цінностей? Так, я розумію, що саме для цього вони були створені. Але мені просто цікаво, чи щось мені не вистачає щодо продуктивності пошуку DataFrame.
Я усвідомлюю, що це питання більше "роздумує", ніж "задає", але я прийму відповідь, яка дає розуміння чи перспективу на це. Дякую.
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))
значення = словник [5] [5]
0,130625009537
значення = df.loc [5, 5]
19.4681699276
значення = df.iloc [5, 5]
17,2575249672