पांडा में प्रति समूह ऑफसेट की गणना कैसे करें
आप पांडा डेटाफ़्रेम में समूह-स्थानांतरित मानों की गणना करने के लिए निम्न विधियों का उपयोग कर सकते हैं:
विधि 1: किसी समूह द्वारा ऑफसेट की गणना करें
df[' lagged_values '] = df. groupby ([' group '])[' values ']. shift ( 1 )
विधि 2: एकाधिक समूहों द्वारा ऑफसेट की गणना करें
df[' lagged_values '] = df. groupby ([' group1 ', ' group2 '])[' values ']. shift ( 1 )
ध्यान दें कि शिफ्ट() फ़ंक्शन का मान उन मानों की संख्या को इंगित करता है जिनके लिए शिफ्ट की गणना की जानी है।
निम्नलिखित उदाहरण दिखाते हैं कि व्यवहार में प्रत्येक विधि का उपयोग कैसे करें।
उदाहरण 1: किसी समूह द्वारा ऑफसेट की गणना करें
मान लीजिए कि हमारे पास निम्नलिखित पांडा डेटाफ़्रेम है जो लगातार दिनों में दो दुकानों द्वारा की गई बिक्री दिखाता है:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]}) #view DataFrame print (df) blind sales 0 to 18 1 to 10 2 to 14 3 to 13 4 B 19 5 B 24 6 B 25 7 B 29
हम एक ऑफसेट कॉलम बनाने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं जो प्रत्येक स्टोर के लिए पिछले दिन की बिक्री प्रदर्शित करता है:
#add column that displays lag of sales column by store df[' lagged_sales '] = df. groupby ([' store '])[' sales ']. shift ( 1 ) #view updated DataFrame print (df) store sales lagged_sales 0 to 18 NaN 1 to 10 18.0 2 A 14 10.0 3 A 13 14.0 4 B 19 NaN 5 B 24 19.0 6 B 25 24.0 7 B 29 25.0
यहां परिणाम की व्याख्या करने का तरीका बताया गया है:
- ऑफसेट कॉलम में पहला मान NaN है क्योंकि स्टोर ए के लिए बिक्री कॉलम में कोई पूर्व मान नहीं है।
- ऑफ़सेट कॉलम में दूसरा मान 18 है क्योंकि यह स्टोर ए के लिए बिक्री कॉलम में पिछला मान है।
और इसी तरह।
उदाहरण 2: एकाधिक समूहों द्वारा ऑफसेट की गणना करें
मान लीजिए कि हमारे पास निम्नलिखित पांडा डेटाफ़्रेम है जो लगातार दिनों में दो दुकानों के कर्मचारियों द्वारा की गई बिक्री दिखाता है:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' employee ':['O', 'O', 'R', 'R', 'O', 'O', 'R', 'R'], ' sales ': [18, 10, 14, 13, 19, 24, 25, 29]}) #view DataFrame print (df) store employee sales 0 AO 18 1 AO 10 2 AR 14 3 AR 13 4 BO 19 5 BO 24 6 BR 25 7 BR 29
हम एक ऑफसेट कॉलम बनाने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं जो प्रत्येक स्टोर पर प्रत्येक कर्मचारी के लिए पिछले दिन की बिक्री प्रदर्शित करता है:
#add column that displays lag of sales column by store and employee df[' lagged_sales '] = df. groupby ([' store ',' employee '])[' sales ']. shift ( 1 ) #view updated DataFrame print (df) store employee sales lagged_sales 0 AO 18 NaN 1 AO 10 18.0 2 AR 14 NaN 3 AR 13 14.0 4 BO 19 NaN 5 BO 24 19.0 6 BR 25 NaN 7 BR 29 25.0
नया लैग्ड_सेल्स कॉलम प्रत्येक स्टोर पर प्रत्येक कर्मचारी के लिए पिछले दिन की बिक्री प्रदर्शित करता है।
ध्यान दें : इस उदाहरण में, हमने दो कॉलमों द्वारा समूहीकृत किया है, लेकिन आप ग्रुपबाय() फ़ंक्शन में जितने चाहें उतने वैरिएबल नाम शामिल करके जितने चाहें उतने कॉलमों द्वारा समूहीकृत कर सकते हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि पांडा में अन्य सामान्य कार्य कैसे करें:
पंडों में कॉलम कैसे हटाएं
पंडों में कॉलमों को कैसे बाहर निकालें
पंडों में चयनित कॉलमों पर फ़ंक्शन कैसे लागू करें
पांडास डेटाफ़्रेम में कॉलम क्रम कैसे बदलें