मैं एसक्यूएल का उपयोग करने के लिए पांडस बनाम किसी को कब उपयोग करना चाहिए, इस पर विभिन्न विचार सुन रहा हूं।पांडस बनाम एसक्यूएल स्पीड
मैं डेटा के 19,150,869 पंक्तियों पर पांडा में निम्नलिखित करने की कोशिश की:
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 सेकंड लिया ("19,150,869 पंक्तियों 2445ms में लौट आए")।
नोट: पांडा कोड मैं चरण में इस भाग गया इससे पहले कि यह 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)
यह मेरे कोडिंग है कार्य एसक्यूएल बहुत तेज है?
iterrows वास्तव में खराब विकल्प है, पांडा में सबसे धीमी गति से लूपिंग ... – jezrael
धन्यवाद हाँ - मुझे यह पता चलता है कि यह तीर से बहुत तेज़ हो गया है। – user1761806