Pandas & NumPy Academy · पाठ

DataFrames को स्टैक करने के लिए pd.concat

pd.concat से DataFrames को लंबवत या क्षैतिज रूप से जोड़ें, इंडेक्स या कॉलम के आधार पर संरेखित करें और डुप्लिकेट इंडेक्स संभालें।

पाठ 1, कुल 4 में से13 चरण

DataFrames को स्टैक करने के लिए pd.concat, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

DataFrames को क्यों जोड़ें?

वास्तविक परियोजनाओं में डेटा शायद ही कभी एक ही file में आता है। आपके पास मासिक बिक्री की files, क्षेत्रीय सर्वेक्षण के निर्यात, या कई क्वेरी में विभाजित डेटाबेस क्वेरी के परिणाम हो सकते हैं। Concatenation इन अलग-अलग DataFrames को एक संयुक्त सारणी में एक के ऊपर एक रखता है। Pandas इसके लिए pd.concat() उपलब्ध कराता है, जो ऊर्ध्वाधर (पंक्ति के अनुसार) और क्षैतिज (स्तंभ के अनुसार) दोनों तरह से जोड़ने की सुविधा देता है।

बुनियादी ऊर्ध्वाधर Concatenation

pd.concat() का सबसे सामान्य उपयोग DataFrames को ऊर्ध्वाधर रूप से जोड़ना है (अधिक पंक्तियाँ जोड़ना)। DataFrames की एक सूची दें और फ़ंक्शन उन्हें एक के नीचे एक जोड़ देगा। साफ़ परिणाम के लिए दोनों DataFrames में संगत स्तंभ होने चाहिए। Pandas स्तंभ नामों के आधार पर अपने-आप मिलान करता है और अनुपस्थित स्तंभों में NaN भरता है।

import pandas as pd

jan = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
feb = pd.DataFrame({'product': ['A', 'C'], 'sales': [150, 120]})

combined = pd.concat([jan, feb])
print(combined)
#   product  sales
# 0       A    100
# 1       B    200
# 0       A    150
# 1       C    120

Concat के बाद इंडेक्स रीसेट करना

ध्यान दें कि pd.concat() प्रत्येक DataFrame के मूल इंडेक्स सुरक्षित रखता है, जिससे डुप्लिकेट इंडेक्स मान बन सकते हैं (जैसा कि ऊपर इंडेक्स 0 और इंडेक्स 1 वाली दो पंक्तियों में दिखा है)। संयुक्त परिणाम में नया क्रमिक पूर्णांक इंडेक्स बनाने के लिए ignore_index=True दें; लगभग हमेशा यही वांछित होता है।

combined = pd.concat([jan, feb], ignore_index=True)
print(combined)
#   product  sales
# 0       A    100
# 1       B    200
# 2       A    150
# 3       C    120

print(combined.index)
# RangeIndex(start=0, stop=4, step=1)

keys से स्रोत का पता रखना

कई स्रोतों से डेटा जोड़ते समय, आप जानना चाह सकते हैं कि प्रत्येक मूल DataFrame की पंक्ति किससे आई है। लेबल की एक सूची के साथ keys पैरामीटर दें। Pandas एक MultiIndex बनाता है, जिसमें बाहरी स्तर स्रोत की पहचान करता है। इसके बाद किसी विशिष्ट स्रोत की पंक्तियों तक पहुँचने के लिए आप .loc['label'] का उपयोग कर सकते हैं।

combined = pd.concat([jan, feb], keys=['January', 'February'])
print(combined)
#                product  sales
# January   0         A    100
#           1         B    200
# February  0         A    150
#           1         C    120

# Access only February rows
print(combined.loc['February'])

axis=1 के साथ क्षैतिज Concatenation

DataFrames को साथ-साथ जोड़ने (अधिक स्तंभ जोड़ने) के लिए axis=1 दें। Pandas पंक्ति इंडेक्स के आधार पर मिलान करता है, इसलिए साफ़ परिणाम के लिए दोनों DataFrames का इंडेक्स समान होना चाहिए। यदि इंडेक्स अलग हैं, तो मेल न खाने वाली पंक्तियों में NaN भर दिया जाएगा। यह अलग-अलग चरणों में उसी डेटासेट से निकाले गए फ़ीचर को मिलाने के लिए उपयोगी है।

names = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol']}, index=[1, 2, 3])
scores = pd.DataFrame({'score': [95, 88, 72]}, index=[1, 2, 3])

combined = pd.concat([names, scores], axis=1)
print(combined)
#     name  score
# 1  Alice     95
# 2    Bob     88
# 3  Carol     72

असंगत स्तंभों को संभालना

यदि जोड़े जा रहे DataFrames में अलग-अलग स्तंभ हैं, तो Pandas सभी स्तंभ रखता है और अनुपस्थित मानों में NaN भरता है। यह डिफ़ॉल्ट join='outer' व्यवहार है। यदि आप केवल वे स्तंभ रखना चाहते हैं जो सभी DataFrames में मौजूद हों, तो join='inner' दें। इससे वह हर स्तंभ हट जाएगा जो प्रत्येक स्रोत में मौजूद नहीं है।

df1 = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
df2 = pd.DataFrame({'b': [5, 6], 'c': [7, 8]})

# Outer join (default): keeps all columns
print(pd.concat([df1, df2], ignore_index=True))
#      a  b    c
# 0  1.0  3  NaN
# 1  2.0  4  NaN
# 2  NaN  5  7.0
# 3  NaN  6  8.0

# Inner join: keeps only shared columns
print(pd.concat([df1, df2], join='inner', ignore_index=True))
#    b
# 0  3
# 1  4
# 2  5
# 3  6

लूप में कई Files को जोड़ना

कई files लोड करते समय एक सामान्य तरीका यह है कि सभी DataFrames को एक सूची में एकत्र करें और अंत में एक बार pd.concat() कॉल करें। लूप के भीतर जोड़ने से बचें (जैसे df = pd.concat([df, new_chunk])), क्योंकि इससे हर पुनरावृत्ति पर एक नया DataFrame copy बनता है और बड़े संग्रहों के लिए समय की जटिलता द्विघात हो जाती है।

import glob

# Efficient: collect first, concat once
files = glob.glob('data/sales_*.csv')
frames = [pd.read_csv(f) for f in files]
combined = pd.concat(frames, ignore_index=True)

# Inefficient (avoid):
# result = pd.DataFrame()
# for f in files:
#     result = pd.concat([result, pd.read_csv(f)])  # slow!

Series को जोड़ना

pd.concat() Series के साथ-साथ DataFrames पर भी काम करता है। Series की सूची को ऊर्ध्वाधर रूप से जोड़ने पर एक लंबी Series मिलती है। axis=1 के साथ जोड़ने पर एक DataFrame बनता है, जिसमें प्रत्येक Series एक स्तंभ बन जाती है। Series का मिलान उनके इंडेक्स के आधार पर होता है, इसलिए साफ़ क्षैतिज concat के लिए इंडेक्स लेबल का मिलना आवश्यक है।

s1 = pd.Series([1, 2, 3], name='x')
s2 = pd.Series([4, 5, 6], name='y')

# Vertical: one long Series
print(pd.concat([s1, s2]))
# 0    1
# 1    2
# ...

# Horizontal: a DataFrame with two columns
print(pd.concat([s1, s2], axis=1))
#    x  y
# 0  1  4
# 1  2  5
# 2  3  6

जोड़े गए परिणाम की जाँच करना

जोड़ने के बाद हमेशा जाँचें कि परिणाम का आकार अपेक्षित है और उसमें कोई अनपेक्षित NaN मान नहीं है। एक त्वरित युक्ति यह है: संयुक्त पंक्तियों की संख्या की तुलना अलग-अलग गणनाओं के योग से करें और स्तंभों के गलत मिलान से आए अनचाहे रिक्त मानों का पता लगाने के लिए isna().sum() कॉल करें। ये जाँचें डेटा की गुणवत्ता से जुड़ी छिपी समस्याओं को आपके विश्लेषण में आगे बढ़ने से रोकती हैं।

combined = pd.concat([jan, feb], ignore_index=True)

# Sanity checks
assert len(combined) == len(jan) + len(feb), 'Row count mismatch'
print('Missing values per column:')
print(combined.isna().sum())
print('Shape:', combined.shape)

concat बनाम append (अब अप्रचलित)

पुराने Pandas कोड में df.append(other) का उपयोग हो सकता है, जो pd.concat() के लिए एक सुविधाजनक आवरण था। यह विधि Pandas 1.4 में अप्रचलित घोषित की गई और Pandas 2.0 में हटा दी गई। आधुनिक कोड में हमेशा pd.concat([df, other], ignore_index=True) का उपयोग करें। व्यवहार समान है, लेकिन pd.concat अधिक स्पष्ट है और एक बार में दो से अधिक DataFrames को जोड़ने की सुविधा देता है।

# Old (removed in Pandas 2.0):
# combined = jan.append(feb, ignore_index=True)

# Modern equivalent:
combined = pd.concat([jan, feb], ignore_index=True)
print(combined)

व्यावहारिक उदाहरण: वार्षिक बिक्री रिपोर्ट

यहाँ एक वास्तविक जीवन के अनुरूप तरीका है: मासिक DataFrames लोड करें, स्रोत का लेबल जोड़ें, उन्हें जोड़ें और पूरे वर्ष का सारांश निकालें। keys पैरामीटर से प्रत्येक पंक्ति को उसके महीने तक वापस ट्रैक करना आसान हो जाता है, और महीने के स्तंभ के साथ ignore_index=True का उपयोग करने पर समूह-आधारित विश्लेषण के लिए एक साफ़, सपाट DataFrame मिलता है।

months = ['jan', 'feb', 'mar']
frames = []
for m in months:
    df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
    df['month'] = m
    frames.append(df)

yearly = pd.concat(frames, ignore_index=True)
print(yearly.groupby('month')['sales'].sum())

त्वरित जाँच

इस पाठ में DataFrames को एक साथ रखने के लिए pd.concat की अपनी समझ जाँचें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: pd.concat() और ignore_index=True से DataFrames को लंबवत रूप से कैसे जोड़ा जाता है, keys parameter का उपयोग करके स्रोतों को कैसे ट्रैक किया जाता है, और स्कीमा अलग होने पर join='inner' बनाम 'outer' कॉलम के प्रबंधन को कैसे नियंत्रित करता है। आगे हम साझा कुंजी वाले कॉलम पर SQL-शैली के inner और outer joins के लिए pd.merge() का अध्ययन करेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “DataFrames को स्टैक करने के लिए pd.concat” पाठ निःशुल्क है?

हाँ—“DataFrames को स्टैक करने के लिए pd.concat” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“DataFrames को स्टैक करने के लिए pd.concat” में मैं क्या सीखूँगा?

pd.concat से DataFrames को लंबवत या क्षैतिज रूप से जोड़ें, इंडेक्स या कॉलम के आधार पर संरेखित करें और डुप्लिकेट इंडेक्स संभालें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“DataFrames को स्टैक करने के लिए pd.concat” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. DataFrames को स्टैक करने के लिए pd.concat
  2. pd.merge: इनर और आउटर जॉइन
  3. लेफ़्ट और राइट जॉइन
  4. इंडेक्स पर जॉइन करना
← Pandas & NumPy Academy पर वापस जाएँ