my_series.iat[0]
ではなくmy_series.values[0]
を使用して直列要素にアクセスすることで、6倍のパフォーマンス向上に驚いた。6倍のパフォーマンス向上のために.iatではなく.valuesを使用してみませんか?
documentationによれば、.iat
は、スカラーへの高速アクセスに推奨される方法です。 .values
を使って何も見つからないのですか?いくつかの実験に基づいて
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
非常に類似した質問(パンダバージョン0.18.0を使用して上記のタイミング):http://stackoverflow.com/questions/28909034/pandas-scalar-value-getting-and-setting-ix-or- iat?rq = 1 loc/ilocは一般的にixよりも推奨されていることに注意してください。しかし、ixの背後にはloc/ilocにいくらか類似していると思われますので、 – JohnE