அறிமுகம்
Pandas என்பது தரவு பணிப்பாய்வுகளை நிருவகிக்கவும் பகுப்பாய்வு செய்திடுவதற்கும் சந்தேகத்திற்கு இடமின்றி ஒரு வலிமையான , பல்துறை நூலகமாகும், இது தரவு அறிவியலின் பெரிய படத்தில் அடித்தளமாக உள்ளது. இருப்பினும், தரவுத்தொகுப்பு அளவுகள் மிகப் பெரியதாக மாறும்போது, இது மிகவும் திறமையான வாய்ப்பாக இருக்காது, ஏனெனில் இது முக்கியமாக ஒரு நூலிழையில் இயங்குகிறது மேலும் பைத்தானின் மொழிபெயர்ப்பாளரை பெரிதும் நம்பியுள்ளது, இது குறிப்பிடத்தக்க செயலாக்க நேரத்திற்கு வழிவகுக்குகின்றது.
இந்த கட்டுரை பாண்டாக்கள் போன்ற செயலிகளை விரைவுபடுத்துகின்ற Polars.எனும் ஒரு புதிய நூலகத்தில் கவனம் செலுத்துகிறது: குறிப்பாக, தினசரி தரவினை கையாளுதலையும் செயலாக்க பணிகளையும் நெறிப்படுத்தவும் விரைவுபடுத்தவும் பத்து நுண்ணறிவுள்ள Polars.இன் ஒருவரிகட்டளைகள் பகிர்ந்து கொள்ளப்படுகின்றது.. இதனைதொடங்குவதற்கு முன், முதலில் Polars.ஐ பதிவிறக்கம்செய்து நிறுவுகைசெய்திட மறக்கவேண்டாம்!
#1. CSV கோப்புகளை பதிவேற்றம்செய்தல்
ஒரு CSV கோப்பிலிருந்து ஒரு தரவுத்தொகுப்பைப் படிக்க Polars.இன் வழிமுறையானது Pandas போன்றே இருக்கிறது, இது பல திரிக்கப்பட்டதை (வளாகத்தில் Rustஇல் எழுதப்பட்ட) தவிர, தரவை மிகவும் திறமையான முறையில் பதிவேற்றம்செய்திட அனுமதிக்கிறது. இந்த எடுத்துக்காட்டு ஒரு Polarsஆனது தரவு வரைச்சட்டத்தில் ஒரு CSV கோப்பை எவ்வாறு பதிவேற்றம்செய்வது என்பதைக் காண்பிக்கிறது இதற்கான ஒருவரிகட்டளைபின்வருமாறு:.
df = pl.read_csv(“dataset.csv”)
நடுத்தர அளவிலான தரவுத்தொகுப்புக்கு (மிகப் பெரியவை மட்டுமல்ல), Polars உடன் கோப்பைப் படிக்க எடுக்கும் நேர வித்தியாசம் Pandas ஐப் பயன்படுத்துவதை விட சுமார் 5 மடங்கு விரைவானதாக இருக்கும்.
# 2. அதிக அளவிடக்கூடிய பணிப்பாய்வுகளுக்கு Lazy dataframe எனும் கட்டளை
ஒரே நேரத்தில் ஆர்வத்துடன் படிப்பதை விட “lazy dataframe” என்று அழைக்கப்படுவதை உருவாக்குவது என்பது தரவு பணிப்பாய்வு முழுவதும் அடுத்தடுத்த செயல்பாடுகளை சங்கிலியால் பிணைக்க உதவும் ஒரு அணுகுமுறையாகும், இறுதியில் collect() எனும் வழிமுறை அழைக்கப்படும் போது மட்டுமே அவற்றை செயல்படுத்துகிறது – பெரிய அளவிலான தரவு ஒரு இணைச்செயலாக்கமான பாதைகளுக்கு மிகவும் எளிமையான உத்தியாகும்! scan_csv() எனும்வழிமுறையைப் பயன்படுத்தி lazy dataframe என்பதை பதிவேற்றம்செய்து பயன்படுத்துவது எவ்வாறு என்பதற்கான ஒருவரிகட்டளை பின்வருமாறு:
df_lazy = pl.scan_csv(“dataset.csv”)
# 3. தொடர்புடைய நெடுவரிசைகளைத் தேர்ந்தெடுத்து மறுபெயரிடுதல்
அடுத்தடுத்த செயலாக்கத்தில் செயல்பாடுகளை எளிதாகவும் தெளிவாகவும் செய்ய, தரவு அறிவியல் அல்லது பகுப்பாய்வு செயல்திட்டத்திற்கு பொருத்தமான தரவுத்தொகுப்பின் நெடுவரிசைகளை மட்டுமே கையாளுகின்றோம் என்பதை உறுதிசெய்வது நல்லது. Polars dataframes என்பதன்மூலம் இதை எவ்வாறு திறமையாக செய்வது என்பது பின்வருமாறு. இது போன்ற ஒரு வாடிக்கையாளர் தரவுத்தொகுப்பைப் பயன்படுத்துகின்றோம் எனக்கொள்க. பின்னர் நம்முடைய வய்ப்பிற்கு பொருத்தமான நெடுவரிசைகளைத் தேர்ந்தெடுக்க பின்வருமாறு ஒரு-வரிகட்டளையைப் பயன்படுத்திகொள்ளலாம், :
df = df.select([pl.col(“Customer Id”), pl.col(“First Name”)])
# 4. கிடைவரிசைகளின் துணைக்குழுவிற்கு வடிகட்டுதல்
கண்டிப்பாக, குறிப்பிட்ட கிடைவரிசைகளையும் வடிகட்டலாம், எ.கா. வாடிக்கையாளர்கள், Polarsஇன் வழியில். இந்த ஒரு-வரிகட்டளைையானது ஒரு குறிப்பிட்ட நகரத்தில் வசிக்கும் வாடிக்கையாளர்களை வடிகட்டப் பயன்படுகிறது.
df_filtered = df.filter(pl.col(“City”) == “Hatfieldshire”)
இந்த “வினவலின்” முடிவைக் காண, அதாவது குறிப்பிட்ட அளவுகோல்களை பூர்த்தி செய்யும் கிடைவரிசைகளைக் காண, display() அல்லது head() போன்ற ஒரு வழிமுறையைப் பயன்படுத்திகொள்ளலாம்.
# 5. வகை,கணக்கீட்டின் திரட்டுதல்களின் அடிப்படையில் தொகுத்தல்
தொகுத்தல், திரட்டுதல் போன்ற செயலிகளுடன், Polars’இன் செயல்திறனின் மதிப்பு உண்மையிலேயே பெரிய தரவுத்தொகுப்புகளில் காண்பிக்கத் தொடங்குகிறது. இந்த ஒற்றை-வரிகட்டளையை எடுத்துக்காட்டாகக் கொள்க: இங்கே முக்கியமான செய்திஎன்னவென்றால், ஒரு வகைப்படுத்தப்பட்ட நெடுவரிசையில் group_by என்பதை இணைத்து, ஒவ்வொரு குழுவிலும் உள்ள அனைத்து கிடைவரிசை களுக்கும் ஒரு திரட்டுதலைச் செய்ய agg() என்பதுடன் இணைப்பதாகும்,எ.கா.ஒரு நெடுவரிசையில் சராசரி,அல்லது ஒவ்வொரு குழுவிலும் உள்ள கிடைவரிசைகளின் எண்ணிக்கையைகணக்கிட பின்வருமாறான ஒருவரிகட்டளை:
df_city = df.group_by(“City”).agg([pl.len().alias(“num_customers”)])
கவனமாக இருந்திடுக! Pandas களில், groupby() க்கு அடிக்கோட்டின் குறிமுறைவரிகள் இல்லை, ஆனால் Polars களில், அது உள்ளது.
# 6. பெறப்பட்ட நெடுவரிசைகளை உருவாக்குதல் (எளிய பொறியியல்இயல்பு )
Polars களின் நெறியமாக்கப்பட்ட (vectorized) எனும்கணக்கீட்டு திறன்கள்உள்ளன, ஏற்கனவே உள்ளவற்றில் எண்கணித செயல்பாடுகளிலிருந்து புதிய நெடுவரிசைகளை உருவாக்குவது கணிசமாக விரைவானது. இந்த ஒருவரிகட்டளை இதை நிரூபிக்கிறது. இதற்கான ஒருவரிகட்டளைபின்வருமாறு::
df = df.with_columns((pl.col(“total_rooms”) / pl.col(“households”).alias(“rooms_per_household”))
# 7. நிபந்தனை தருக்கத்தைப் பயன்படுத்துதல்
வருமான நிலைகள் அல்லது ஒத்த பண்புக்கூறுகள் போன்ற தொடர்ச்சியான பண்புக்கூறுகளை வகைப்படுத்தி அடையாளமிடப்பட்ட பிரிவுகளாக மாற்றலாம், அனைத்தும் நெறியமாக்கப்பட்ட (vectorized) மேல்நிலை இல்லாத முறையில். சராசரி வருமானத்தின் அடிப்படையில் ஒரு வருமான_வகை நெடுவரிசையை உருவாக்க இந்த எடுத்துக்காட்டு அவ்வாறு செய்கிறது இதற்கான ஒருவரிகட்டளைபின்வருமாறு::
df = df.with_columns(pl.when(pl.col(“median_income”) > 5). then(pl.lit(“High”)).otherwise(pl.lit(“Low”)).alias(“income_category”))
8. ஒரு சோம்பேறித்தானமான இணைச்செயலாக்கத்தினை செயல்படுத்துதல்
இந்த ஒருவரிகட்டளை, சற்று பெரியதாக இருந்தாலும், சேகரிப்பு முறையுடன் செயல்படுத்தப்படும் ஒரு சோம்பேறித்தானமான இணைச்செயலாக்கத்தினை உருவாக்க முந்தைய எடுத்துக்காட்டுகளில் காணப்பட்ட பல ஆலோசனைகளை ஒன்றிணைக்கிறது. நினைவில் கொள்க: இந்த Lazy அணுகுமுறை செயல்படுவதற்காக தரவுத்தொகுப்பின் கோப்பை “the lazy way” என படிக்க 2 எனும் ஒரு வரி எண்ணைப் பயன்படுத்த வேண்டும்.
result = (pl.scan_csv(“https://raw.githubusercontent.com/ageron/handson-ml/master/datasets/housing/housing.csv”)
.filter(pl.col(“median_house_value”) > 200000)
.with_columns((pl.col(“total_rooms”) / pl.col(“households”)).alias(“rooms_per_household”))
.group_by(“ocean_proximity”).agg(pl.mean(“rooms_per_household”).alias(“avg_rooms_per_household”))
.sort(“avg_rooms_per_household”, descending=True)
.collect())
# 9. தரவுத்தொகுப்புகளை இணைத்தல்
சேகரிக்கப்பட்ட புள்ளிவிவரத் தகவல்களுடன் region_stats.csv எனப்படும் கூடுதல் தரவுத்தொகுப்பு இருப்பதாகக்கொள்க. பின்னர், ஒரு குறிப்பிட்ட வகை நெடுவரிசையில் இணைப்பு செயல்பாடுகளைப் பயன்படுத்த பின்வருமாறான ஒருவரிகட்டளையைபயன்படுத்தலாம்,:
df_joined = df.join(pl.read_csv(“region_stats.csv”), on=”ocean_proximity”, how=”left”)
பெரிய தரவுத்தொகுப்புகளில் கூட செயல்திறனைப் பாதுகாக்கும் Polarsகளின் பல-திரிக்கப்பட்ட இணைப்புகள் வழியாக, மீப்பெரும்தரவுடன் கீழ்நிலைத் தரவின் திறமையான கலவையாக இதன் விளைவாக இருக்கும்.
# 10.Rolling கணக்கீடுகளைச் செய்தல்
மிகவும் ஏற்ற இறக்கமான தரவு மாறிகளில், நெடுவரிசைகளிலும், கிடைவரிசைகளிலும் சராசரி மதிப்புகளை மென்மையாக்க உருளும் திரட்டுகள் பயனுள்ளதாக இருக்கும். இந்த ஒருவரிகட்டளைகள் இவ்வளவு வேகமான, நெறியமாக்கப்பட்ட (vectorized) செயலியை எவ்வாறு பயன்படுத்துவது என்பதை விளக்குகிறது: தற்காலிக கிடைவரிசைகளுக்கு ஏற்றதுதற்கான ஒருவரிகட்டளைபின்வருமாறு:.
Df = df.sort(“longitude”).with_columns(pl.col(“median_house_value”).rolling_mean(window_size=7).alias(“rolling_value_avg”))
# சுருக்கமாக கூறுவதெனில்
இந்தக் கட்டுரையில், பெரிய தரவுத்தொகுப்புகளைக் கையாளுவதற்கான Pandasகளுக்கு விரைவான மாற்றாக Polarsகளை திறமையாகப் பயன்படுத்துவதற்கான 10 எளிமையான ஒருவரிகட்டளைகளை பட்டியலிட்டுள்ளோம். இந்த ஒருவரிகட்டளைகள் குறைந்த நேரத்தில் பெரிய அளவிலான தரவைக் கையாளுவதற்கான விரவான, உகந்த உத்திகளை இணைக்கின்றன. அடுத்த முறை நம்முடைய செயல் திட்டங்களில் Polarsகளுடன் பணிபுரியும் போது, சந்தேகத்திற்கு இடமின்றி பல்வேறு மேம்பாடுகளைக் காண்போம்