我聽說不同的意見應該在何時應該使用Pandas vs何時使用SQL。熊貓VS SQL速度
我試着做下面的大熊貓在19150869行數據:
for idx, row in df.iterrows():
tmp = int((int(row['M'])/PeriodGranularity))+1
row['TimeSlot'] = str(row["D"]+1) + "-" + str(row["H"]) + "-" + str(tmp)
並發現這是這麼長時間我20分鐘後中止。
我進行中SQLLite如下:
Select strftime('%w',PlayedTimestamp)+1 as D,strftime('%H',PlayedTimestamp) as H,strftime('%M',PlayedTimestamp) as M,cast(strftime('%M',PlayedTimestamp)/15+1 as int) as TimeSlot from tblMain
,並發現它花了4秒( 「19150869行中2445ms返回」)。
注: 對於熊貓的代碼,我在步跑這它從數據庫獲取數據之前:
sqlStr = "Select strftime('%w',PlayedTimestamp)+1 as D,strftime('%H',PlayedTimestamp) as H,strftime('%M',PlayedTimestamp) as M from tblMain"
df = pd.read_sql_query(sqlStr, con)
是我的編碼,該編碼是這裏有毛病,或者它普遍認爲,對於某些任務SQL要快很多?
iterrows是非常不好的選擇,在熊貓中最慢的循環... – jezrael
謝謝是的 - 我發現itertuples比iterrows更快。 – user1761806