பைதான் பாண்டாஸ் பிவோட் டேபிள்களுடன் தரவு மறுவடிவமைப்பை மாஸ்டர் செய்யவும். தொடரியல், மேம்பட்ட நுட்பங்கள், உலகளாவிய தரவு பகுப்பாய்வுக்கான எடுத்துக்காட்டுகளுடன் ஆழமான ஆய்வு.
பைதான் பாண்டாஸ் பிவோட் டேபிள்கள்: தரவு மறுவடிவமைப்பிற்கான ஒரு விரிவான வழிகாட்டி
தரவு பகுப்பாய்வு உலகில், தரவைச் சுருக்கவும், தொகுக்கவும், மறுசீரமைக்கவும் உள்ள திறன் ஒரு திறமை மட்டுமல்ல - அது ஒரு சூப்பர் பவர். மூலத் தரவுகள், அதன் அசல் வடிவத்தில், பெரும்பாலும் பரந்த, விரிவான ஒரு பதிவேட்டை ஒத்திருக்கிறது. இது தகவல்களால் நிறைந்தது, ஆனால் அதை விளக்குவது கடினம். அர்த்தமுள்ள நுண்ணறிவுகளைப் பெற, இந்த பதிவேட்டை ஒரு சுருக்கமான சுருக்கமாக மாற்ற வேண்டும். பிவோட் டேபிள்கள் சிறப்பாக செயல்படும் இடம் இதுதான், மேலும் பைதான் புரோகிராமர்களுக்கு, பாண்டாஸ் லைப்ரரி ஒரு சக்திவாய்ந்த மற்றும் நெகிழ்வான கருவியை வழங்குகிறது: pivot_table().
இந்த வழிகாட்டி தரவு ஆய்வாளர்கள், விஞ்ஞானிகள் மற்றும் பைதான் ஆர்வலர்கள் கொண்ட உலகளாவிய பார்வையாளர்களுக்காக வடிவமைக்கப்பட்டுள்ளது. பாண்டாஸ் பிவோட் டேபிள்களின் இயக்கவியலில் நாம் ஆழமாக மூழ்குவோம், அடிப்படை கருத்துகளிலிருந்து மேம்பட்ட நுட்பங்களுக்குச் செல்வோம். வெவ்வேறு கண்டங்களின் விற்பனை புள்ளிவிவரங்களைச் சுருக்கமாகக் கூறினாலும், பிராந்தியங்களில் காலநிலை தரவை பகுப்பாய்வு செய்தாலும், அல்லது ஒரு பரவலாக்கப்பட்ட குழுவிற்கான திட்ட அளவீடுகளைக் கண்காணித்தாலும், பிவோட் டேபிள்களை மாஸ்டர் செய்வது தரவு ஆய்வுக்கான உங்கள் அணுகுமுறையை அடிப்படையில் மாற்றும்.
பிவோட் டேபிள் என்றால் என்ன?
மைக்ரோசாப்ட் எக்செல் அல்லது கூகிள் ஷீட்ஸ் போன்ற விரிதாள் மென்பொருளை நீங்கள் எப்போதாவது பயன்படுத்தியிருந்தால், பிவோட் டேபிள் கருத்தைப் பற்றி நீங்கள் அறிந்திருக்கலாம். இது ஒரு ஊடாடும் அட்டவணை, இது ஒரு பெரிய டேட்டாசெட்டிலிருந்து தேர்ந்தெடுக்கப்பட்ட நெடுவரிசைகள் மற்றும் வரிசைத் தரவுகளை மறுசீரமைக்கவும் சுருக்கவும் உங்களை அனுமதிக்கிறது, இதன் மூலம் விரும்பிய அறிக்கையைப் பெறலாம்.
ஒரு பிவோட் டேபிள் இரண்டு முக்கிய விஷயங்களைச் செய்கிறது:
- ஒட்டுமொத்தமாக்குதல் (Aggregation): இது ஒன்று அல்லது அதற்கு மேற்பட்ட வகைகளால் தொகுக்கப்பட்ட எண் தரவுகளுக்கு ஒரு சுருக்கப் புள்ளிவிவரத்தை (கூட்டல், சராசரி அல்லது எண்ணிக்கை போன்றவை) கணக்கிடுகிறது.
- மறுவடிவமைத்தல் (Reshaping): இது தரவை 'நீண்ட' வடிவத்திலிருந்து 'அகலமான' வடிவத்திற்கு மாற்றுகிறது. அனைத்து மதிப்புகளும் ஒரே நெடுவரிசையில் இருப்பதை விட, இது ஒரு நெடுவரிசையிலிருந்து தனிப்பட்ட மதிப்புகளை வெளியீட்டில் புதிய நெடுவரிசைகளாக 'பவோட்' செய்கிறது.
பாண்டாஸ் pivot_table() செயல்பாடு, இந்த சக்திவாய்ந்த செயல்பாட்டை உங்கள் பைதான் தரவு பகுப்பாய்வு பணிப்பாய்வுக்கு நேரடியாகக் கொண்டுவருகிறது, இது மீண்டும் உருவாக்கக்கூடிய, ஸ்கிரிப்ட் செய்யக்கூடிய மற்றும் அளவிடக்கூடிய தரவு மறுவடிவமைப்பை அனுமதிக்கிறது.
உங்கள் சூழல் மற்றும் மாதிரி தரவை அமைத்தல்
நாம் தொடங்குவதற்கு முன், உங்களிடம் பாண்டாஸ் லைப்ரரி நிறுவப்பட்டுள்ளதை உறுதிப்படுத்தவும். இல்லையென்றால், பைதான் தொகுப்பு நிறுவிப் பயன்படுத்தி அதை நிறுவலாம்:
pip install pandas
இப்போது, அதை நம் பைதான் ஸ்கிரிப்ட் அல்லது நோட்புக்கில் இறக்குமதி செய்வோம்:
import pandas as pd
import numpy as np
உலகளாவிய விற்பனை டேட்டாசெட்டை உருவாக்குதல்
எங்கள் எடுத்துக்காட்டுகளை நடைமுறை மற்றும் உலகளாவிய பொருத்தமானதாக மாற்ற, ஒரு பன்னாட்டு இ-காமர்ஸ் நிறுவனத்தின் விற்பனைத் தரவுகளைப் பிரதிநிதித்துவப்படுத்தும் ஒரு செயற்கை டேட்டாசெட்டை உருவாக்குவோம். இந்த டேட்டாசெட் வெவ்வேறு பிராந்தியங்கள், நாடுகள் மற்றும் தயாரிப்பு வகைகளிலிருந்து வரும் விற்பனை பற்றிய தகவல்களை உள்ளடக்கும்.
# Create a dictionary of data
data = {
'TransactionID': range(1, 21),
'Date': pd.to_datetime([
'2023-01-15', '2023-01-16', '2023-01-17', '2023-02-10', '2023-02-11',
'2023-02-12', '2023-03-05', '2023-03-06', '2023-03-07', '2023-01-20',
'2023-01-21', '2023-02-15', '2023-02-16', '2023-03-10', '2023-03-11',
'2023-01-18', '2023-02-20', '2023-03-22', '2023-01-25', '2023-02-28'
]),
'Region': [
'North America', 'Europe', 'Asia', 'North America', 'Europe', 'Asia', 'North America', 'Europe', 'Asia', 'Europe',
'Asia', 'North America', 'Europe', 'Asia', 'North America', 'Asia', 'Europe', 'North America', 'Europe', 'Asia'
],
'Country': [
'USA', 'Germany', 'Japan', 'Canada', 'France', 'India', 'USA', 'UK', 'China', 'Germany',
'Japan', 'USA', 'France', 'India', 'Canada', 'China', 'UK', 'USA', 'Germany', 'India'
],
'Product_Category': [
'Electronics', 'Apparel', 'Electronics', 'Books', 'Apparel', 'Electronics', 'Books', 'Electronics', 'Apparel',
'Apparel', 'Books', 'Electronics', 'Books', 'Apparel', 'Electronics', 'Books', 'Apparel', 'Books', 'Electronics', 'Electronics'
],
'Units_Sold': [10, 5, 8, 20, 7, 12, 15, 9, 25, 6, 30, 11, 18, 22, 14, 28, 4, 16, 13, 10],
'Unit_Price': [1200, 50, 900, 15, 60, 1100, 18, 950, 45, 55, 12, 1300, 20, 40, 1250, 14, 65, 16, 1150, 1050]
}
# Create DataFrame
df = pd.DataFrame(data)
# Calculate Revenue
df['Revenue'] = df['Units_Sold'] * df['Unit_Price']
# Display the first few rows of the DataFrame
print(df.head())
இந்த டேட்டாசெட், வகை தரவு (பிராந்தியம், நாடு, தயாரிப்பு வகை), எண் தரவு (விற்பனை செய்யப்பட்ட அலகுகள், வருவாய்) மற்றும் நேரத் தொடர் தரவு (தேதி) ஆகியவற்றின் கலவையுடன் ஒரு உறுதியான அடித்தளத்தை நமக்கு வழங்குகிறது.
pivot_table() இன் கட்டமைப்பு
பாண்டாஸ் pivot_table() செயல்பாடு நம்பமுடியாத அளவிற்கு பல்துறை திறன் கொண்டது. அதன் மிக முக்கியமான அளவுருக்களைப் பார்ப்போம்:
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All')
- data: நீங்கள் பவோட் செய்ய விரும்பும் டேட்டாஃப்ரேம்.
- values: தொகுக்கப்பட வேண்டிய தரவைக் கொண்டிருக்கும் நெடுவரிசை(கள்). குறிப்பிடப்படாவிட்டால், மீதமுள்ள அனைத்து எண் நெடுவரிசைகளும் பயன்படுத்தப்படும்.
- index: புதிய பிவோட் டேபிளின் வரிசைகளை உருவாக்கும் தனிப்பட்ட மதிப்புகளைக் கொண்ட நெடுவரிசை(கள்). இது சில நேரங்களில் 'குழுவாக்குதல் விசை' என்று அழைக்கப்படுகிறது.
- columns: புதிய அட்டவணையின் நெடுவரிசைகளை உருவாக்க 'பவோட்' செய்யப்படும் தனிப்பட்ட மதிப்புகளைக் கொண்ட நெடுவரிசை(கள்).
- aggfunc: 'மதிப்புகளுக்கு'ப் பயன்படுத்த வேண்டிய தொகுப்புச் செயல்பாடு. இது 'sum', 'mean', 'count', 'min', 'max' போன்ற ஒரு சரம் அல்லது
np.sumபோன்ற ஒரு செயல்பாடாக இருக்கலாம். வெவ்வேறு நெடுவரிசைகளுக்கு வெவ்வேறு செயல்பாடுகளைப் பயன்படுத்த செயல்பாடுகளின் பட்டியலை அல்லது ஒரு அகராதியை நீங்கள் அனுப்பலாம். இயல்புநிலை 'mean'. - fill_value: பிவோட் டேபிளில் உள்ள விடுபட்ட முடிவுகளை (NaNs) மாற்றுவதற்கான ஒரு மதிப்பு.
- margins: ஒரு பூலியன்.
Trueஎன அமைக்கப்பட்டால், இது வரிசைகள் மற்றும் நெடுவரிசைகளுக்கான துணைத் தொகைகளை (கிராண்ட் டோட்டல் என்றும் அழைக்கப்படுகிறது) சேர்க்கிறது. - margins_name:
margins=Trueஆக இருக்கும்போது, தொகைகளைக் கொண்ட வரிசை/நெடுவரிசைக்கான பெயர். இயல்புநிலை 'All'.
உங்கள் முதல் பிவோட் டேபிள்: ஒரு எளிய எடுத்துக்காட்டு
ஒரு பொதுவான வணிகக் கேள்வியுடன் தொடங்குவோம்: "ஒவ்வொரு தயாரிப்பு வகையினாலும் ஈட்டப்பட்ட மொத்த வருவாய் என்ன?"
இதற்குப் பதிலளிக்க, நாம் செய்ய வேண்டியவை:
- வரிசைகளுக்கு (index)
Product_Categoryஐப் பயன்படுத்தவும். Revenueநெடுவரிசையை (values) தொகுக்கவும்.- நம் தொகுப்புச் செயல்பாடாக (aggfunc) கூட்டலைப் பயன்படுத்தவும்.
# Simple pivot table to see total revenue by product category
category_revenue = pd.pivot_table(df,
values='Revenue',
index='Product_Category',
aggfunc='sum')
print(category_revenue)
வெளியீடு:
Revenue
Product_Category
Apparel 1645
Books 1184
Electronics 56850
உடனடியாக, நமக்கு ஒரு தெளிவான, சுருக்கமான சுருக்கம் கிடைத்தது. மூலமான, 20 வரிசை பரிவர்த்தனைப் பதிவு, நம் கேள்விக்கு நேரடியாகப் பதிலளிக்கும் 3 வரிசை அட்டவணையுாக மறுவடிவமைக்கப்பட்டுள்ளது. இது ஒரு பிவோட் டேபிளின் அடிப்படை சக்தி.
ஒரு நெடுவரிசை பரிமாணத்தைச் சேர்த்தல்
இப்போது, இதை விரிவுபடுத்துவோம். தயாரிப்பு வகை வாரியான மொத்த வருவாயைப் பார்க்க விரும்பினால், அதை பிராந்தியம் வாரியாகப் பிரித்துப் பார்க்கவும் விரும்பினால் என்ன செய்வது? இங்குதான் columns அளவுரு முக்கியத்துவம் பெறுகிறது.
# Pivot table with index and columns
revenue_by_category_region = pd.pivot_table(df,
values='Revenue',
index='Product_Category',
columns='Region',
aggfunc='sum')
print(revenue_by_category_region)
வெளியீடு:
Region Asia Europe North America Product_Category Apparel 1125.0 625.0 NaN Books 336.0 360.0 488.0 Electronics 13200.0 14550.0 29100.0
இந்த வெளியீடு மிகவும் செறிவானது. 'பிராந்தியம்' நெடுவரிசையில் இருந்து தனிப்பட்ட மதிப்புகளை ('ஆசியா', 'ஐரோப்பா', 'வட அமெரிக்கா') புதிய நெடுவரிசைகளாக பவோட் செய்துள்ளோம். இப்போது வெவ்வேறு தயாரிப்பு வகைகள் பிராந்தியங்கள் முழுவதும் எவ்வாறு செயல்படுகின்றன என்பதை எளிதாக ஒப்பிடலாம். NaN (ஒரு எண் அல்ல) மதிப்பையும் பார்க்கிறோம். இது எங்கள் டேட்டாசெட்டில் 'வட அமெரிக்காவிற்கு' 'ஆடைகள்' விற்பனை எதுவும் பதிவு செய்யப்படவில்லை என்பதைக் குறிக்கிறது. இதுவே ஒரு மதிப்புமிக்க தகவலாகும்!
மேம்பட்ட பிவோட் நுட்பங்கள்
அடிப்படைகள் சக்திவாய்ந்தவை, ஆனால் pivot_table() இன் உண்மையான நெகிழ்வுத்தன்மை அதன் மேம்பட்ட அம்சங்களில் வெளிப்படுகிறது.
fill_value மூலம் விடுபட்ட மதிப்புகளைக் கையாளுதல்
நம் முந்தைய அட்டவணையில் உள்ள NaN துல்லியமானது, ஆனால் அறிக்கையிடல் அல்லது மேலதிக கணக்கீடுகளுக்கு, அதை பூஜ்ஜியமாக காண்பிப்பது விரும்பத்தக்கதாக இருக்கலாம். fill_value அளவுரு இதை எளிதாக்குகிறது.
# Using fill_value to replace NaN with 0
revenue_by_category_region_filled = pd.pivot_table(df,
values='Revenue',
index='Product_Category',
columns='Region',
aggfunc='sum',
fill_value=0)
print(revenue_by_category_region_filled)
வெளியீடு:
Region Asia Europe North America Product_Category Apparel 1125 625 0 Books 336 360 488 Electronics 13200 14550 29100
அட்டவணை இப்போது சுத்தமாகவும் படிக்க எளிதாகவும் உள்ளது, குறிப்பாக தொழில்நுட்ப அறிவு இல்லாதவர்களுக்கு.
பல குறியீடுகளுடன் வேலை செய்தல் (படிநிலை குறியிடல்)
வரிசைகளில் ஒன்றுக்கு மேற்பட்ட வகைகளால் குழுவாக்க வேண்டியிருந்தால் என்ன செய்வது? உதாரணமாக, பிராந்தியம் வாரியாகவும், பின்னர் ஒவ்வொரு பிராந்தியத்திற்குள்ளும் நாடு வாரியாகவும் விற்பனையைப் பிரிப்போம். index அளவுருவுக்கு நெடுவரிசைகளின் பட்டியலை அனுப்பலாம்.
# Multi-level pivot table using a list for the index
multi_index_pivot = pd.pivot_table(df,
values='Revenue',
index=['Region', 'Country'],
aggfunc='sum',
fill_value=0)
print(multi_index_pivot)
வெளியீடு:
Revenue
Region Country
Asia China 488
India 1760
Japan 10860
Europe France 1020
Germany 14440
UK 1115
North America Canada 17800
USA 12058
பாண்டாஸ் தானாகவே வரிசைகளில் ஒரு MultiIndex ஐ உருவாக்கியுள்ளது. இந்த படிநிலை அமைப்பு உங்கள் தரவுகளில் ஆழமாகச் சென்று உள்ளமைக்கப்பட்ட உறவுகளைப் பார்ப்பதற்கு மிகச் சிறந்தது. படிநிலை நெடுவரிசைகளை உருவாக்க columns அளவுருவுக்கும் இதே தர்க்கத்தைப் பயன்படுத்தலாம்.
பல தொகுப்புச் செயல்பாடுகளைப் பயன்படுத்துதல்
சில சமயங்களில், ஒரு சுருக்கப் புள்ளிவிவரம் போதாது. ஒவ்வொரு குழுவிற்கும் மொத்த வருவாய் (sum) மற்றும் சராசரி பரிவர்த்தனை அளவு (mean) இரண்டையும் பார்க்க நீங்கள் விரும்பலாம். நீங்கள் செயல்பாடுகளின் பட்டியலை aggfunc க்கு அனுப்பலாம்.
# Using multiple aggregation functions
multi_agg_pivot = pd.pivot_table(df,
values='Revenue',
index='Region',
aggfunc=['sum', 'mean', 'count'])
print(multi_agg_pivot)
வெளியீடு:
sum mean count
Revenue Revenue Revenue
Region
Asia 13108.000000 2184.666667 6
Europe 16575.000000 2762.500000 6
North America 29858.000000 4976.333333 6
இந்த ஒற்றை கட்டளை நமக்கு ஒரு விரிவான சுருக்கத்தை வழங்குகிறது: மொத்த வருவாய், ஒரு பரிவர்த்தனைக்கான சராசரி வருவாய், மற்றும் ஒவ்வொரு பிராந்தியத்திற்கான பரிவர்த்தனைகளின் எண்ணிக்கை. வெளியீட்டை ஒழுங்கமைக்க பாண்டாஸ் எவ்வாறு படிநிலை நெடுவரிசைகளை உருவாக்குகிறது என்பதைக் கவனியுங்கள்.
வெவ்வேறு மதிப்புகளுக்கு வெவ்வேறு செயல்பாடுகளைப் பயன்படுத்துதல்
நீங்கள் இன்னும் நுணுக்கமாகப் பெறலாம். வருவாய் இன் கூட்டலை, ஆனால் விற்பனை செய்யப்பட்ட அலகுகளின் சராசரியைக் காண விரும்புகிறீர்கள் என்று கற்பனை செய்து பாருங்கள். நீங்கள் aggfunc க்கு ஒரு அகராதியை அனுப்பலாம், அங்கு கீகள் நெடுவரிசைப் பெயர்கள் ('values') மற்றும் மதிப்புகள் விரும்பிய தொகுப்புச் செயல்பாடுகளாகும்.
# Different aggregations for different values
dict_agg_pivot = pd.pivot_table(df,
index='Region',
values=['Revenue', 'Units_Sold'],
aggfunc={
'Revenue': 'sum',
'Units_Sold': 'mean'
},
fill_value=0)
print(dict_agg_pivot)
வெளியீடு:
Revenue Units_Sold
Region
Asia 13108 17.833333
Europe 16575 8.166667
North America 29858 14.333333
இந்த அளவு கட்டுப்பாடுதான் pivot_table() ஐ அதிநவீன தரவு பகுப்பாய்விற்கான ஒரு சிறந்த கருவியாக மாற்றுகிறது.
margins உடன் மொத்தத் தொகைகளைக் கணக்கிடுதல்
அறிக்கையிடல் நோக்கங்களுக்காக, வரிசை மற்றும் நெடுவரிசை மொத்தத் தொகைகள் பெரும்பாலும் அவசியம். margins=True அளவுரு கூடுதல் முயற்சி இல்லாமல் இதை வழங்குகிறது.
# Adding totals with margins=True
revenue_with_margins = pd.pivot_table(df,
values='Revenue',
index='Product_Category',
columns='Region',
aggfunc='sum',
fill_value=0,
margins=True,
margins_name='Grand Total') # Custom name for totals
print(revenue_with_margins)
வெளியீடு:
Region Asia Europe North America Grand Total Product_Category Apparel 1125 625 0 1750 Books 336 360 488 1184 Electronics 13200 14550 29100 56850 Grand Total 14661 15535 29588 59784
பாண்டாஸ் தானாகவே ஒவ்வொரு வரிசைக்கான கூட்டலையும் (அனைத்து பிராந்தியங்களிலும் ஒவ்வொரு தயாரிப்பு வகைக்கான மொத்த வருவாய்) மற்றும் ஒவ்வொரு நெடுவரிசைக்கான கூட்டலையும் (அனைத்து வகைகளிலும் ஒவ்வொரு பிராந்தியத்திற்கான மொத்த வருவாய்) கணக்கிடுகிறது, மேலும் கீழ் வலது மூலையில் உள்ள அனைத்து தரவுகளுக்கும் ஒரு மொத்தத் தொகையையும் கணக்கிடுகிறது.
நடைமுறை பயன்பாட்டு வழக்கு: நேரம் சார்ந்த பகுப்பாய்வு
பிவோட் டேபிள்கள் நிலையான வகைகளுக்கு மட்டும் வரம்பு கிடையாது. நேரத் தொடர் தரவுகளை பகுப்பாய்வு செய்ய அவை நம்பமுடியாத அளவிற்கு பயனுள்ளதாக இருக்கும். ஒவ்வொரு மாதத்திற்கான மொத்த வருவாயைக் கண்டுபிடிப்போம்.
முதலில், நம் 'தேதி' நெடுவரிசையில் இருந்து மாதத்தைப் பிரித்தெடுக்க வேண்டும். இதற்கு பாண்டாஸில் உள்ள .dt அணுகுபவரைப் பயன்படுத்தலாம்.
# Extract month from the Date column
df['Month'] = df['Date'].dt.month_name()
# Pivot to see monthly revenue by product category
monthly_revenue = pd.pivot_table(df,
values='Revenue',
index='Month',
columns='Product_Category',
aggfunc='sum',
fill_value=0)
# Optional: Order the months correctly
month_order = ['January', 'February', 'March']
monthly_revenue = monthly_revenue.reindex(month_order)
print(monthly_revenue)
வெளியீடு:
Product_Category Apparel Books Electronics Month January 250 360 23100 February 795 794 24250 March 705 30 9500
இந்த அட்டவணை ஒவ்வொரு வகையின் விற்பனை செயல்திறனை காலப்போக்கில் தெளிவாகக் காட்டுகிறது, இது போக்குகள், பருவகாலத்தன்மை அல்லது முரண்பாடுகளை எளிதாகக் கண்டறிய அனுமதிக்கிறது.
pivot_table() vs. groupby(): என்ன வித்தியாசம்?
பாண்டாஸ் கற்கும்வர்களுக்கு இது ஒரு பொதுவான கேள்வி. இந்த இரண்டு செயல்பாடுகளும் நெருங்கிய தொடர்புடையவை, உண்மையில், pivot_table() ஆனது groupby() க்கு மேலே கட்டமைக்கப்பட்டுள்ளது.
groupby()என்பது ஒரு பொதுவான மற்றும் அடிப்படைச் செயல்பாடு. இது சில அளவுகோல்களின் அடிப்படையில் தரவை குழுவாக்கி, பின்னர் ஒரு தொகுப்புச் செயல்பாட்டைப் பயன்படுத்த உங்களை அனுமதிக்கிறது. இதன் விளைவாக பொதுவாக ஒரு படிநிலை குறியீட்டைக் கொண்ட பாண்டாஸ் சீரிஸ் அல்லது டேட்டாஃப்ரேம் இருக்கும், ஆனால் அது 'நீண்ட' வடிவத்தில் இருக்கும்.pivot_table()என்பது ஒரு சிறப்பு கருவியாகும், இது ஒரு குழுவாக்கலைச் செய்து பின்னர் தரவை மறுவடிவமைக்கிறது. அதன் முதன்மை நோக்கம் தரவை நீண்ட வடிவத்திலிருந்து அகலமான வடிவத்திற்கு மாற்றுவது, இது பெரும்பாலும் மனிதர்களால் படிக்க எளிதானது.
groupby() ஐப் பயன்படுத்தி எங்கள் முதல் எடுத்துக்காட்டை மீண்டும் பார்ப்போம்:
# Same result as our first pivot table, but using groupby
category_revenue_groupby = df.groupby('Product_Category')['Revenue'].sum()
print(category_revenue_groupby)
இதன் விளைவாக ஒரு பாண்டாஸ் சீரிஸ் கிடைக்கிறது, இது எங்கள் முதல் பிவோட் டேபிளில் இருந்து கிடைத்த டேட்டாஃப்ரேமுக்குச் செயல்பாட்டு ரீதியாகச் சமமானது. இருப்பினும், நீங்கள் இரண்டாவது குழுவாக்குதல் விசையை ('பிராந்தியம்' போன்றவை) அறிமுகப்படுத்தும்போது, வித்தியாசம் தெளிவாகிறது.
# Grouping by two columns
groupby_multi = df.groupby(['Product_Category', 'Region'])['Revenue'].sum()
print(groupby_multi)
வெளியீடு (ஒரு MultiIndex கொண்ட Series):
Product_Category Region
Apparel Asia 1125
Europe 625
Books Asia 336
Europe 360
North America 488
Electronics Asia 13200
Europe 14550
North America 29100
Name: Revenue, dtype: int64
pivot_table(index='Product_Category', columns='Region') ஐப் போன்ற 'அகலமான' வடிவத்தைப் பெற, நீங்கள் groupby() ஐத் தொடர்ந்து unstack() ஐப் பயன்படுத்த வேண்டும்:
# Replicating a pivot table with groupby().unstack()
groupby_unstack = df.groupby(['Product_Category', 'Region'])['Revenue'].sum().unstack(fill_value=0)
print(groupby_unstack)
இது எங்கள் நெடுவரிசைகளுடன் கூடிய பிவோட் டேபிளின் அதே வெளியீட்டை உருவாக்குகிறது. எனவே, pivot_table() ஐ பொதுவான groupby().aggregate().unstack() பணிப்பாய்வுக்கான ஒரு வசதியான குறுக்குவழியாக நீங்கள் கருதலாம்.
எதை எப்போது பயன்படுத்த வேண்டும்?
- மனிதர்களால் படிக்கக்கூடிய, அகலமான வடிவ வெளியீட்டை நீங்கள் விரும்பும்போது, குறிப்பாக அறிக்கையிடல் அல்லது குறுக்கு அட்டவணைகளை உருவாக்கும்போது
pivot_table()ஐப் பயன்படுத்தவும். - உங்களுக்கு அதிக நெகிழ்வுத்தன்மை தேவைப்படும்போது, தரவு செயலாக்க குழாயில் இடைநிலை கணக்கீடுகளைச் செய்யும்போது, அல்லது மறுவடிவமைக்கப்பட்ட, அகலமான வடிவம் உங்கள் இறுதி இலக்காக இல்லாதபோது
groupby()ஐப் பயன்படுத்தவும்.
செயல்திறன் மற்றும் சிறந்த நடைமுறைகள்
pivot_table() சக்திவாய்ந்தது என்றாலும், அதை திறமையாகப் பயன்படுத்துவது முக்கியம், குறிப்பாக பெரிய டேட்டாசெட்களுடன்.
- முதலில் வடிகட்டவும், பின்னர் பவோட் செய்யவும்: உங்கள் தரவின் ஒரு துணைக்குழுவை மட்டுமே நீங்கள் பகுப்பாய்வு செய்ய வேண்டுமானால் (எ.கா., கடந்த ஆண்டின் விற்பனை), பிவோட் டேபிளைப் பயன்படுத்துவதற்கு முன் டேட்டாஃப்ரேமை வடிகட்டவும். இது செயல்பாடு செயலாக்க வேண்டிய தரவின் அளவைக் குறைக்கிறது.
- வகைப்படுத்தப்பட்ட வகைகளைப் பயன்படுத்தவும்: உங்கள் பிவோட் டேபிள்களில் குறியீடுகளாகவோ அல்லது நெடுவரிசைகளாகவோ அடிக்கடி பயன்படுத்தும் நெடுவரிசைகளுக்கு ('பிராந்தியம்' அல்லது 'தயாரிப்பு வகை' போன்றவை), அவற்றை பாண்டாஸில் உள்ள 'category' dtype ஆக மாற்றவும். இது நினைவகப் பயன்பாட்டைக் கணிசமாகக் குறைத்து, குழுவாக்குதல் செயல்பாடுகளை விரைவுபடுத்தும்.
df['Region'] = df['Region'].astype('category') - படிக்கக்கூடியதாக வைத்திருக்கவும்: பல குறியீடுகள் மற்றும் நெடுவரிசைகளைக் கொண்ட பிவோட் டேபிள்களை உருவாக்குவதைத் தவிர்க்கவும். சாத்தியமான போதிலும், நூற்றுக்கணக்கான நெடுவரிசைகள் அகலமும் ஆயிரக்கணக்கான வரிசைகள் நீளமும் கொண்ட ஒரு பிவோட் டேபிள் அசல் மூலத் தரவைப் போலவே படிக்க முடியாததாகிவிடும். இலக்கு வைக்கப்பட்ட சுருக்கங்களை உருவாக்க இதைப் பயன்படுத்தவும்.
- ஒட்டுமொத்தமாக்குதலைப் புரிந்து கொள்ளுங்கள்: உங்கள்
aggfuncதேர்வில் கவனமாக இருங்கள். விலைகளில் 'sum' பயன்படுத்துவது அர்த்தமற்றது, அதே நேரத்தில் 'mean' மிகவும் பொருத்தமானதாக இருக்கலாம். உங்கள் ஒட்டுமொத்தமாக்கல் நீங்கள் பதிலளிக்க முயற்சிக்கும் கேள்விக்கு இணங்குவதை எப்போதும் உறுதிப்படுத்தவும்.
முடிவுரை: நுண்ணறிவுள்ள சுருக்கங்களுக்கான உங்கள் கருவி
பாண்டாஸ் pivot_table() செயல்பாடு எந்த தரவு ஆய்வாளரின் கருவிப்பெட்டியிலும் ஒரு தவிர்க்க முடியாத கருவியாகும். இது குழப்பமான, விரிவான தரவுகளிலிருந்து சுத்தமான, நுண்ணறிவுள்ள சுருக்கங்களுக்குச் செல்ல ஒரு அறிவிப்பு, வெளிப்படையான மற்றும் சக்திவாய்ந்த வழியை வழங்குகிறது. அதன் முக்கிய கூறுகள்—values, index, columns, மற்றும் aggfunc—ஆகியவற்றைப் புரிந்துகொண்டு மாஸ்டர் செய்வதன் மூலம், மற்றும் மல்டி-லெவல் இன்டெக்சிங், தனிப்பயன் திரட்டுதல் மற்றும் மார்ஜின்கள் போன்ற அதன் மேம்பட்ட அம்சங்களைப் பயன்படுத்துவதன் மூலம், சில வரிகள் பைதான் குறியீட்டைக் கொண்டு சிக்கலான வணிகக் கேள்விகளுக்குப் பதிலளிக்க உங்கள் தரவை மறுவடிவமைக்கலாம்.
அடுத்த முறை நீங்கள் ஒரு பெரிய டேட்டாசெட்டை எதிர்கொள்ளும்போது, முடிவில்லாத வரிசைகளில் ஸ்க்ரோல் செய்யும் ஆசையைத் தவிர்க்கவும். அதற்குப் பதிலாக, நீங்கள் பதிலளிக்க வேண்டிய கேள்விகள் மற்றும் ஒரு பிவோட் டேபிள் உங்கள் தரவை எவ்வாறு மறுவடிவமைத்து மறைந்திருக்கும் கதைகளை வெளிப்படுத்த முடியும் என்பதைப் பற்றி சிந்தியுங்கள். மகிழ்ச்சியான பவோட்டிங்!