Pandas

Python සඳහා වන, නම්‍යශීලී සහ බලවත් දත්ත විශ්ලේෂණ සහ හැසිරවීමේ මෙවලම.

Pandas යනු කුමක්ද?

Pandas යනු Python හි දත්ත විශ්ලේෂණය සඳහා ඇති වඩාත්ම ජනප්‍රිය library එකයි. එය NumPy මත පදනම්ව නිර්මාණය කර ඇත. Pandas හි ප්‍රධානම අංග දෙක වන්නේ `Series` (තීරු එකක්) සහ `DataFrame` (පේළි සහ තීරු සහිත, වගුවක් වැනි) දත්ත ව්‍යුහයන්ය.

සැබෑ ලෝකයේ දත්ත බොහෝවිට CSV, Excel වැනි ගොනු වල, වගු ආකාරයෙන් පවතී. Pandas මගින් මෙම දත්ත පහසුවෙන් Python වෙත ලබා ගැනීමට, පිරිසිදු කිරීමට, විශ්ලේෂණය කිරීමට, සහ පරිවර්තනය කිරීමට ඉඩ සලසයි. AI ව්‍යාපෘතියක 80% ක් පමණ ගතවන්නේ දත්ත සකස් කිරීමට වන අතර, ඒ සඳහා Pandas අත්‍යවශ්‍ය වේ.

ඇනලොජිය: NumPy යනු ගණිතමය මෙහෙයුම් සඳහා වන සුපිරි කැල්කියුලේටරය නම්, Pandas යනු දත්ත සඳහා වන "Excel on Steroids" වේ. එයට දත්ත පෙරීමට, වර්ග කිරීමට, කාණ්ඩ කිරීමට, ඒකාබද්ධ කිරීමට සහ සංකීර්ණ විශ්ලේෂණයන් කිරීමට හැකියාව ඇත.
මූලික භාවිතයන් සහ කේත උදාහරණ
1. දත්ත කියවීම සහ DataFrame නිර්මාණය

Pandas මගින් CSV, Excel, SQL වැනි බොහෝ ආකෘති වලින් දත්ත පහසුවෙන් කියවිය හැක. අපි උදාහරණයක් ලෙස CSV දත්ත අඩංගු DataFrame එකක් සාදමු.

import pandas as pd
import numpy as np
from io import StringIO

# සැබෑ CSV ගොනුවක් වෙනුවට, උදාහරණයක් ලෙස string එකක් භාවිතා කරමු
csv_data = """student_id,name,subject,marks,attendance
101,කමල්,Math,85,95.5
102,නිමලා,Science,92,88.0
103,සුනිල්,Math,78,92.1
104,අමාලි,Science,88,,
105,බිමල්,Math,,75.6
"""

# StringIO භාවිතයෙන් string එක DataFrame එකක් බවට පත් කිරීම
df = pd.read_csv(StringIO(csv_data))

# DataFrame එකේ මුල් පේළි 5 බැලීම
print("DataFrame (මුල් පේළි 5):")
print(df.head())

2. දත්ත ගවේෂණය (Data Exploration)

දත්ත විශ්ලේෂණයට පෙර, එහි ව්‍යුහය සහ අන්තර්ගතය තේරුම් ගැනීම වැදගත් වේ.

# DataFrame එකේ හැඩය (පේළි ගණන, තීරු ගණන)
print(f"\nDataFrame Shape: {df.shape}")

# DataFrame එක පිළිබඳ සාරාංශ තොරතුරු (දත්ත වර්ග, හිස් නොවන අගයන්)
print("\nDataFrame Info:")
df.info()

3. දත්ත තෝරාගැනීම සහ පෙරීම (Selection & Filtering)

DataFrame එකකින් නිශ්චිත දත්ත කොටස් තෝරාගැනීම සඳහා විවිධ ක්‍රම ඇත.

# 'name' සහ 'marks' තීරු පමණක් තෝරාගැනීම
subset = df[['name', 'marks']]
print("\nSelected Columns:\n", subset.head())

# කොන්දේසි කිහිපයක් මත පදනම්ව පෙරීම
# විෂය 'Math' වන සහ ලකුණු 80ට වැඩි අය
math_high_scorers = df[(df['subject'] == 'Math') & (df['marks'] > 80)]
print("\nMath High Scorers:\n", math_high_scorers)
දත්ත පිරිසිදු කිරීම සහ සකස් කිරීම
1. හිස් අගයන් හැසිරවීම (Handling Missing Values)

සැබෑ ලෝකයේ දත්ත බොහෝවිට අසම්පූර්ණයි. Pandas මගින් මෙම හිස් අගයන් (NaN - Not a Number) පහසුවෙන් කළමනාකරණය කළ හැක.

# එක් එක් තීරුවේ ඇති හිස් අගයන් ගණන සෙවීම
print("Missing values per column:\n", df.isnull().sum())

# A. හිස් අගයන් සහිත පේළි ඉවත් කිරීම (.dropna())
df_dropped = df.dropna()
print("\nAfter dropping rows with any missing value:\n", df_dropped)

# B. හිස් අගයන් වෙනත් අගයකින් පිරවීම (.fillna())
# ලකුණු වල හිස්තැන්, එම විෂයේ සාමාන්‍ය ලකුණින් පුරවමු
marks_mean = df['marks'].mean()
df['marks'].fillna(marks_mean, inplace=True) # inplace=True මගින් මුල් DataFrame එක වෙනස් කරයි
print("\nAfter filling missing marks:\n", df)

2. නව තීරු නිර්මාණය (Feature Engineering)

පවතින තීරු භාවිතයෙන් නව, අර්ථවත් තීරු නිර්මාණය කිරීම AI සඳහා ඉතා වැදගත් වේ.

# ලකුණු 85ට වඩා වැඩිනම් 'Pass', නැතිනම් 'Fail' ලෙස නව තීරුවක් සෑදීම
df['status'] = np.where(df['marks'] >= 85, 'Distinction', 'Pass')
print("\nDataFrame with 'status' column:\n", df)
දත්ත කාණ්ඩ කිරීම සහ ඒකාබද්ධ කිරීම
1. කාණ්ඩ කිරීම සහ සමූහනය (Grouping & Aggregation)

.groupby() යනු Pandas හි ඇති බලවත්ම ශ්‍රිතයකි. එය දත්ත කාණ්ඩ කර, එක් එක් කාණ්ඩය මත ගණනය කිරීම් කිරීමට ඉඩ දෙයි.

# විෂයයන් අනුව කාණ්ඩ කර, ලකුණු සහ පැමිණීමේ සාමාන්‍යය සහ සම්මත අපගමනය සෙවීම
subject_analysis = df.groupby('subject').agg(
    avg_marks=('marks', 'mean'),
    std_marks=('marks', 'std'),
    avg_attendance=('attendance', 'mean'),
    student_count=('student_id', 'count')
)
print("Analysis by Subject:\n", subject_analysis.round(2))

2. DataFrames ඒකාබද්ධ කිරීම (Merging/Joining)

වගු කිහිපයක ඇති දත්ත, පොදු තීරුවක් මත පදනම්ව එකතු කිරීමට `merge` භාවිතා කරයි.

# ගුරුවරුන් පිළිබඳ තොරතුරු ඇති තවත් DataFrame එකක්
teachers_data = {
    'subject': ['Math', 'Science'],
    'teacher_name': ['ප්‍රියන්ත සර්', 'මාලා ටීචර්']
}
teachers_df = pd.DataFrame(teachers_data)
print("Teachers DataFrame:\n", teachers_df)

# 'subject' තීරුව මත පදනම්ව DataFrame දෙකම merge කිරීම
full_details = pd.merge(df, teachers_df, on='subject', how='left')
print("\nMerged DataFrame:\n", full_details)
සාරාංශය

Pandas යනු දත්ත සමඟ වැඩ කරන ඕනෑම අයෙකුට අත්‍යවශ්‍යම මෙවලමකි. සැබෑ ලෝකයේ, අවුල් සහගත දත්ත, විශ්ලේෂණයට සහ AI ආකෘති නිර්මාණයට සුදුසු, පිරිසිදු සහ ව්‍යුහගත දත්ත බවට පත්කිරීමේදී Pandas හි කාර්යභාරය මිල කළ නොහැක.