my_series.iat[0]
yerine my_series.values[0]
kullanarak seri öğelere erişerek elde ettiğim 6x performans iyileştirmesinde şaşırdım.Neden 6x performans iyileştirmesi için .iat yerine .values kullanmıyorsunuz?
documentation, .iat
, skalerlere hızlı erişim için önerilen yoldur. .values
kullanarak herhangi bir şey eksik miyim? bir bazı deneylere göre
import numpy as np
import pandas as pd
n = 1000
dct = {'A': np.random.rand(n)}
df = pd.DataFrame(dct)
s = df['A']
vals = s.values
%timeit -n 10000 val = s.iloc[0]
%timeit -n 10000 val = s.iat[0]
%timeit -n 10000 val = s.values[0]
%timeit -n 10000 vals[0]
**Output**
10000 loops, best of 3: 24.3 µs per loop
10000 loops, best of 3: 13.4 µs per loop
10000 loops, best of 3: 2.06 µs per loop
10000 loops, best of 3: 337 ns per loop
çok benzer soru (pandalar sürümünü 0.18.0 kullanarak yukarıdaki zamanlamaları): http://stackoverflow.com/questions/28909034/pandas-scalar-value-getting-and-setting-ix-or- iat? rq = 1 Yerel/iloc'nin günümüzde ix üzerinden genel olarak önerildiğini unutmayın, ancak ix sahnelerinin arkasında loc/iloc ile benzer şekilde çalıştığına inanıyorum. – JohnE