pivot_table: क्रॉस-टैबुलेशन
pd.pivot_table से Excel जैसी पिवट तालिकाएँ बनाएँ और index, columns, values तथा aggfunc सेट करें।
pivot_table: क्रॉस-टैबुलेशन, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
पिवट तालिका क्या होती है
पिवट तालिका एक क्रॉस-टैबुलेशन होती है, जो दो श्रेणीगत आयामों के आधार पर डेटा का सारांश बनाती है—एक पंक्तियाँ बनाता है और दूसरा कॉलम—तथा प्रत्येक सेल में एक समेकित मान रखती है। यदि आपने कभी Excel में पिवट तालिका बनाई है, तो यह अवधारणा आपको तुरंत समझ आ जाएगी। Pandas इन सारांशों को पूरी तरह Python में बनाने के लिए pd.pivot_table() (और DataFrame विधि वाला संस्करण) प्रदान करता है।
मूल pivot_table कॉल
pd.pivot_table() के चार मुख्य पैरामीटर हैं: values (समेकित किया जाने वाला कॉलम), index (पंक्तियाँ बनने वाला कॉलम), columns (कॉलम बनने वाला कॉलम) और aggfunc (समेकन फ़ंक्शन, जिसका डिफ़ॉल्ट 'mean' है)। परिणाम एक DataFrame होता है, जिसमें प्रत्येक सेल में उस पंक्ति-कॉलम संयोजन का समेकित मान होता है।
import pandas as pd
df = pd.DataFrame({
'region': ['East', 'West', 'East', 'West', 'East', 'West'],
'product': ['A', 'A', 'B', 'B', 'A', 'B'],
'revenue': [200, 340, 150, 290, 310, 410]
})
table = pd.pivot_table(df,
values='revenue',
index='region',
columns='product',
aggfunc='sum')
print(table)
# product A B
# region
# East 510 150
# West 340 700aggfunc चुनना
aggfunc पैरामीटर NumPy/Pandas के किसी भी समेकन फ़ंक्शन का स्ट्रिंग नाम, कॉल करने योग्य फ़ंक्शन या कॉल करने योग्य फ़ंक्शनों की सूची स्वीकार करता है। सामान्य विकल्प हैं: कुल के लिए 'sum', औसत के लिए 'mean', आवृत्तियों के लिए 'count', और चरम मानों के लिए 'min'/'max'। जब आप सूची पास करते हैं, तो प्रत्येक समेकन को कॉलम MultiIndex में अपना अलग स्तर मिलता है।
# Using mean (default)
table_mean = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='mean')
print(table_mean.round(1))
# product A B
# region
# East 255.0 150.0
# West 340.0 350.0
# Using count
table_count = pd.pivot_table(df, values='revenue',
index='region', columns='product',
aggfunc='count')
print(table_count)fill_value से खाली सेल संभालना
जब पंक्ति और कॉलम लेबल के किसी संयोजन के लिए कोई डेटा नहीं होता, तो डिफ़ॉल्ट रूप से उस सेल में NaN होता है। उन खाली सेल को किसी अर्थपूर्ण डिफ़ॉल्ट मान से बदलने के लिए fill_value पास करें, जैसे गणना या revenue के लिए 0। इससे तालिका पढ़ना आसान होता है और आगे की अंकगणितीय संक्रियाओं से चुपचाप NaN परिणाम उत्पन्न होने से बचाव होता है।
df2 = pd.DataFrame({
'region': ['East', 'West', 'East'],
'product': ['A', 'A', 'B'],
'revenue': [200, 340, 150]
})
# West-B combination has no data -> NaN by default
table = pd.pivot_table(df2, values='revenue', index='region',
columns='product', aggfunc='sum', fill_value=0)
print(table)
# product A B
# region
# East 200 150
# West 340 0 <- filled with 0 instead of NaNmargins से उप-योग जोड़ना
पिवट तालिका में पंक्ति और कॉलम के कुल जोड़ने के लिए margins=True पास करें। Pandas नीचे एक 'All' पंक्ति और दाईं ओर एक 'All' कॉलम जोड़ता है, जिनमें सभी श्रेणियों के समेकित मान होते हैं। आप margins_name से कुल के लेबल का नाम बदल सकते हैं। यह Excel की पिवट तालिकाओं में मौजूद 'Grand Total' पंक्ति के समान है।
table = pd.pivot_table(df, values='revenue', index='region',
columns='product', aggfunc='sum',
fill_value=0, margins=True, margins_name='Total')
print(table)
# product A B Total
# region
# East 510 150 660
# West 340 700 1040
# Total 850 850 1700pivot_table में कई मान
values पैरामीटर कई मापों को एक साथ समेकित करने के लिए कॉलम नामों की सूची हो सकता है। परिणाम में एक कॉलम MultiIndex होता है, जिसमें बाहरी स्तर मान वाला कॉलम और आंतरिक स्तर श्रेणी होती है। इससे अलग-अलग कई पिवट तालिकाएँ बनाकर उन्हें मिलाने के बजाय एक ही कॉल में एक व्यापक सारांश तालिका बनाई जा सकती है।
df['units'] = [10, 15, 8, 12, 14, 18]
table = pd.pivot_table(df,
values=['revenue', 'units'],
index='region',
columns='product',
aggfunc='sum')
print(table)
# Columns: (revenue, A), (revenue, B), (units, A), (units, B)
print(table.columns.tolist())पदानुक्रमित इंडेक्स और कॉलम
जब आप index या columns में सूची पास करते हैं, तो पिवट तालिका के संबंधित अक्ष पर MultiIndex बनता है। इससे आप अधिक सूक्ष्म सारांश बना सकते हैं—उदाहरण के लिए, पंक्तियों में क्षेत्र और तिमाही के आधार पर revenue का विभाजन तथा कॉलम में उत्पाद के आधार पर विभाजन। सामान्य रूप से .loc और इंडेक्स टपल की सहायता से उप-स्तरों तक पहुँचें।
df['quarter'] = ['Q1', 'Q1', 'Q2', 'Q2', 'Q1', 'Q2']
table = pd.pivot_table(df, values='revenue',
index=['region', 'quarter'],
columns='product',
aggfunc='sum', fill_value=0)
print(table)
# product A B
# region quarter
# East Q1 510 0
# Q2 0 150
# West Q1 340 0
# Q2 0 700परिणाम को सपाट बनाना
पिवट तालिका बनाने के बाद इंडेक्स समूहीकरण वाला कॉलम होता है और कई मानों का उपयोग करने पर कॉलम MultiIndex को संभालना कठिन हो सकता है। एक सामान्य साफ़-सफ़ाई का तरीका है reset_index() कॉल करके पंक्ति इंडेक्स को सपाट बनाना, फिर सूची बोध का उपयोग करके अंडरस्कोर से स्तरों को जोड़ते हुए कॉलम MultiIndex को एक ही स्तर में समेट देना।
table = pd.pivot_table(df, values=['revenue', 'units'],
index='region', columns='product', aggfunc='sum')
# Flatten MultiIndex columns
table.columns = ['_'.join(str(c) for c in col) for col in table.columns]
table = table.reset_index()
print(table.columns.tolist())
# ['region', 'revenue_A', 'revenue_B', 'units_A', 'units_B']pivot_table बनाम groupby().agg()
pivot_table और groupby().agg() दोनों सारांश आँकड़े बनाते हैं। अंतर परिणाम के आकार में है: groupby().agg() प्रत्येक समूह संयोजन के लिए एक पंक्ति वाला लंबे प्रारूप का DataFrame लौटाता है, जबकि pivot_table एक चौड़े प्रारूप की तालिका लौटाता है, जिसमें एक आयाम कॉलम बन जाता है। डैशबोर्ड और रिपोर्ट के लिए पिवट तालिकाओं का चौड़ा प्रारूप अक्सर अधिक पठनीय होता है; आगे मशीन लर्निंग या सांख्यिकीय विश्लेषण के लिए लंबे प्रारूप को प्राथमिकता दी जाती है।
# Long format (groupby)
long = df.groupby(['region', 'product'])['revenue'].sum().reset_index()
print(long)
# region product revenue
# East A 510
# East B 150
# Wide format (pivot_table)
wide = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
print(wide)
# product A B
# region
# East 510 150पिवट तालिका को क्रमबद्ध और शैलीबद्ध करना
पिवट तालिका एक सामान्य DataFrame होती है, इसलिए आप इसे क्रमबद्ध कर सकते हैं, व्युत्पन्न कॉलम निकाल सकते हैं और इसे किसी भी अन्य Pandas DataFrame की तरह प्रारूपित कर सकते हैं। उदाहरण के लिए, किसी विशिष्ट उत्पाद के कॉलम के आधार पर अवरोही क्रम में क्रमबद्ध करके क्षेत्रों को उस उत्पाद के प्रदर्शन के अनुसार रैंक करें, या प्रत्येक सेल को पंक्ति के कुल से विभाजित करके प्रतिशत कॉलम जोड़ें।
table = pd.pivot_table(df, 'revenue', 'region', 'product', 'sum', fill_value=0)
# Sort by product A revenue descending
table_sorted = table.sort_values('A', ascending=False)
print(table_sorted)
# Add percentage of row total
table['A_pct'] = (table['A'] / table.sum(axis=1) * 100).round(1)
print(table)व्यावहारिक उपयोग: बिक्री डैशबोर्ड तालिका
पिवट तालिकाएँ प्रबंधन रिपोर्ट और डैशबोर्ड बनाने का प्रमुख उपकरण हैं। एक सामान्य कार्यप्रवाह है: कच्चे लेन-देन डेटा को लोड करें, महीनों को कॉलम और उत्पाद श्रेणियों को पंक्तियों के रूप में रखकर पिवट तालिका बनाएँ, कुल जोड़ें, फिर Excel में निर्यात करें। कच्चे डेटा से लेकर बोर्डरूम के लिए तैयार तालिका तक का पूरा कार्यप्रवाह Pandas की कुछ ही कॉल में पूरा हो जाता है।
# Simulated monthly product revenue pivot
result = pd.pivot_table(
df,
values='revenue',
index='product',
columns='region',
aggfunc='sum',
fill_value=0,
margins=True,
margins_name='Grand Total'
)
print(result)
# Export to Excel
# result.to_excel('sales_pivot.xlsx')त्वरित जाँच
इस पाठ से pd.pivot_table की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: pd.pivot_table() क्रॉस-टैबुलेशन सारांश बनाता है, जिसमें एक आयाम पंक्तियाँ और दूसरा कॉलम होता है; fill_value खाली सेल संभालता है और margins=True कुल जोड़ता है; आप कई मानों को एक साथ समेकित कर सकते हैं; और पिवट तालिकाएँ रिपोर्ट के लिए उपयुक्त चौड़े प्रारूप का परिणाम देती हैं। आगे हम उलटा संचालन सीखेंगे: चौड़े डेटा को फिर से लंबे प्रारूप में बदलने के लिए melt()।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “pivot_table: क्रॉस-टैबुलेशन” पाठ निःशुल्क है?
हाँ—“pivot_table: क्रॉस-टैबुलेशन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“pivot_table: क्रॉस-टैबुलेशन” में मैं क्या सीखूँगा?
pd.pivot_table से Excel जैसी पिवट तालिकाएँ बनाएँ और index, columns, values तथा aggfunc सेट करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“pivot_table: क्रॉस-टैबुलेशन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- pivot_table: क्रॉस-टैबुलेशन
- melt: वाइड से लॉन्ग प्रारूप
- MultiIndex के साथ stack और unstack
- आवृत्ति तालिकाओं के लिए crosstab