टेक्स्ट कॉलम मिलाना और साफ़ करना
कई कॉलमों को एक स्ट्रिंग में जोड़ें, रिक्त स्थान हटाएँ और असंगत श्रेणी-लेबल को मानकीकृत करें।
टेक्स्ट कॉलम मिलाना और साफ़ करना, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Text Columns को Concatenate करना
Data preparation का एक सामान्य task कई columns की values को मिलाकर एक single string बनाना है — जैसे first और last name से full name बनाना या street, city और country से address बनाना। Pandas में numeric columns को .astype(str) से strings में convert करने के बाद, दो Series (या एक Series और string literal) पर + operator का उपयोग करके string columns को concatenate किया जाता है।
import pandas as pd
df = pd.DataFrame({
'first_name': ['Alice', 'Bob', 'Carol'],
'last_name': ['Smith', 'Jones', 'White']
})
df['full_name'] = df['first_name'] + ' ' + df['last_name']
print(df['full_name'].tolist())
# ['Alice Smith', 'Bob Jones', 'Carol White']Non-String Columns के साथ Concatenate करना
Numeric column को string column के साथ मिलाते समय आपको पहले numeric column को .astype(str) का उपयोग करके string में convert करना होगा। यदि आप string Series और integer Series को जोड़ने का प्रयास करते हैं, तो Python का + operator TypeError उत्पन्न करता है। Mixed-type columns से composite keys या labels बनाते समय यह confusion का एक सामान्य source है।
import pandas as pd
df = pd.DataFrame({
'product': ['Widget', 'Gadget'],
'version': [3, 5]
})
# Must convert int to str before concatenating
df['label'] = df['product'] + ' v' + df['version'].astype(str)
print(df['label'].tolist())
# ['Widget v3', 'Gadget v5']विभाजक के साथ जोड़ने के लिए .str.cat()
Series.str.cat(others, sep=) विभाजक के साथ कई Series को जोड़ने का Pandas का मूल तरीका है, जो NaN मानों को सुचारु रूप से संभालता है। डिफ़ॉल्ट रूप से, किसी भी कॉलम में NaN होने पर उस पंक्ति का परिणाम NaN हो जाता है। NaN को आगे फैलाने के बजाय प्लेसहोल्डर से बदलने के लिए na_rep='?' (या कोई भी स्ट्रिंग) पास करें।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'city': ['NYC', 'LA', None],
'state': ['NY', None, 'TX'],
'country': ['USA', 'USA', 'USA']
})
# Join with ', ' — NaN rows produce NaN by default
df['location'] = df['city'].str.cat(
[df['state'], df['country']],
sep=', ',
na_rep='N/A'
)
print(df['location'].tolist())
# ['NYC, NY, USA', 'LA, N/A, USA', 'N/A, TX, USA']असंगत श्रेणी लेबल को सामान्य बनाना
वास्तविक दुनिया के श्रेणी कॉलम में अक्सर टाइपो, बड़े-छोटे अक्षरों में भिन्नता या अलग-अलग संक्षिप्त रूपों (जैसे, 'US', 'USA', 'United States') के कारण असंगत लेबल होते हैं। मानक समाधान यह है कि एक मैपिंग डिक्शनरी बनाएँ, जो हर वैरिएंट को मानक रूप से मैप करे, फिर उसे .map() या .replace() से लागू करें।
import pandas as pd
df = pd.DataFrame({
'country': ['US', 'USA', 'United States', 'uk', 'UK', 'United Kingdom']
})
canonical = {
'US': 'United States', 'USA': 'United States', 'United States': 'United States',
'uk': 'United Kingdom', 'UK': 'United Kingdom', 'United Kingdom': 'United Kingdom'
}
df['country_clean'] = df['country'].map(canonical)
print(df['country_clean'].tolist())
# ['United States', 'United States', 'United States',
# 'United Kingdom', 'United Kingdom', 'United Kingdom']स्पेस हटाना और अक्षर-रूप मानकीकृत करना
टेक्स्ट कॉलम की तुलना या समूहबद्ध करने से पहले, सफ़ाई के पहले चरण के रूप में हमेशा व्हाइटस्पेस हटाएँ और अक्षर-रूप सामान्य करें। मनुष्य को एक जैसे दिखने वाले दो मान (' Active' और 'active') Pandas के लिए अलग होते हैं, क्योंकि उनमें शुरुआत का स्पेस और बड़े-छोटे अक्षरों का अंतर होता है। दो चरणों की चेन — पहले strip और फिर lower — दोनों समस्याओं को पकड़ लेती है।
import pandas as pd
df = pd.DataFrame({
'status': [' Active', 'INACTIVE', 'active ', ' Pending ', 'ACTIVE']
})
df['status_clean'] = df['status'].str.strip().str.lower()
print(df['status_clean'].value_counts())
# active 3
# inactive 1
# pending 1टाइपो सुधारने के लिए फज़ी मिलान
जब टाइपो के कारण सटीक मिलान संभव न हो, तो फज़ी मिलान स्ट्रिंग के बीच समानता स्कोर की गणना करता है। rapidfuzz लाइब्रेरी (या पुरानी fuzzywuzzy) वेक्टराइज़्ड फज़ी मिलान उपलब्ध कराती है। सामान्य प्रक्रिया यह है: हर विशिष्ट गंदे मान के लिए, समानता सीमा से ऊपर वाला सबसे निकटतम मानक मान खोजें और सुधार मैप बनाएँ।
# Conceptual example (requires: pip install rapidfuzz)
from rapidfuzz import process
canonical_cities = ['New York', 'Los Angeles', 'Chicago', 'Houston']
dirty_values = ['New Yrok', 'Los Angelas', 'Chicagoo']
for dirty in dirty_values:
best, score, _ = process.extractOne(dirty, canonical_cities)
print(f'{dirty!r} -> {best!r} (score={score:.0f}%)')
# 'New Yrok' -> 'New York' (score=91%)
# 'Los Angelas'-> 'Los Angeles' (score=96%)
# 'Chicagoo' -> 'Chicago' (score=94%)explode() से बहु-मान वाले सेल को विभाजित करना
कभी-कभी किसी सेल में डिलीमीटर से अलग किए गए कई मान होते हैं (जैसे, 'python,sql,pandas')। कॉलम को विभाजित करके सूचियाँ बनाएँ, फिर हर मान के लिए एक पंक्ति बनाने हेतु .explode() कॉल करें। इससे चौड़े, भरे हुए सेल को सुव्यवस्थित लंबे प्रारूप में बदला जाता है, जहाँ हर पंक्ति में ठीक एक मान होता है — इन मानों पर groupby और join संचालन के लिए यह आवश्यक है।
import pandas as pd
df = pd.DataFrame({
'user_id': [1, 2, 3],
'skills': ['python,sql', 'java,kotlin,sql', 'python']
})
df['skills'] = df['skills'].str.split(',')
exploded = df.explode('skills')
print(exploded)
# user_id skills
# 0 1 python
# 0 1 sql
# 1 2 java
# 1 2 kotlin
# 1 2 sql
# 2 3 pythonटेक्स्ट में मिश्रित एन्कोडिंग संभालना
अलग-अलग स्रोतों से मिले टेक्स्ट डेटा में एन्कोडिंग संबंधी समस्याएँ हो सकती हैं — जैसे \xa0 (नॉन-ब्रेकिंग स्पेस), \u2019 (घुमावदार एपॉस्ट्रॉफ़ी) या बिगड़े हुए उच्चारण-चिह्न वाले अक्षर। त्वरित ASCII-आधारित सफ़ाई के लिए .str.encode('ascii', errors='replace').str.decode('ascii') का उपयोग करें, या उच्चारण-चिह्न हटाने से पहले उन्हें अलग करने के लिए .str.normalize('NFKD') का उपयोग करें।
import pandas as pd
import unicodedata
df = pd.DataFrame({'name': ['Caf\u00e9', 'na\u00efve', 'r\u00e9sum\u00e9']})
# Normalize and strip accents (NFKD decomposition + ascii encoding)
df['name_ascii'] = (
df['name']
.str.normalize('NFKD')
.str.encode('ascii', errors='ignore')
.str.decode('ascii')
)
print(df)
# name name_ascii
# 0 Cafe Cafe
# 1 naive naive
# 2 resume resumeसंयुक्त कुंजियाँ बनाना
कई डेटासेट में जोड़ने या डुप्लिकेट हटाने के लिए किसी पंक्ति की विशिष्ट पहचान करने हेतु कई कॉलम से संयुक्त कुंजी बनानी पड़ती है। साफ़ किए गए स्ट्रिंग कॉलम (जिनसे स्पेस हटाया गया हो, जिन्हें छोटे अक्षरों में बदला गया हो और सामान्यीकृत किया गया हो) को एक ही कुंजी स्ट्रिंग में मिलाने से अलग-अलग डेटा स्रोतों में मिलान एकसमान रहता है, भले ही किसी स्रोत में उसी इकाई की वर्तनी थोड़ी अलग हो।
import pandas as pd
df = pd.DataFrame({
'first': [' Alice', 'BOB', ' Carol'],
'last': ['Smith ', 'JONES', 'White '],
'dob': ['1990-01-15', '1985-07-22', '1992-11-30']
})
df['match_key'] = (
df['first'].str.strip().str.lower() + '|' +
df['last'].str.strip().str.lower() + '|' +
df['dob']
)
print(df['match_key'].tolist())
# ['alice|smith|1990-01-15', 'bob|jones|1985-07-22', 'carol|white|1992-11-30']मानक श्रेणी सूची लागू करना
सफ़ाई के बाद जाँचें कि श्रेणीबद्ध टेक्स्ट कॉलम के सभी मान ज्ञात मानक सेट में शामिल हैं। सेट में न होने वाला कोई भी मान नई वैध श्रेणी या डेटा त्रुटि का संकेत हो सकता है। अज्ञात मानों को चुपचाप हटाने के बजाय उन्हें लॉग करें या चिह्नित करके मैन्युअल समीक्षा के लिए भेजें, ताकि कोई समस्या बिना जानकारी के न रह जाए।
import pandas as pd
df = pd.DataFrame({
'status': ['active', 'inactive', 'active', 'archived', 'unknown_status']
})
canonical = {'active', 'inactive', 'archived'}
unknown = df[~df['status'].isin(canonical)]['status'].unique()
print('Unknown statuses:', unknown.tolist())
# ['unknown_status']
# Flag unknown rows
df['status_valid'] = df['status'].isin(canonical)
print(df)टेक्स्ट की संपूर्ण सफ़ाई पाइपलाइन
यहाँ टेक्स्ट की संपूर्ण सफ़ाई पाइपलाइन दी गई है, जो इस पाठ की सभी तकनीकों को लागू करती है: व्हाइटस्पेस हटाना, अक्षर-रूप सामान्य करना, संक्षिप्त रूप ठीक करना, विशेष वर्ण हटाना और मानक सूची के विरुद्ध जाँच करना। इस तरह का पुनः उपयोग योग्य फ़ंक्शन आप किसी भी डेटा अंतर्ग्रहण मॉड्यूल में जोड़ सकते हैं।
import pandas as pd
def clean_category_column(series, canonical_map, canonical_set):
cleaned = (
series
.str.strip()
.str.lower()
.map(lambda x: canonical_map.get(x, x)) # fix known variants
)
unknown = cleaned[~cleaned.isin(canonical_set)]
if not unknown.empty:
print('Warning: unknown values:', unknown.unique().tolist())
return cleaned
cmap = {'eng': 'engineering', 'hr': 'human_resources', 'mktg': 'marketing'}
cset = {'engineering', 'human_resources', 'marketing', 'finance'}
df = pd.DataFrame({'dept': ['Eng', 'HR', 'Marketing', 'MKTG', 'Legal']})
df['dept_clean'] = clean_category_column(df['dept'], cmap, cset)
print(df)त्वरित जाँच
टेक्स्ट कॉलम को मिलाने और साफ़ करने की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: संख्यात्मक मानों को स्ट्रिंग में बदलने के बाद + ऑपरेटर से कॉलम जोड़ना, डिलीमीटर के साथ जोड़ने और NaN संभालने के लिए str.cat(sep=) का उपयोग करना, असंगत लेबल को सामान्य बनाने के लिए .map() से मानक मैप लागू करना, और सूची-मान वाले सेल को पंक्तियों में फैलाने के लिए explode() का उपयोग करना। डेटा की गुणवत्ता से जुड़ी समस्याओं को जल्दी पकड़ने के लिए मानक सेट लागू करें। अगले पाठ में हम DataFrames को कॉलम के मानों के आधार पर क्रमबद्ध करेंगे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “टेक्स्ट कॉलम मिलाना और साफ़ करना” पाठ निःशुल्क है?
हाँ—“टेक्स्ट कॉलम मिलाना और साफ़ करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“टेक्स्ट कॉलम मिलाना और साफ़ करना” में मैं क्या सीखूँगा?
कई कॉलमों को एक स्ट्रिंग में जोड़ें, रिक्त स्थान हटाएँ और असंगत श्रेणी-लेबल को मानकीकृत करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“टेक्स्ट कॉलम मिलाना और साफ़ करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- .str एक्सेसर
- स्ट्रिंग विभाजित करना और बदलना
- Regex से पैटर्न मिलान
- टेक्स्ट कॉलम मिलाना और साफ़ करना