मैं PySpark का उपयोग करके मशीन लर्निंग मॉडल को प्रशिक्षित करने के लिए एक डेटासेट तैयार कर रहा हूं। जिस डेटाफ्रेम पर मैं काम कर रहा हूं, उसमें अलग-अलग दिनों में अलग-अलग इमारतों और शहरों के कमरों के अंदर पंजीकृत उपस्थिति के बारे में हजारों रिकॉर्ड हैं। ये उपस्थितियां इस प्रारूप में हैं:

+----+----+----+---+---------+------+--------+-------+---------+
|room|building|city|day|month|inHour|inMinute|outHour|outMinute|
+----+--------+----+---+-----+------+--------+-------+---------+
|   1|       1|   1|  9|   11|     8|      27|     13|       15|
|   1|       1|   1|  9|   11|     8|      28|     13|        5|
|   1|       1|   1|  9|   11|     8|      32|     13|        7|
|   1|       1|   1|  9|   11|     8|      32|      8|       50|
|   1|       1|   1|  9|   11|     8|      32|      8|       48|
+----+--------+----+---+-----+------+--------+-------+---------+

घंटे और मिनट में पहुंच के घंटे और मिनट के लिए खड़ा है और निश्चित रूप से, आउटऑवर और आउटमिनट का मतलब बाहर निकलने के समय से है। घंटों को 0-23 प्रारूप में माना जाता है। सभी कॉलम में केवल पूर्णांक मान होते हैं।

जो मुझे याद आ रहा है वह मेरे मशीन लर्निंग मॉडल का लक्ष्य मूल्य है जो कमरे, भवन, शहर, दिन, महीने और एक समय अंतराल के संयोजन के लिए व्यक्तियों की संख्या है। मैं बेहतर तरीके से समझाने की कोशिश करूंगा, पहली पंक्ति का उपयोग समय 8 और बाहर निकलने के समय 13 के साथ उपस्थिति को संदर्भित करता है, इसलिए इसे रिकॉर्ड में 8-9, 9-10, 10-11, 11-12 के अंतराल के साथ गिना जाना चाहिए और साथ ही 13-14. मैं जो हासिल करना चाहता हूं वह निम्न जैसा कुछ है:

+----+----+----+---+---------+------+-------+-----+
|room|building|city|day|month|timeIn|timeOut|count|
+----+--------+----+---+-----+------+-------+-----+
|   1|       1|   1|  9|   11|     8|      9|    X|   
|   1|       1|   1|  9|   11|     9|     10|    X|  
|   1|       1|   1|  9|   11|    10|     11|    X|   
|   1|       1|   1|  9|   11|    11|     12|    X|   
|   1|       1|   1|  9|   11|    12|     13|    X|     
+----+--------+----+---+-----+------+-------+-----+

तो पहली तालिका की चौथी पंक्ति को इस तालिका की पहली पंक्ति में गिना जाना चाहिए और इसी तरह...

1
YPD 9 जिंदा 2021, 20:50

1 उत्तर

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

आप घंटों के क्रम में विस्फोट कर सकते हैं (उदाहरण के लिए पहली पंक्ति में [8,9,10,11,12,13] होगा), घंटे के आधार पर समूह (और अन्य कॉलम) और प्रत्येक समूह के लिए कुल गणना प्राप्त करें। यहाँ hour, timeIn को संदर्भित करता है। मुझे लगता है कि परिणाम डेटाफ़्रेम में timeOut निर्दिष्ट करना आवश्यक नहीं है क्योंकि यह हमेशा timeIn + 1 होता है।

import pyspark.sql.functions as F

df2 = df.withColumn(
    'hour',
    F.explode(F.sequence('inHour', 'outHour'))
).groupBy(
    'room', 'building', 'city', 'day', 'month', 'hour'
).count().orderBy('hour')

df2.show()
+----+--------+----+---+-----+----+-----+
|room|building|city|day|month|hour|count|
+----+--------+----+---+-----+----+-----+
|   1|       1|   1|  9|   11|   8|    5|
|   1|       1|   1|  9|   11|   9|    3|
|   1|       1|   1|  9|   11|  10|    3|
|   1|       1|   1|  9|   11|  11|    3|
|   1|       1|   1|  9|   11|  12|    3|
|   1|       1|   1|  9|   11|  13|    3|
+----+--------+----+---+-----+----+-----+
3
mck 9 जिंदा 2021, 20:58