我注意到在大熊貓數據框上使用IX時會出現一些奇怪的行爲。IX呼叫上是否有Pandas Cache值?
當我連續50次在同一個數據幀上調用.ix時,它的運行速度比我在50個不同數據幀上調用.ix快10倍。
緩存是否在.ix的幕後進行?我注意到底部循環加倍了我的內存使用量。記憶爲什麼會增加?
有什麼辦法可以修改這個行爲嗎?
請注意,如果直接使用numpy,則在兩種情況下都會以7.4秒的速度運行,並增加0次內存,這就是我認爲熊貓正在緩存的原因。
顯然,你永遠要調用.IX每個元素上...
import pandas as pd
import numpy as np
import datetime as dt
print 'pandas', pd.__version__
li_list = []
for i in range(50):
li_list.append(pd.DataFrame(data=np.random.randn(50, 17000)))
print 'starting'
dt_start = dt.datetime.now()
a = 0
for i in range(50):
b = li_list[0] #Only access first element
for j in b.columns:
a += b.ix[i, j]
print (dt.datetime.now()-dt_start).total_seconds()
dt_start = dt.datetime.now()
a = 0
for i in range(50):
b = li_list[i] #Access all in list
for j in b.columns:
a += b.ix[i, j]
print (dt.datetime.now()-dt_start).total_seconds()
輸出:
pandas 0.9.1
starting
3.651
22.009