मैं अपराध के आंकड़ों का उपयोग कर रहा हूं (एक डेटा फ्रेम में) और मैं यह पता लगाने की कोशिश कर रहा हूं कि ज्यादातर अपराध 12 पूर्वाह्न 8 बजे, 8 पूर्वाह्न 4 बजे और 4 बजे से 12 बजे के बीच होते हैं। मैंने पहले ही कॉलम को डेटटाइम में बदल दिया है। मैंने जो कोड इस्तेमाल किया है वह है:

#first attempt
df_15['FIRST_OCCURRENCE_DATE']=pd.date_range('01/01/2015',periods=10000,freq='H')
df_15[(df_15['FIRST_OCCURrENCE_DATE'] > '2015-1-1 00:00:00') & (df_15['FIRST_OCCURRENCE_DATE'] <= '2015-12-31 08:00:00')]

#second attempt
df_15 = df_15.set_index(df_15['FIRST_OCCURRENCE_DATE'])
df_15.loc['2015-01-01 00:00:00':'2015-12-31 00:00:00']

#third attempt
date_rng = pd.date_range(start='00:00:00', end='08:00:00',freq='H')
date_rng1 = pd.DataFrame(date_rng)
date_rng1.head(30)

#fourth attempt
df_15.FIRST_OCCURRENCE_DATE.dt.hour
ts = pd.to_datetime('12/31/2015 08:00:00')
df_15.loc[df_15.FIRST_OCCURRENCE_DATE <= ts,:].head()

मुझे जो परिणाम मिलते हैं वे समय प्रविष्टियाँ हैं जो 08:00:00 से बाहर जाती हैं।

पुनश्च. सारा डेटा एक ही साल का है

1
S. Caruso 10 अक्टूबर 2018, 01:52

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि आप बस थोड़ा सा अंकगणित कर सकते हैं और गिन सकते हैं:

(df_15['FIRST_OCCURrENCE_DATE'].dt.hour // 8).value_counts()

इस समस्या को हल करने के कई तरीके हैं लेकिन यह सबसे आसान है। प्रत्येक तिथि से दिन का समय निकालें, यह पता लगाएं कि यह किस समय स्लॉट से संबंधित है। प्रत्येक के लिए 0 (12AM-8AM), 1 (8AM-4PM), या 2 (4PM-12AM) प्राप्त करने के लिए फ़्लोर-डिवाइड 8, और बस इन घटनाओं की गणना करें।

2
cs95 9 अक्टूबर 2018, 23:34