いつ私がパンダを使うべきか、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秒( "2445msで返さ19150869行")を取りました。
注: それはDBからデータを取得する前に、私はステップでこれを実行したパンダのコードの場合:
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が本当に悪い選択で、slowiestパンダにループ... – jezrael
おかげでええ - 私はitertuplesがiterrowsよりLOT迅速であることが判明しました。 – user1761806