Python Data Science Sinhala Guide | NumPy, Pandas, Matplotlib & Seaborn

Python Data Science Sinhala Guide | NumPy, Pandas, Matplotlib & Seaborn

කට්ටියටම ආයුබෝවන්! අද ලෝකයේ Data Science කියන්නේ හරිම උණුසුම් මාතෘකාවක් නේද? අපි හැම තිස්සෙම කතා කරන AI (Artificial Intelligence), Machine Learning, Deep Learning වගේ දේවල් වලට අඩිතාලම දාන්නේ මේ Data Science තමයි. ඔයාටත් මේ නව තාක්ෂණික ලෝකයේ කොටස්කරුවෙක් වෙන්න ඕන නම්, Data Science කියන්නේ අනිවාර්යයෙන්ම ඉගෙන ගත යුතු ක්ෂේත්‍රයක්.

Data Science කරන්න පුළුවන් Programming Languages ගොඩක් තිබුණත්, Python කියන්නේ මේකට තියෙන ප්‍රබලම සහ ජනප්‍රියම භාෂාවයි. ඒකට හේතුව Python ඉගෙන ගන්න පහසු වීම, ඒ වගේම Data Science වැඩ වලටම හදපු අතිවිශාල Libraries ප්‍රමාණයක් තිබීම. මේ Libraries තමයි Data Scientist කෙනෙක්ට දත්ත එක්ක වැඩ කරන්න අවශ්‍ය සියලුම Tools ලබා දෙන්නේ.

මේ Tutorial එකෙන් අපි Data Science වලදී වැඩිපුරම භාවිත වෙන Libraries තුනක් ගැන කතා කරනවා: NumPy, Pandas, සහ Matplotlib/Seaborn. මේවා මොනවද, ඇයි මේවා වැදගත්, සහ මේවා භාවිත කරලා දත්ත Analysis (විශ්ලේෂණය) සහ Visualization (දෘශ්‍යකරණය) කරන හැටි අපි සරලව, පැහැදිලිව බලමු. ඔයා Python වලට අලුත් කෙනෙක් වුණත්, මේ Tutorial එක අවසානෙදි Data Science වලට අවශ්‍ය මූලික දැනුම ඔයාට ලැබෙයි කියලා මම විශ්වාස කරනවා.

NumPy - සංඛ්‍යාත්මක ගණනය කිරීම් සඳහා ප්‍රබල මෙවලම

මුලින්ම අපි කතා කරමු NumPy ගැන. NumPy කියන්නේ Numerical Python වල කෙටි යෙදුමක්. ඔයා සංඛ්‍යාත්මක දත්ත (numerical data) එක්ක වැඩ කරනවා නම්, මේ Library එක නැතුවම බෑ. විද්‍යාත්මක ගණනය කිරීම් (scientific computing), විශාල දත්ත කට්ටල ඇසුරින් සංකීර්ණ ගණනය කිරීම් කරන්න NumPy අපිට ලොකු සහයෝගයක් දෙනවා. Python වල සාමාන්‍ය list එකකට වඩා NumPy Arrays (ndarray) ගොඩක් වේගවත් හා කාර්යක්ෂමයි, විශේෂයෙන්ම විශාල දත්ත කට්ටල සමඟ වැඩ කරනකොට. ඒ වගේම Vectorization වගේ සංකල්ප නිසා code එකක් ලියන්න තියෙන වෙලාවත් අඩු කරනවා.

NumPy Arrays වල වැදගත්කම

  • වේගය: NumPy Arrays C Language වලින් Implement කරලා තියෙන නිසා Python Lists වලට වඩා ගොඩක් වේගවත්.
  • කාර්යක්ෂමතාව: Memory Usage එක අඩුයි.
  • බලවත් Functions: Linear Algebra, Fourier Transforms, Random Number Generation වගේ ගොඩක් mathematical functions NumPy වල තියෙනවා.

ප්‍රායෝගික උදාහරණය: NumPy Arrays සහ මෙහෙයුම්

අපි දැන් බලමු NumPy භාවිතයෙන් Arrays හදන හැටි සහ ඒවාට විවිධ ගණිතමය මෙහෙයුම් (mathematical operations) කරන හැටි.

import numpy as np

# 1D Array එකක් හදමු (Python List එකකට සමානයි)
arr1d = np.array([1, 2, 3, 4, 5])
print("1D Array:", arr1d)
print("Array එකේ වර්ගය:", type(arr1d))
print("Array එකේ තියෙන element ගණන:", arr1d.size)

# 2D Array (Matrix) එකක් හදමු
arr2d = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
print("\n2D Array:\n", arr2d)

# Array එකේ Shape එක (rows, columns)
print("2D Array එකේ Shape එක:", arr2d.shape)

# Array එකේ තියෙන element වල Data Type එක
print("2D Array එකේ Element වල Data Type එක:", arr2d.dtype)

# Basic Arithmetic Operations (Element-wise operations)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

print("\nBasic Operations:")
# එකතු කිරීම
print("a + b:", a + b)
# අඩු කිරීම
print("a - b:", a - b)
# ගුණ කිරීම (element-wise)
print("a * b:", a * b)
# බෙදීම
print("a / b:", a / b)
# බලය (Power)
print("a**2:", a**2) # a හි එක් එක් අගය වර්ග කිරීම

# NumPy වල තියෙන ප්‍රයෝජනවත් functions
print("\nNumPy Functions:")
print("Array එකේ සාමාන්‍යය (Mean):", np.mean(arr1d))
print("Array එකේ උපරිම අගය (Max):", np.max(arr1d))
print("Array එකේ අවම අගය (Min):", np.min(arr1d))
print("Array එකේ එකතුව (Sum):", np.sum(arr1d))

මේ Code එකෙන් ඔයාට පේනවා ඇති, NumPy භාවිතයෙන් Arrays හදන හැටි සහ ඒවාට විවිධ Mathematical Operations කරන හැටි. NumPy වල තව ගොඩක් Functions තියෙනවා, ඒ ගැන වැඩිදුරටත් ඉගෙන ගන්න එක ඔයාගේ Data Science ගමනට ලොකු ශක්තියක් වෙයි.

Pandas - දත්ත හැසිරවීම පහසු කරයි

දැන් අපි කතා කරමු Pandas ගැන. Data Science වලදී දත්ත එක්රැස් කරාට පස්සේ ඒවා 'Clean' කරගන්න, 'Transform' කරගන්න, නැත්නම් 'Manipulate' කරගන්න ඕනේ. මේකට තියෙන සුපිරිම Library එක තමයි Pandas. මේක Microsoft Excel Sheet එකක් වගේ, නැත්නම් SQL Table එකක් වගේ දත්ත එක්ක වැඩ කරන්න පුදුම විදියට පහසුකම් සලසනවා. 'Panel Data' කියන එකෙන් තමයි 'Pandas' කියන නම හැදිලා තියෙන්නේ.

Pandas වල ප්‍රධාන දත්ත ව්‍යුහ

Pandas වල ප්‍රධාන දත්ත ව්‍යුහ දෙකක් තියෙනවා:

  • Series: මේක එක column එකක් වගේ. ඒකේ Index එකක් සහ ඒ Index එකට අනුරූපව Values තියෙනවා. මේක NumPy Array එකකට සමානයි, නමුත් Index එකක් තියෙන නිසා දත්ත වලට ලේබල් කරන්න පුළුවන්.
  • DataFrame: මේක තීරු (columns) සහ පේළි (rows) තියෙන වගුවක් (table) වගේ. මේක තමයි Pandas වල වැඩිපුරම භාවිත වෙන දත්ත ව්‍යුහය. SQL Table එකක්, Excel Spreadsheet එකක් වගේ ඔයාට මේක හිතන්න පුළුවන්.

ප්‍රායෝගික උදාහරණය: Pandas DataFrame මෙහෙයුම්

අපි දැන් බලමු Pandas භාවිතයෙන් DataFrames හදන හැටි, දත්ත තෝරාගන්න හැටි, සහ දත්ත Filter කරන හැටි.

import pandas as pd
import numpy as np

# Dictionary එකකින් DataFrame එකක් හදමු
data = {
    'නම': ['අරුණ', 'බන්දුල', 'චමල්', 'දිනේෂ්', 'එරංග', 'චන්ද්‍රා'],
    'වයස': [25, 30, 22, 28, 35, 29],
    'නගරය': ['කොළඹ', 'ගාල්ල', 'මහනුවර', 'කළුතර', 'කොළඹ', 'මහනුවර'],
    'ලකුණු': [85, 92, 78, 90, 65, 88]
}
df = pd.DataFrame(data)
print("මුල් DataFrame එක:\n", df)

# Column එකක් තෝරාගැනීම
print("\n'නම' Column එක:\n", df['නම'])

# Columns කිහිපයක් තෝරාගැනීම
print("\n'නම' සහ 'වයස' Columns:\n", df[['නම', 'වයස']])

# පේළි Filter කිරීම (Conditions අනුව)
# වයස 25 ට වැඩි අය
print("\nවයස 25 ට වැඩි අය:\n", df[df['වයස'] > 25])

# නගරය 'කොළඹ' වන අය
print("\nනගරය 'කොළඹ' වන අය:\n", df[df['නගරය'] == 'කොළඹ'])

# Condition කිහිපයක් එකට භාවිත කිරීම (නගරය 'කොළඹ' වන සහ වයස 30ට වැඩි අය)
print("\nනගරය 'කොළඹ' වන සහ වයස 30ට වැඩි අය:\n", df[(df['නගරය'] == 'කොළඹ') & (df['වයස'] > 30)])

# නව Column එකක් එකතු කිරීම
df['ප්‍රතිඵලය'] = ['Pass' if score >= 80 else 'Fail' for score in df['ලකුණු']]
print("\n'ප්‍රතිඵලය' Column එක එකතු කළ පසු:\n", df)

# Missing Values (නැතිවූ දත්ත) සමඟ වැඩ කිරීම
df_missing = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [4, np.nan, 6, 7], 'C': [np.nan, 9, 10, 11]})
print("\nMissing Values සහිත DataFrame එක:\n", df_missing)

# Missing values පුරවන්න (උදා: 0 වලින්)
df_filled = df_missing.fillna(0)
print("\nMissing values 0 වලින් පිරවූ පසු:\n", df_filled)

# Missing values තියෙන පේළි අයින් කරන්න
df_dropped = df_missing.dropna()
print("\nMissing values තියෙන පේළි අයින් කළ පසු:\n", df_dropped)

# CSV File එකක් Read කිරීම
# (ඔබේ පරිගණකයේ 'sample_data.csv' කියලා ගොනුවක් හදලා මේවා ඇතුලත් කරගන්න)
# නම,වයස,නගරය
# කමල්,28,ගම්පහ
# සුනිල්,34,මාතර
# චමිලා,22,අනුරාධපුරය

# try:
#     df_csv = pd.read_csv('sample_data.csv')
#     print("\nCSV File එකෙන් Read කළ DataFrame:\n", df_csv)
# except FileNotFoundError:
#     print("\n'sample_data.csv' ගොනුව සොයාගත නොහැක. එය ඔබගේ Python Script එක ඇති තැනම සාදන්න.")

මේ උදාහරණ වලින් ඔයාට පේනවා ඇති Pandas කොච්චර ප්‍රයෝජනවත්ද කියලා Data Cleaning, Data Transformation වගේ දේවල් වලට. Real-world Data Science Projects වලදී මේවා නැතුව වැඩක් කරගන්න බෑ. දත්ත කියවන එක (reading data), දත්ත සමඟ වැඩ කරන එක (manipulating data), නැතිවූ දත්ත (missing data) හසුරුවන එක වගේ ගොඩක් දේවල් Pandas වලින් පහසුවෙන් කරන්න පුළුවන්.

Matplotlib සහ Seaborn - දත්ත දෘශ්‍යකරණය (Data Visualization)

අපි Data Analysis කරාට මදි, ඒ දත්ත වල තියෙන Patterns (රටා) සහ Insights (තොරතුරු) අනිත් අයට තේරුම් ගන්න පුළුවන් විදියට පෙන්නන්න ඕනේ. මෙතනදී තමයි Data Visualization කියන දේ අපිට ගොඩක් වැදගත් වෙන්නේ. Graphs, Charts, Plots හරහා සංකීර්ණ දත්ත සරලව තේරුම් ගන්න පුළුවන්. දත්ත වල සැඟවුණු සම්බන්ධතා (relationships) සහ ප්‍රවණතා (trends) හඳුනාගන්න Visualization අතිශයින්ම වැදගත්.

Matplotlib: මූලික Plotting Library එක

Python වල තිබෙන foundational plotting library එක තමයි Matplotlib. මේකෙන් Line plots, Bar plots, Scatter plots, Histograms වගේ ගොඩක් දේවල් හදන්න පුළුවන්. මේක ටිකක් low-level Library එකක් වුණත්, අපිට අවශ්‍ය විදියට Graphs customize කරන්න විශාල හැකියාවක් තියෙනවා. ලස්සන, තේරුම් ගැනීමට පහසු Graphs හදන්න Matplotlib අත්‍යවශ්‍යයි.

ප්‍රායෝගික උදාහරණය: Matplotlib සමඟ Plots

import matplotlib.pyplot as plt
import numpy as np

# සරල Line Plot එකක්
x = np.array([1, 2, 3, 4, 5])
y = x**2 # x හි වර්ගය
plt.plot(x, y)
plt.title("සරල Line Plot එකක්")
plt.xlabel("X අගයන්")
plt.ylabel("Y අගයන් (X^2)")
plt.grid(True) # Grid එකක් එකතු කිරීම
plt.show()

# Bar Plot එකක්
categories = ['පලතුරු', 'එළවලු', 'ධාන්‍ය', 'මාළු']
values = [40, 70, 20, 55]
plt.figure(figsize=(8, 5)) # Plot එකේ ප්‍රමාණය සකස් කිරීම
plt.bar(categories, values, color=['skyblue', 'lightgreen', 'salmon', 'lightcoral'])
plt.title("ආහාර වර්ගීකරණ අගයන්")
plt.xlabel("වර්ගය")
plt.ylabel("අගය")
plt.show()

Seaborn: ආකර්ශණීය සංඛ්‍යානමය Plots සඳහා

Seaborn කියන්නේ Matplotlib මත හදපු Library එකක්. මේක Matplotlib වලට වඩා ලස්සන, වැඩි පහසුකම් තියෙන Graphs හදන්න පුදුම විදියට උදව් කරනවා. විශේෂයෙන්ම Statistical Plots (සංඛ්‍යානමය Plots) හදන්න මේක හරිම පහසුයි. Matplotlib වලට වඩා අඩු code ප්‍රමාණයකින් ආකර්ශණීය Graphs හදන්න Seaborn අපිට හැකියාව දෙනවා. Complex Plots හදන්න Seaborn හොඳම තේරීමක්.

ප්‍රායෝගික උදාහරණය: Seaborn සමඟ Plots

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Sample Data එකක් හදමු
data_sns = {
    'වයස': np.random.randint(18, 60, 100),
    'ආදායම': np.random.randint(50000, 250000, 100),
    'ප්‍රදේශය': np.random.choice(['නගරය', 'ගම්බද'], 100)
}
df_sns = pd.DataFrame(data_sns)

plt.figure(figsize=(10, 6))
# Seaborn භාවිතයෙන් Scatter Plot එකක්
sns.scatterplot(x='වයස', y='ආදායම', hue='ප්‍රදේශය', data=df_sns, palette='viridis', s=100)
plt.title("වයස සහ ආදායම අතර සම්බන්ධය (ප්‍රදේශය අනුව)")
plt.xlabel("වයස (අවුරුදු)")
plt.ylabel("ආදායම (රු.)")
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()

plt.figure(figsize=(10, 6))
# Histogram එකක් (දත්ත බෙදී ඇති ආකාරය බලන්න)
sns.histplot(df_sns['ආදායම'], kde=True, bins=15, color='purple')
plt.title("ආදායම් බෙදී ඇති ආකාරය")
plt.xlabel("ආදායම")
plt.ylabel("ගණන")
plt.show()

plt.figure(figsize=(8, 5))
# Box Plot එකක් (දත්ත වල මධ්‍යනය, ප්‍රසරණය බලන්න)
sns.boxplot(x='ප්‍රදේශය', y='ආදායම', data=df_sns, palette='coolwarm')
plt.title("ප්‍රදේශය අනුව ආදායම් බෙදී ඇති ආකාරය")
plt.xlabel("ප්‍රදේශය")
plt.ylabel("ආදායම")
plt.show()

මේ උදාහරණ වලින් ඔයාට පේනවා ඇති Matplotlib සහ Seaborn කොච්චර බලගතුද කියලා දත්ත දෘශ්‍යකරණයට. මේවා භාවිතයෙන් ඔයාගේ දත්ත කතාවක් කියන විදියට, අලංකාරවත්ව ඉදිරිපත් කරන්න පුළුවන්. Data Scientist කෙනෙක්ට මේ Visualization Skills අත්‍යවශ්‍යයි.

අවසන් වශයෙන්...

ඉතින් ඔන්න අපි Python Data Science වලට අත්‍යවශ්‍යම Libraries තුනක් වන NumPy, Pandas, Matplotlib, සහ Seaborn ගැන වැදගත් දේවල් ටිකක් ඉගෙන ගත්තා. මේවා තමයි Data Science වලට අඩිතාලම. මේවා භාවිත කරලා ඔබට ඕනෑම දත්ත කට්ටලයක් විශ්ලේෂණය කරලා, එහි තියෙන රටා (patterns) සහ තොරතුරු (insights) හඳුනාගන්න පුළුවන්. ඒ වගේම ඒ තොරතුරු ආකර්ශණීය විදියට අන් අයට ඉදිරිපත් කරන්නත් පුළුවන්.

Data Science කියන්නේ හරිම පුළුල් ක්ෂේත්‍රයක්. මේක එහි තියෙන පොඩි කොටසක් විතරයි. මේ දේවල් හොඳට ප්‍රගුණ කළොත් ඔයාට Machine Learning, Deep Learning, AI වගේ දේවල් වලට පහසුවෙන් යොමු වෙන්න පුළුවන්. මොකද මේවායේදීත් මේ මූලික Libraries භාවිත වෙනවා.

දැන් ඔයාගේම Project එකක් පටන් අරන්, මේ Libraries ටික භාවිත කරලා බලන්න. උදාහරණයක් විදියට, Kaggle වගේ තැනකින් Dataset එකක් අරන් Analysis කරන්න උත්සහ කරන්න. අත්දැකීම් ලබන තරමට ඔයා දක්ෂ වෙයි. මතක තියාගන්න, Practice makes perfect!

මොනවා හරි ප්‍රශ්න තිබුණොත්, අනිවාර්යයෙන්ම පහළින් Comment කරන්න. ඔයාගේ අදහස් දැනගන්න අපි ආසයි! මේ Tutorial එකෙන් ඔයාට වැදගත් දෙයක් ලැබුණා නම්, යාළුවෝ එක්කත් Share කරන්න අමතක කරන්න එපා. අලුත් දේවල් ඉගෙන ගන්න හැමෝටම ජයවේවා!