कोर्स
डुप्लिकेट्स हटाना सटीक काउंट्स पाने के लिए एक जरूरी कौशल है, क्योंकि आप अक्सर एक ही चीज़ को कई बार गिनना नहीं चाहते। Python में, यह Pandas मॉड्यूल का उपयोग करके किया जा सकता है, जिसमें drop_duplicates नामक एक मेथड होता है।
कुछ उदाहरणों की मदद से समझते हैं कि इसे कैसे इस्तेमाल करें।
डुप्लिकेट नाम हटाना
मान लीजिए आपके पास एक डेटाफ़्रेम है जिसमें vet विज़िट्स हैं, और vet के ऑफिस को जानना है कि हर नस्ल के कितने कुत्ते उनके ऑफिस आए हैं। हालांकि, आपके डेटा सेट में Max और Stella जैसे कुत्ते हैं जो एक से अधिक बार vet के पास गए हैं। इसलिए, आप केवल breed कॉलम में हर नस्ल की संख्या नहीं गिन सकते।
print(vet_visits)
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-06-07 Max Labrador 28.35
2 2018-01-17 Stella Chihuahua 1.51
3 2019-10-19 Lucy Chow Chow 24.07
.. ... ... ... ...
71 2018-01-20 Stella Chihuahua 2.83
72 2019-06-07 Max Chow Chow 24.01
73 2018-08-20 Lucy Chow Chow 24.40
74 2019-04-22 Max Labrador 28.54
इसे हासिल करने के लिए, आप उन पंक्तियों को हटाएंगे जिनमें ऐसा कुत्ते का नाम है जो पहले ही आ चुका है, या दूसरे शब्दों में, आप हर नाम का कुत्ता डेटा सेट से एक बार ही निकालेंगे।
आप यह drop_duplicates मेथड से करेंगे। यह subset नाम का आर्ग्युमेंट लेता है, जो वह कॉलम है जिसके आधार पर हम डुप्लिकेट ढूंढना चाहते हैं — इस मामले में, हमें सभी यूनिक नाम चाहिए।
vet_visits.drop_duplicates(subset="name")
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-06-07 Max Chow Chow 24.01
2 2019-03-19 Charlie Poodle 24.95
3 2018-01-17 Stella Chihuahua 1.51
4 2019-10-19 Lucy Chow Chow 24.07
7 2019-03-30 Cooper Schnauzer 16.91
10 2019-01-04 Bernie St. Bernard 74.98
(6 2019-06-07 Max Labrador 28.35)
लेकिन, अगर एक ही नाम वाले कुत्ते हों तो?
डुप्लिकेट युग्म हटाना
ऐसी स्थिति में, डुप्लिकेट हटाते समय हमें सिर्फ name से आगे बढ़कर सोचना होगा। चूंकि Max और Max अलग नस्लों के हैं, हम नाम और नस्ल के उन युग्मों वाली पंक्तियाँ हटा सकते हैं जो डेटा सेट में पहले आ चुकी हैं।
unique_dogs = vet_visits.drop_duplicates(subset=["name", "breed"])
print(unique_dogs)
date name breed weight_kg
0 2018-09-02 Bella Labrador 24.87
1 2019-03-13 Max Chow Chow 24.13
2 2019-03-19 Charlie Poodle 24.95
3 2018-01-17 Stella Chihuahua 1.51
4 2019-10-19 Lucy Chow Chow 24.07
6 2019-06-07 Max Labrador 28.35
7 2019-03-30 Cooper Schnauzer 16.91
10 2019-01-04 Bernie St. Bernard 74.98
एक से अधिक कॉलम के आधार पर डुप्लिकेट हटाने के लिए, हम subset आर्ग्युमेंट में कॉलम नामों की सूची पास कर सकते हैं — यहाँ name और breed।
अब दोनों Max शामिल हो गए हैं।
इंटरैक्टिव उदाहरण
इस अभ्यास में, आप sales के यूनिक मानों का उपयोग करके कुछ नए DataFrames बनाएंगे। sales उपलब्ध है, और pandas को pd नाम से इम्पोर्ट किया गया है।
आप ये कदम उठाएँगे:
- पहले, आप
salesकी वे पंक्तियाँ हटाएँगे जिनमेंstoreऔरtypeके डुप्लिकेट युग्म हैं, इसेstore_typesके रूप में सहेजेंगे और इसकी head प्रिंट करेंगे। - फिर, आप
salesकी वे पंक्तियाँ हटाएँगे जिनमेंstoreऔरdepartmentके डुप्लिकेट युग्म हैं, इसेstore_deptsके रूप में सहेजेंगे और इसकी head प्रिंट करेंगे। - जो पंक्तियाँ holiday weeks हैं, उन्हें subset करें, और डुप्लिकेट
datesहटाकरholiday_datesके रूप में सहेजें। - अंत में,
holiday_datesकेdateकॉलम का चयन करें, औरholiday_datesडेटाफ़्रेम को प्रिंट करें।
# Drop duplicate store/type combinations
store_types = sales.drop_duplicates(subset=["store", "type"])
print(store_types.head())
# Drop duplicate store/department combinations
store_depts = sales.drop_duplicates(subset=["store", "department"])
print(store_depts.head())
# Subset the rows that are holiday weeks and drop duplicate dates
holiday_dates = sales[sales["is_holiday"]].drop_duplicates(subset="date")
# Print date col of holiday_dates
print(holiday_dates["date"])
जब हम ऊपर का कोड चलाते हैं, तो यह निम्नलिखित परिणाम देता है:
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
0 1 A 1 2010-02-05 24924.50 False 5.728 0.679 8.106
901 2 A 1 2010-02-05 35034.06 False 4.550 0.679 8.324
1798 4 A 1 2010-02-05 38724.42 False 6.533 0.686 8.623
2699 6 A 1 2010-02-05 25619.00 False 4.683 0.679 7.259
3593 10 B 1 2010-02-05 40212.84 False 12.411 0.782 9.765
store type department date weekly_sales is_holiday temperature_c fuel_price_usd_per_l unemployment
0 1 A 1 2010-02-05 24924.50 False 5.728 0.679 8.106
12 1 A 2 2010-02-05 50605.27 False 5.728 0.679 8.106
24 1 A 3 2010-02-05 13740.12 False 5.728 0.679 8.106
36 1 A 4 2010-02-05 39954.04 False 5.728 0.679 8.106
48 1 A 5 2010-02-05 32229.38 False 5.728 0.679 8.106
498 2010-09-10
691 2011-11-25
2315 2010-02-12
6735 2012-09-07
6810 2010-12-31
6815 2012-02-10
6820 2011-09-09
Name: date, dtype: datetime64[ns]
काउंटिंग और डेटा को एग्रीगेट करने के बारे में अधिक जानने के लिए, हमारे कोर्स Data Manipulation with pandas का यह वीडियो देखें।
यह सामग्री DataCamp के Data Manipulation with pandas कोर्स से ली गई है, जिसके लेखक Maggie Matsui और Richie Cotton हैं।