في عصر البيانات الضخمة والتحليلات المتقدمة، أصبح تحليل البيانات جزءًا لا غنى عنه في اتخاذ القرارات الذكية وتحقيق النجاح في مختلف المجالات. مكتبة Pandas في Python تعد واحدة من أقوى الأدوات التي يستخدمها المحللون وعلماء البيانات لتحليل، تنظيف، وتلاعب البيانات بكفاءة عالية. توفر Pandas هيكلين رئيسيين: DataFrame و Series، اللذان يسهلان العمل مع البيانات المعقدة بكميات ضخمة، مما يجعلها الخيار المثالي لتحليل البيانات في Python. من خلال هذه المقالة، سنتعرف على كيفية استخدام Pandas لتحليل البيانات بشكل فعال، بدءًا من قراءة البيانات من ملفات متنوعة، وصولًا إلى العمليات الحسابية والإحصائية المتقدمة، مع تسليط الضوء على كيفية التكامل مع مكتبات أخرى مثل NumPy و Matplotlib.
سنقوم أيضًا باستكشاف كيفية التلاعب بالبيانات، التعامل مع القيم المفقودة، و التصور البياني باستخدام Pandas، بالإضافة إلى توضيح التطبيقات العملية التي يمكن أن تستفيد من هذه المكتبة في المجالات المختلفة مثل تحليل البيانات المالية، تحليلات الأعمال، و البيانات العلمية. إذا كنت ترغب في استكشاف إمكانيات Pandas وكيفية استخدامها في مشاريعك الخاصة، فأنت في المكان الصحيح!
ابقَ معنا لتتعلم كيفية الاستفادة من هذه المكتبة القوية لتحقيق أقصى استفادة من بياناتك!
التركيب الأساسي لـ Pandas
DataFrame: هيكل البيانات الرئيسي في Pandas
يعد الـ DataFrame هو هيكل البيانات الأكثر استخدامًا في مكتبة Pandas. يمكن تخيله على أنه جدول ثنائي الأبعاد يحتوي على صفوف وأعمدة، حيث يمثل كل عمود نوعًا معينًا من البيانات (مثل الأرقام أو النصوص أو القيم الزمنية). يُعد DataFrame من أكثر الهياكل مرونة في التعامل مع البيانات لأنه يدعم مجموعة واسعة من العمليات مثل الفلترة، التعديل، الدمج، والتصفية.
تتكون الـ DataFrame من:
- الصفوف (Rows): تمثل سجلات البيانات.
- الأعمدة (Columns): تمثل خصائص أو سمات البيانات.
يمكنك إنشاء DataFrame باستخدام العديد من المصادر مثل القوائم (Lists)، القواميس (Dictionaries)، أو ملفات مثل CSV و Excel.
كيف يتم إنشاء DataFrame
إنشاء DataFrame في Pandas يمكن أن يتم بسهولة باستخدام وظيفة pd.DataFrame()
. إليك بعض الأمثلة على كيفية إنشائه:
-
إنشاء DataFrame من قاموس (Dictionary):
import pandas as pd data = { 'اسم': ['أحمد', 'سارة', 'محمد', 'ليلى'], 'عمر': [25, 28, 22, 30], 'مدينة': ['القاهرة', 'الإسكندرية', 'طنطا', 'الجونة'] } df = pd.DataFrame(data) print(df)
النتيجة:
اسم عمر مدينة 0 أحمد 25 القاهرة 1 سارة 28 الإسكندرية 2 محمد 22 طنطا 3 ليلى 30 الجونة
-
إنشاء DataFrame من قائمة (List):
data = [['أحمد', 25, 'القاهرة'], ['سارة', 28, 'الإسكندرية'], ['محمد', 22, 'طنطا'], ['ليلى', 30, 'الجونة']] columns = ['اسم', 'عمر', 'مدينة'] df = pd.DataFrame(data, columns=columns) print(df)
النتيجة:
اسم عمر مدينة 0 أحمد 25 القاهرة 1 سارة 28 الإسكندرية 2 محمد 22 طنطا 3 ليلى 30 الجونة
التلاعب بالبيانات داخل DataFrame
يمكنك بسهولة التلاعب بالبيانات داخل DataFrame عن طريق إضافة الأعمدة أو الصفوف، حذفها، أو تعديل قيمها. هنا بعض العمليات الشائعة للتلاعب بالبيانات:
-
إضافة عمود جديد:
يمكنك إضافة عمود جديد إلى DataFrame باستخدام عملية التعيين مثل هذه:
df['الراتب'] = [5000, 6000, 4500, 7000] print(df)
النتيجة:
اسم عمر مدينة الراتب 0 أحمد 25 القاهرة 5000 1 سارة 28 الإسكندرية 6000 2 محمد 22 طنطا 4500 3 ليلى 30 الجونة 7000
-
حذف عمود:
يمكنك حذف عمود باستخدام
drop()
مع تعيينaxis=1
للإشارة إلى حذف الأعمدة وليس الصفوف:df = df.drop('الراتب', axis=1) print(df)
النتيجة:
اسم عمر مدينة 0 أحمد 25 القاهرة 1 سارة 28 الإسكندرية 2 محمد 22 طنطا 3 ليلى 30 الجونة
-
إضافة صف جديد:
لإضافة صف جديد، يمكنك استخدام
loc
أوappend()
:new_row = pd.Series(['عادل', 32, 'شرم الشيخ'], index=df.columns) df = df.append(new_row, ignore_index=True) print(df)
النتيجة:
اسم عمر مدينة 0 أحمد 25 القاهرة 1 سارة 28 الإسكندرية 2 محمد 22 طنطا 3 ليلى 30 الجونة 4 عادل 32 شرم الشيخ
-
حذف صف:
يمكنك حذف صف باستخدام
drop()
مع تعيينaxis=0
للإشارة إلى حذف الصفوف:df = df.drop(0, axis=0) # حذف الصف الأول print(df)
النتيجة:
اسم عمر مدينة 0 سارة 28 الإسكندرية 1 محمد 22 طنطا 2 ليلى 30 الجونة 3 عادل 32 شرم الشيخ
-
تعديل قيمة في DataFrame:
لتعديل قيمة معينة في DataFrame، يمكنك استخدام
loc
أوiloc
للوصول إلى الصفوف والأعمدة:df.loc[0, 'عمر'] = 29 # تعديل عمر سارة print(df)
النتيجة:
اسم عمر مدينة 0 سارة 29 الإسكندرية 1 محمد 22 طنطا 2 ليلى 30 الجونة 3 عادل 32 شرم الشيخ
بهذه الطرق، يمكنك التلاعب بالبيانات داخل DataFrame بطريقة مرنة وسهلة، مما يسهل عليك تحليل وتنظيم البيانات بسرعة وفعالية.
قراءة البيانات باستخدام Pandas
مكتبة Pandas توفر العديد من الوظائف لقراءة البيانات من أنواع متعددة من الملفات والمصادر. فيما يلي شرح لكيفية قراءة البيانات من بعض الملفات الأكثر شيوعًا مثل CSV، Excel، SQL، و JSON، بالإضافة إلى كيفية تحويل البيانات إلى DataFrame بعد القراءة.
1. قراءة البيانات من ملف CSV
أحد أشهر أنواع الملفات المستخدمة في تخزين البيانات هو CSV (Comma Separated Values). يمكن قراءة هذه الملفات بسهولة باستخدام دالة read_csv()
من Pandas.
مثال:
import pandas as pd
# قراءة البيانات من ملف CSV
df_csv = pd.read_csv('path/to/your/file.csv')
# عرض أول 5 صفوف من DataFrame
print(df_csv.head())
يمكنك تحديد العديد من المعاملات الاختيارية، مثل:
sep
: لتحديد الفاصل بين القيم (على سبيل المثال، الفاصلة أو الفاصلة المنقوطة).header
: لتحديد إذا ما كان الملف يحتوي على رؤوس للأعمدة.index_col
: لتحديد العمود الذي سيكون بمثابة الفهرس.
2. قراءة البيانات من ملف Excel
يمكنك قراءة البيانات من ملفات Excel باستخدام دالة read_excel()
. هذه الدالة تدعم أيضًا قراءة ملفات Excel متعددة الأوراق (Sheets).
مثال:
# قراءة البيانات من ملف Excel
df_excel = pd.read_excel('path/to/your/file.xlsx', sheet_name='Sheet1')
# عرض أول 5 صفوف
print(df_excel.head())
sheet_name
: يمكنك تحديد اسم الورقة (Sheet) التي تريد قراءتها أو يمكن تركها لقراءة أول ورقة.usecols
: لتحديد الأعمدة التي تريد قراءتها فقط.skiprows
: لتخطي بعض الصفوف في البداية.
3. قراءة البيانات من قاعدة بيانات SQL
يمكنك قراءة البيانات مباشرة من قاعدة بيانات SQL باستخدام Pandas و read_sql()
إذا كان لديك اتصال بقاعدة البيانات. تحتاج إلى استخدام مكتبة مثل sqlite3
أو SQLAlchemy
لإنشاء الاتصال.
مثال باستخدام SQLite:
import sqlite3
import pandas as pd
# إنشاء اتصال بقاعدة البيانات
conn = sqlite3.connect('path/to/your/database.db')
# قراءة البيانات من استعلام SQL
query = "SELECT * FROM table_name"
df_sql = pd.read_sql(query, conn)
# عرض أول 5 صفوف
print(df_sql.head())
# إغلاق الاتصال
conn.close()
4. قراءة البيانات من ملف JSON
قراءة البيانات من JSON تعتبر مفيدة عند التعامل مع البيانات التي تكون بتنسيق JSON. يمكنك استخدام دالة read_json()
لهذا الغرض.
مثال:
# قراءة البيانات من ملف JSON
df_json = pd.read_json('path/to/your/file.json')
# عرض أول 5 صفوف
print(df_json.head())
تحويل البيانات إلى DataFrame بعد القراءة
عند قراءة البيانات من أي من هذه الملفات، يتم تحويلها تلقائيًا إلى DataFrame، وهو الشكل الذي يعمل به Pandas لمعالجة البيانات. بعد تحويل البيانات إلى DataFrame، يمكنك البدء في التلاعب بالبيانات، مثل الفلترة، التعديل، التحليل، وغيرها من العمليات التي توفرها مكتبة Pandas.
إذا كنت تقرأ البيانات من مصدر آخر وتريد تحويلها إلى DataFrame، يمكنك أيضًا إنشاء DataFrame يدويًا باستخدام pd.DataFrame()
.
مثال على تحويل قائمة إلى DataFrame:
data = [['أحمد', 25, 'القاهرة'], ['سارة', 28, 'الإسكندرية']]
columns = ['اسم', 'عمر', 'مدينة']
df = pd.DataFrame(data, columns=columns)
print(df)
النتيجة:
اسم عمر مدينة
0 أحمد 25 القاهرة
1 سارة 28 الإسكندرية
باستخدام هذه الوظائف، يمكنك بسهولة قراءة البيانات من مصادر متعددة وتحويلها إلى DataFrame، مما يسهل التعامل مع البيانات وتحليلها باستخدام Pandas.
التلاعب بالبيانات في Pandas
تعد مكتبة Pandas من أقوى الأدوات في بايثون للتلاعب بالبيانات. يمكن للمستخدمين القيام بعدد كبير من العمليات مثل التصفية، التعديل، الدمج، الترتيب، وإعادة تشكيل البيانات بسهولة ومرونة. إليك كيفية إجراء بعض من هذه العمليات الشائعة:
1. التصفية (Filtering)
يمكنك تصفية البيانات في DataFrame باستخدام شروط معينة على الأعمدة. هذه العملية تُسهل الوصول إلى البيانات التي تهمك فقط.
مثال على تصفية البيانات باستخدام شرط معين:
import pandas as pd
# إنشاء DataFrame
data = {'اسم': ['أحمد', 'سارة', 'محمد', 'ليلى'],
'عمر': [25, 28, 22, 30],
'مدينة': ['القاهرة', 'الإسكندرية', 'طنطا', 'الجونة']}
df = pd.DataFrame(data)
# تصفية البيانات حيث العمر أكبر من 25
filtered_df = df[df['عمر'] > 25]
print(filtered_df)
النتيجة:
اسم عمر مدينة
1 سارة 28 الإسكندرية
3 ليلى 30 الجونة
يمكنك أيضًا استخدام شروط مركبة مثل &
(AND) و |
(OR) لتصفية البيانات:
# تصفية البيانات حيث العمر أكبر من 25 و المدينة هي "الإسكندرية"
filtered_df = df[(df['عمر'] > 25) & (df['مدينة'] == 'الإسكندرية')]
print(filtered_df)
2. التعديل (Modification)
بمجرد تصفية البيانات، قد ترغب في تعديل القيم في DataFrame أو Series. إليك كيفية القيام بذلك:
- تعديل القيم في عمود معين:
df['عمر'] = df['عمر'] + 1 # زيادة العمر بمقدار 1
print(df)
النتيجة:
اسم عمر مدينة
0 أحمد 26 القاهرة
1 سارة 29 الإسكندرية
2 محمد 23 طنطا
3 ليلى 31 الجونة
- تعديل قيمة معينة في صف وعمود معين:
df.loc[0, 'مدينة'] = 'المنصورة' # تعديل مدينة أحمد
print(df)
النتيجة:
اسم عمر مدينة
0 أحمد 26 المنصورة
1 سارة 29 الإسكندرية
2 محمد 23 طنطا
3 ليلى 31 الجونة
3. الدمج (Merging) والانضمام (Joining)
يمكنك دمج أو الانضمام بين أكثر من DataFrame باستخدام وظائف merge()
أو join()
.
- دمج DataFrames باستخدام
merge()
:
يتم دمج البيانات بناءً على قيم مشتركة بين الأعمدة.
مثال:
df1 = pd.DataFrame({'id': [1, 2, 3], 'اسم': ['أحمد', 'سارة', 'محمد']})
df2 = pd.DataFrame({'id': [1, 2, 4], 'مدينة': ['القاهرة', 'الإسكندرية', 'طنطا']})
# دمج DataFrames بناءً على العمود 'id'
merged_df = pd.merge(df1, df2, on='id', how='inner')
print(merged_df)
النتيجة:
id اسم مدينة
0 1 أحمد القاهرة
1 2 سارة الإسكندرية
يمكنك تحديد نوع الدمج باستخدام المعامل how
الذي يمكن أن يكون أحد الخيارات التالية:
-
inner
: دمج البيانات المتطابقة فقط. -
left
: دمج بيانات DataFrame الأول مع المطابقات في الثاني. -
right
: دمج بيانات DataFrame الثاني مع المطابقات في الأول. -
outer
: دمج كافة البيانات من كلا DataFrame. -
الانضمام باستخدام
join()
:
df1 = pd.DataFrame({'id': [1, 2, 3], 'اسم': ['أحمد', 'سارة', 'محمد']})
df2 = pd.DataFrame({'مدينة': ['القاهرة', 'الإسكندرية', 'طنطا']}, index=[1, 2, 3])
# الانضمام باستخدام الفهرس
joined_df = df1.join(df2)
print(joined_df)
النتيجة:
id اسم مدينة
1 1 أحمد القاهرة
2 2 سارة الإسكندرية
3 3 محمد طنطا
4. إعادة ترتيب البيانات (Sorting)
يمكنك إعادة ترتيب البيانات باستخدام sort_values()
لترتيب DataFrame بناءً على قيم الأعمدة.
مثال:
# ترتيب البيانات حسب العمر تصاعديًا
sorted_df = df.sort_values(by='عمر')
print(sorted_df)
النتيجة:
اسم عمر مدينة
2 محمد 23 طنطا
0 أحمد 26 القاهرة
1 سارة 29 الإسكندرية
3 ليلى 31 الجونة
- ترتيب البيانات بناءً على أكثر من عمود:
# ترتيب البيانات أولاً حسب العمر ثم حسب الاسم
sorted_df = df.sort_values(by=['عمر', 'اسم'])
print(sorted_df)
5. إعادة تشكيل البيانات (Reshaping)
تتيح لك Pandas أيضًا إعادة تشكيل البيانات باستخدام عمليات مثل pivot
و melt
.
- استخدام
pivot()
:
تُستخدم عملية pivot()
لإعادة تشكيل البيانات بحيث تصبح القيم في عمود معين كعناوين لأعمدة جديدة.
مثال:
data = {'تاريخ': ['2024-01-01', '2024-01-01', '2024-01-02'],
'منتج': ['A', 'B', 'A'],
'مبيعات': [10, 20, 15]}
df = pd.DataFrame(data)
# استخدام pivot لتحويل بيانات "منتج" إلى أعمدة جديدة
pivot_df = df.pivot(index='تاريخ', columns='منتج', values='مبيعات')
print(pivot_df)
النتيجة:
منتج A B
تاريخ
2024-01-01 10 20
2024-01-02 15 NaN
- استخدام
melt()
:
تُستخدم عملية melt()
لتحويل الأعمدة إلى صفوف، مما يسهل التعامل مع البيانات عند الحاجة إلى تنسيق طويل.
مثال:
melted_df = df.melt(id_vars=['تاريخ'], value_vars=['منتج', 'مبيعات'])
print(melted_df)
النتيجة:
تاريخ variable value
0 2024-01-01 منتج A
1 2024-01-01 منتج B
2 2024-01-02 منتج A
3 2024-01-01 مبيعات 10
4 2024-01-01 مبيعات 20
5 2024-01-02 مبيعات 15
العمليات الحسابية والإحصائية في Pandas
توفر مكتبة Pandas مجموعة واسعة من الوظائف لإجراء العمليات الحسابية والإحصائية على البيانات. سواء كنت تعمل مع DataFrame أو Series، يمكنك إجراء عمليات مثل الجمع، حساب المتوسطات، والانحراف المعياري، بالإضافة إلى التعامل مع القيم المفقودة (NaN). إليك كيفية إجراء بعض من هذه العمليات:
1. العمليات الحسابية الأساسية
تتيح لك Pandas إجراء عمليات حسابية بسيطة مثل الجمع، المتوسط، والـ المدى بسهولة.
- الجمع (Sum): يمكنك جمع القيم في DataFrame أو Series باستخدام دالة
sum()
.
مثال:
import pandas as pd
# إنشاء DataFrame
data = {'عمر': [25, 30, 22, 28],
'راتب': [5000, 6000, 4000, 5500]}
df = pd.DataFrame(data)
# جمع القيم في عمود "عمر"
sum_age = df['عمر'].sum()
print(f"مجموع الأعمار: {sum_age}")
# جمع القيم في جميع الأعمدة
sum_all = df.sum()
print(f"مجموع القيم في الأعمدة:\n{sum_all}")
النتيجة:
مجموع الأعمار: 105
مجموع القيم في الأعمدة:
عمر 105
راتب 20500
dtype: int64
- المتوسط (Mean): لحساب المتوسط في عمود أو مجموعة من الأعمدة، يمكن استخدام دالة
mean()
.
مثال:
# حساب المتوسط في عمود "عمر"
mean_age = df['عمر'].mean()
print(f"متوسط الأعمار: {mean_age}")
النتيجة:
متوسط الأعمار: 26.25
- المدى (Range): يمكنك حساب المدى (الفرق بين القيمة القصوى والقيمة الدنيا) باستخدام دوال
max()
وmin()
.
مثال:
# حساب المدى في عمود "عمر"
age_range = df['عمر'].max() - df['عمر'].min()
print(f"مدى الأعمار: {age_range}")
النتيجة:
مدى الأعمار: 8
2. دوال إحصائية
توفر Pandas العديد من الدوال الإحصائية التي يمكن استخدامها لتحليل البيانات.
-
المتوسطات (Averages): كما تم ذكره سابقًا، يمكنك حساب المتوسط باستخدام
mean()
. -
الانحراف المعياري (Standard Deviation): لحساب الانحراف المعياري، يمكنك استخدام دالة
std()
.
مثال:
# حساب الانحراف المعياري في عمود "عمر"
std_age = df['عمر'].std()
print(f"الانحراف المعياري للأعمار: {std_age}")
النتيجة:
الانحراف المعياري للأعمار: 3.109126003332485
- القيم القصوى والدنيا (Max and Min): يمكنك حساب القيم القصوى والدنيا باستخدام
max()
وmin()
.
مثال:
# حساب القيمة القصوى والدنيا في عمود "راتب"
max_salary = df['راتب'].max()
min_salary = df['راتب'].min()
print(f"أعلى راتب: {max_salary}")
print(f"أدنى راتب: {min_salary}")
النتيجة:
أعلى راتب: 6000
أدنى راتب: 4000
- الوسيط (Median): لحساب الوسيط (القيمة التي تقسم البيانات إلى نصفين)، يمكنك استخدام دالة
median()
.
مثال:
# حساب الوسيط في عمود "راتب"
median_salary = df['راتب'].median()
print(f"الوسيط للراتب: {median_salary}")
النتيجة:
الوسيط للراتب: 5250.0
3. التعامل مع القيم المفقودة (NaN)
القيم المفقودة أو NaN هي قيم غير معروفة أو مفقودة في البيانات، وتتعامل معها Pandas بشكل فعال باستخدام بعض الدوال المهمة.
- التأكد من وجود القيم المفقودة (NaN): يمكنك استخدام دالة
isna()
أوisnull()
للتحقق من القيم المفقودة في DataFrame أو Series.
مثال:
# إدخال بعض القيم المفقودة في البيانات
df['راتب'][1] = None # تعيين القيمة المفقودة في الصف الثاني
# التحقق من القيم المفقودة
print(df.isna())
النتيجة:
عمر راتب
0 False False
1 False True
2 False False
3 False False
- إزالة القيم المفقودة: يمكنك إزالة الصفوف أو الأعمدة التي تحتوي على قيم مفقودة باستخدام
dropna()
.
مثال:
# إزالة الصفوف التي تحتوي على قيم مفقودة
df_cleaned = df.dropna()
print(df_cleaned)
النتيجة:
عمر راتب
0 25.0 5000.0
2 22.0 4000.0
3 28.0 5500.0
- ملء القيم المفقودة: يمكنك ملء القيم المفقودة باستخدام
fillna()
.
مثال:
# ملء القيم المفقودة بقيمة معينة
df_filled = df.fillna(0)
print(df_filled)
النتيجة:
عمر راتب
0 25.0 5000.0
1 30.0 0.0
2 22.0 4000.0
3 28.0 5500.0
التعامل مع البيانات الزمنية في Pandas
يُعد التعامل مع البيانات الزمنية جزءًا أساسيًا من تحليل البيانات في العديد من المجالات مثل الأعمال والتجارة، والتحليل المالي، والطقس، والعديد من التطبيقات الأخرى. يوفر Pandas أدوات قوية للتعامل مع هذه البيانات وتنسيقها وتحليلها. إليك كيفية التعامل مع البيانات الزمنية باستخدام Pandas:
1. تحويل البيانات الزمنية إلى تنسيقات مختلفة
Pandas يتيح لك تحويل البيانات الزمنية إلى تنسيقات مختلفة باستخدام to_datetime()
و pd.to_datetime()
. يمكنك تحويل الأعمدة التي تحتوي على تواريخ وأوقات من أنواع بيانات مثل السلاسل النصية (Strings) أو الأعداد إلى كائنات datetime.
مثال:
import pandas as pd
# تحويل سلسلة نصية إلى تاريخ
date_str = '2024-12-23'
date_obj = pd.to_datetime(date_str)
print(f"التاريخ المحول: {date_obj}")
النتيجة:
التاريخ المحول: 2024-12-23 00:00:00
- تحويل عمود يحتوي على تواريخ في DataFrame:
# إنشاء DataFrame يحتوي على تواريخ كسلاسل نصية
data = {'تاريخ': ['2024-01-01', '2024-02-01', '2024-03-01']}
df = pd.DataFrame(data)
# تحويل عمود التاريخ إلى تنسيق datetime
df['تاريخ'] = pd.to_datetime(df['تاريخ'])
print(df)
النتيجة:
تاريخ
0 2024-01-01
1 2024-02-01
2 2024-03-01
2. استخراج الخصائص الزمنية (اليوم، الشهر، السنة)
بعد تحويل البيانات الزمنية إلى كائنات datetime، يمكنك استخراج خصائص مختلفة للتواريخ مثل اليوم، الشهر، السنة، والوقت، باستخدام خصائص dt الخاصة بـ Pandas.
- استخراج اليوم (Day):
# استخراج اليوم من عمود التاريخ
df['يوم'] = df['تاريخ'].dt.day
print(df)
النتيجة:
تاريخ يوم
0 2024-01-01 1
1 2024-02-01 1
2 2024-03-01 1
- استخراج الشهر (Month):
# استخراج الشهر من عمود التاريخ
df['شهر'] = df['تاريخ'].dt.month
print(df)
النتيجة:
تاريخ يوم شهر
0 2024-01-01 1 1
1 2024-02-01 1 2
2 2024-03-01 1 3
- استخراج السنة (Year):
# استخراج السنة من عمود التاريخ
df['سنة'] = df['تاريخ'].dt.year
print(df)
النتيجة:
تاريخ يوم شهر سنة
0 2024-01-01 1 1 2024
1 2024-02-01 1 2 2024
2 2024-03-01 1 3 2024
- استخراج اليوم في الأسبوع (Weekday):
# استخراج اليوم في الأسبوع (0: الإثنين، 6: الأحد)
df['يوم_في_الأسبوع'] = df['تاريخ'].dt.weekday
print(df)
النتيجة:
تاريخ يوم شهر سنة يوم_في_الأسبوع
0 2024-01-01 1 1 2024 0
1 2024-02-01 1 2 2024 4
2 2024-03-01 1 3 2024 4
- استخراج الساعة (Hour) و الدقيقة (Minute) و الثانية (Second):
إذا كانت البيانات الزمنية تحتوي على وقت أيضًا، يمكنك استخراج هذه القيم.
مثال:
# إنشاء بيانات مع وقت
data_with_time = {'تاريخ': ['2024-01-01 10:15:30', '2024-02-01 14:45:20']}
df_with_time = pd.DataFrame(data_with_time)
df_with_time['تاريخ'] = pd.to_datetime(df_with_time['تاريخ'])
# استخراج الساعة والدقيقة والثانية
df_with_time['ساعة'] = df_with_time['تاريخ'].dt.hour
df_with_time['دقيقة'] = df_with_time['تاريخ'].dt.minute
df_with_time['ثانية'] = df_with_time['تاريخ'].dt.second
print(df_with_time)
النتيجة:
تاريخ ساعة دقيقة ثانية
0 2024-01-01 10:15:30 10 15 30
1 2024-02-01 14:45:20 14 45 20
3. التعامل مع فترات الزمن (Timedelta)
يمكنك أيضًا التعامل مع فترات الزمن باستخدام Timedelta في Pandas. يسمح لك هذا بحساب الفترات الزمنية بين تواريخ معينة أو إضافة فترات زمنية إلى تواريخ.
مثال:
# حساب الفرق بين تاريخين
date1 = pd.to_datetime('2024-01-01')
date2 = pd.to_datetime('2024-12-23')
delta = date2 - date1
print(f"الفترة الزمنية بين التاريخين: {delta}")
النتيجة:
الفترة الزمنية بين التاريخين: 356 days 00:00:00
- إضافة فترات زمنية إلى التاريخ:
# إضافة 10 أيام إلى تاريخ معين
new_date = date1 + pd.Timedelta(days=10)
print(f"التاريخ بعد إضافة 10 أيام: {new_date}")
النتيجة:
التاريخ بعد إضافة 10 أيام: 2024-01-11 00:00:00
4. إعادة التسمية والتعيين للفترات الزمنية
إذا كنت تعمل مع فترات زمنية مثل شهور أو سنوات، يمكنك استخدام pd.date_range()
لإنشاء مجموعة من التواريخ بين تاريخين محددين.
مثال:
# إنشاء تواريخ يومية بين تاريخين
date_range = pd.date_range(start='2024-01-01', end='2024-01-10', freq='D')
print(date_range)
النتيجة:
DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
'2024-01-05', '2024-01-06', '2024-01-07', '2024-01-08',
'2024-01-09', '2024-01-10'],
dtype='datetime64[ns]', freq='D')
التعامل مع القيم المفقودة في Pandas
القيم المفقودة (NaN) هي جزء شائع في أي مجموعة بيانات، وتظهر عندما تكون هناك بيانات مفقودة أو غير معروفة. Pandas يوفر مجموعة من الأدوات لاكتشاف القيم المفقودة والتعامل معها بطرق مختلفة مثل الإزالة أو الاستبدال أو التعبئة.
1. اكتشاف القيم المفقودة
لتحديد القيم المفقودة في DataFrame أو Series، يمكن استخدام دوال Pandas مثل isna()
و isnull()
.
isna()
: تُرجع True في الخلايا التي تحتوي على قيم مفقودة (NaN).isnull()
: هي دالة مكافئة لـisna()
.
مثال على اكتشاف القيم المفقودة:
import pandas as pd
# إنشاء DataFrame يحتوي على بعض القيم المفقودة
data = {'اسم': ['علي', 'سارة', 'محمد', None],
'عمر': [25, None, 22, 28],
'راتب': [5000, 6000, None, 5500]}
df = pd.DataFrame(data)
# اكتشاف القيم المفقودة
print(df.isna())
النتيجة:
اسم عمر راتب
0 False False False
1 False True False
2 False False True
3 True False False
2. كيفية التعامل مع القيم المفقودة
يمكنك التعامل مع القيم المفقودة بطرق مختلفة، حسب متطلبات التحليل الخاص بك.
إزالة القيم المفقودة
- إزالة الصفوف التي تحتوي على قيم مفقودة: يمكنك استخدام
dropna()
لإزالة أي صف يحتوي على قيم مفقودة.
مثال:
# إزالة الصفوف التي تحتوي على قيم مفقودة
df_cleaned = df.dropna()
print(df_cleaned)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
- إزالة الأعمدة التي تحتوي على قيم مفقودة: إذا كنت ترغب في إزالة الأعمدة بدلاً من الصفوف، يمكنك استخدام
dropna(axis=1)
.
مثال:
# إزالة الأعمدة التي تحتوي على قيم مفقودة
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
النتيجة:
اسم
0 علي
1 سارة
2 محمد
3 None
استبدال القيم المفقودة
يمكنك استبدال القيم المفقودة بقيمة ثابتة أو قيمة محسوبة باستخدام fillna()
.
- استبدال القيم المفقودة بقيمة ثابتة:
مثال:
# استبدال القيم المفقودة في عمود "عمر" بالقيمة 0
df_filled = df.fillna({'عمر': 0})
print(df_filled)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
1 سارة 0.0 6000.0
2 محمد 22.0 NaN
3 None 28.0 5500.0
- استبدال القيم المفقودة في جميع الأعمدة بنفس القيمة:
مثال:
# استبدال جميع القيم المفقودة في DataFrame بالقيمة 0
df_filled_all = df.fillna(0)
print(df_filled_all)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
1 سارة 0.0 6000.0
2 محمد 22.0 0.0
3 None 28.0 5500.0
تعبئة القيم المفقودة باستخدام قيمة سابقة أو لاحقة
يمكنك استخدام fillna(method='ffill')
(التعبئة بالقيمة السابقة) أو fillna(method='bfill')
(التعبئة بالقيمة التالية) لملء القيم المفقودة بناءً على قيم الصفوف المجاورة.
- التعبئة بالقيمة السابقة (forward fill):
مثال:
# تعبئة القيم المفقودة بالقيمة السابقة في DataFrame
df_filled_ffill = df.fillna(method='ffill')
print(df_filled_ffill)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
1 سارة 25.0 6000.0
2 محمد 22.0 6000.0
3 محمد 28.0 5500.0
- التعبئة بالقيمة التالية (backward fill):
مثال:
# تعبئة القيم المفقودة بالقيمة التالية في DataFrame
df_filled_bfill = df.fillna(method='bfill')
print(df_filled_bfill)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
1 سارة 22.0 6000.0
2 محمد 22.0 5500.0
3 محمد 28.0 5500.0
تعبئة القيم المفقودة باستخدام المتوسط أو الوسيط
يمكنك أيضًا استخدام المتوسط أو الوسيط للتعبئة. على سبيل المثال، لملء القيم المفقودة في عمود ما باستخدام المتوسط:
مثال:
# تعبئة القيم المفقودة في عمود "عمر" باستخدام المتوسط
mean_age = df['عمر'].mean()
df_filled_mean = df['عمر'].fillna(mean_age)
print(df_filled_mean)
النتيجة:
0 25.0
1 25.0
2 22.0
3 28.0
Name: عمر, dtype: float64
3. التعرف على القيم المفقودة عبر مجموعة من الأعمدة
إذا كنت تريد التعامل مع القيم المفقودة عبر مجموعة من الأعمدة، يمكنك استخدام subset
لتحديد الأعمدة المستهدفة.
مثال:
# إزالة الصفوف التي تحتوي على قيم مفقودة في عمودين معينين فقط
df_cleaned_subset = df.dropna(subset=['عمر', 'راتب'])
print(df_cleaned_subset)
النتيجة:
اسم عمر راتب
0 علي 25.0 5000.0
1 سارة 0.0 6000.0
2 محمد 22.0 NaN
الخلاصة
التعامل مع القيم المفقودة في Pandas يعد جزءًا أساسيًا من تنظيف وتحليل البيانات. يوفر Pandas أدوات قوية لاكتشاف القيم المفقودة باستخدام isna()
أو isnull()
، بالإضافة إلى عدة طرق للتعامل معها مثل الإزالة باستخدام dropna()
أو الاستبدال باستخدام fillna()
. يمكنك أيضًا ملء القيم المفقودة بناءً على القيم السابقة أو التالية، أو باستخدام دوال إحصائية مثل المتوسط أو الوسيط.
التخزين والكتابة في Pandas
بعد التلاعب بالبيانات باستخدام Pandas، قد ترغب في حفظ البيانات المعدلة إلى ملفات أو قواعد بيانات مختلفة. Pandas يوفر طرقًا مرنة لتخزين البيانات في مجموعة متنوعة من التنسيقات مثل CSV، Excel، و SQL. فيما يلي كيفية حفظ البيانات المعدلة إلى هذه الملفات:
1. حفظ البيانات إلى ملف CSV
يمكنك حفظ DataFrame إلى ملف CSV باستخدام دالة to_csv()
.
- حفظ البيانات إلى CSV:
import pandas as pd
# إنشاء DataFrame بسيط
data = {'اسم': ['علي', 'سارة', 'محمد'], 'عمر': [25, 30, 22], 'راتب': [5000, 6000, 5500]}
df = pd.DataFrame(data)
# حفظ DataFrame إلى ملف CSV
df.to_csv('data.csv', index=False)
-
الشرح:
index=False
: تعني عدم تضمين فهرس (Index) في ملف CSV.- يمكنك تحديد مسار الملف إذا كنت ترغب في حفظه في مكان معين.
-
قراءة البيانات من ملف CSV:
# قراءة البيانات من ملف CSV
df_read = pd.read_csv('data.csv')
print(df_read)
2. حفظ البيانات إلى ملف Excel
لحفظ DataFrame إلى ملف Excel، يمكنك استخدام to_excel()
.
- حفظ البيانات إلى Excel:
# حفظ DataFrame إلى ملف Excel
df.to_excel('data.xlsx', index=False)
-
الشرح:
index=False
: تعني عدم تضمين فهرس (Index) في ملف Excel.- يمكنك تحديد مسار الملف وحفظه في مجلد معين.
- إذا كان لديك أكثر من ورقة (sheet)، يمكنك تحديد اسم الورقة باستخدام الوسيط
sheet_name
.
-
قراءة البيانات من ملف Excel:
# قراءة البيانات من ملف Excel
df_excel = pd.read_excel('data.xlsx')
print(df_excel)
3. حفظ البيانات إلى قاعدة بيانات SQL
يمكنك حفظ البيانات إلى قاعدة بيانات SQL باستخدام دالة to_sql()
في Pandas. تحتاج إلى تحديد الاتصال بقاعدة البيانات واختيار اسم الجدول الذي سيتم تخزين البيانات فيه.
- حفظ البيانات إلى قاعدة بيانات SQL:
from sqlalchemy import create_engine
# إنشاء الاتصال بقاعدة البيانات (مثال باستخدام SQLite)
engine = create_engine('sqlite:///database.db')
# حفظ DataFrame إلى جدول في قاعدة البيانات
df.to_sql('البيانات', con=engine, index=False, if_exists='replace')
-
الشرح:
con=engine
: الاتصال بقاعدة البيانات باستخدامSQLAlchemy
.if_exists='replace'
: يعني إذا كان الجدول موجودًا بالفعل في قاعدة البيانات، فسيتم استبداله. يمكنك أيضًا استخدامappend
لإضافة البيانات إلى الجدول الحالي دون استبداله.index=False
: تعني عدم تضمين الفهرس في الجدول.
-
قراءة البيانات من قاعدة بيانات SQL:
# قراءة البيانات من قاعدة بيانات SQL
df_sql = pd.read_sql('البيانات', con=engine)
print(df_sql)
4. حفظ البيانات إلى تنسيق JSON
يمكنك حفظ البيانات إلى ملف JSON باستخدام دالة to_json()
.
- حفظ البيانات إلى JSON:
# حفظ DataFrame إلى ملف JSON
df.to_json('data.json', orient='records', lines=True)
-
الشرح:
orient='records'
: تنسيق البيانات بحيث يتم تخزين كل سجل (Row) ككائن منفصل.lines=True
: يسمح بتخزين البيانات كسجلات منفصلة (مفيدة عند التعامل مع ملفات JSON الكبيرة).
-
قراءة البيانات من ملف JSON:
# قراءة البيانات من ملف JSON
df_json = pd.read_json('data.json', orient='records', lines=True)
print(df_json)
5. حفظ البيانات إلى تنسيق Parquet
يمكنك أيضًا حفظ البيانات إلى تنسيق Parquet، الذي يعد من التنسيقات المناسبة لتخزين البيانات الكبيرة بفضل ضغطها الفعال وأدائها العالي. يتم استخدام دالة to_parquet()
.
- حفظ البيانات إلى Parquet:
# حفظ DataFrame إلى ملف Parquet
df.to_parquet('data.parquet')
- قراءة البيانات من ملف Parquet:
# قراءة البيانات من ملف Parquet
df_parquet = pd.read_parquet('data.parquet')
print(df_parquet)
6. حفظ البيانات إلى تنسيق HDF5
HDF5 هو تنسيق آخر لحفظ البيانات الكبيرة والهيكلية. يمكن استخدام دالة to_hdf()
لهذا الغرض.
- حفظ البيانات إلى HDF5:
# حفظ DataFrame إلى ملف HDF5
df.to_hdf('data.h5', key='df', mode='w')
- قراءة البيانات من ملف HDF5:
# قراءة البيانات من ملف HDF5
df_hdf5 = pd.read_hdf('data.h5', key='df')
print(df_hdf5)
الوظائف المتقدمة في Pandas
في Pandas، هناك العديد من الوظائف المتقدمة التي تسمح لك بالتحكم الكامل في كيفية التعامل مع البيانات وتحليلها. هذه الوظائف تشمل التجميع (Grouping)، تطبيق الدوال المخصصة (Apply Functions)، والتصفية والتكرار (Filtering and Duplication). فيما يلي شرح لهذه الوظائف:
1. التجميع (Grouping)
التجميع يسمح لك بتقسيم البيانات إلى مجموعات بناءً على معايير معينة، ثم تطبيق عمليات إحصائية أو حسابية على هذه المجموعات. يتم ذلك باستخدام دالة groupby()
في Pandas.
- كيفية التجميع:
import pandas as pd
# إنشاء DataFrame بسيط
data = {'اسم': ['علي', 'سارة', 'محمد', 'علي', 'سارة'],
'مدينة': ['القاهرة', 'الإسكندرية', 'القاهرة', 'الإسكندرية', 'القاهرة'],
'راتب': [5000, 6000, 5500, 7000, 6500]}
df = pd.DataFrame(data)
# تجميع البيانات حسب المدينة
grouped = df.groupby('مدينة')
# حساب المتوسط لكل مجموعة
mean_salary = grouped['راتب'].mean()
print(mean_salary)
النتيجة:
مدينة
الإسكندرية 6500.0
القاهرة 5750.0
Name: راتب, dtype: float64
- الشرح:
- في هذا المثال، تم تجميع البيانات بناءً على عمود "مدينة"، ثم تم حساب المتوسط لكل مجموعة باستخدام
mean()
.
- في هذا المثال، تم تجميع البيانات بناءً على عمود "مدينة"، ثم تم حساب المتوسط لكل مجموعة باستخدام
2. التطبيقات المتقدمة (Apply Functions)
تسمح دالة apply()
بتطبيق دالة مخصصة على البيانات في DataFrame أو Series. يمكنك استخدام هذه الدالة لتنفيذ عمليات معقدة على البيانات.
- كيفية تطبيق دالة مخصصة:
# إنشاء دالة مخصصة لحساب نسبة الزيادة
def salary_increase(x):
return x * 0.10
# تطبيق الدالة على عمود "راتب"
df['زيادة في الراتب'] = df['راتب'].apply(salary_increase)
print(df)
النتيجة:
اسم مدينة راتب زيادة في الراتب
0 علي القاهرة 5000 500.0
1 سارة الإسكندرية 6000 600.0
2 محمد القاهرة 5500 550.0
3 علي الإسكندرية 7000 700.0
4 سارة القاهرة 6500 650.0
-
الشرح:
- تم تطبيق دالة
salary_increase
على عمود "راتب" لحساب زيادة بنسبة 10% لكل راتب.
- تم تطبيق دالة
-
التطبيقات المتقدمة باستخدام
groupby()
: يمكن دمجapply()
معgroupby()
للحصول على نتائج معقدة لكل مجموعة.
# تطبيق دالة مخصصة على البيانات المجمعة
grouped_salary = df.groupby('مدينة')['راتب'].apply(lambda x: x.max() - x.min())
print(grouped_salary)
النتيجة:
مدينة
الإسكندرية 1000
القاهرة 1500
Name: راتب, dtype: int64
3. التصفية والتكرار (Filtering and Duplication)
Pandas يقدم أدوات قوية للتصفية والتعامل مع البيانات المكررة. يمكنك تصفية البيانات بناءً على شروط معينة وإزالة الصفوف المكررة باستخدام دوال مثل duplicated()
و drop_duplicates()
.
- تصفية البيانات بناءً على شرط:
# تصفية البيانات حيث الراتب أكبر من 6000
filtered_data = df[df['راتب'] > 6000]
print(filtered_data)
النتيجة:
اسم مدينة راتب زيادة في الراتب
3 علي الإسكندرية 7000 700.0
4 سارة القاهرة 6500 650.0
- إزالة البيانات المكررة:
- باستخدام
duplicated()
يمكنك العثور على الصفوف المكررة، بينماdrop_duplicates()
يمكنها إزالة هذه الصفوف.
- باستخدام
# إزالة الصفوف المكررة بناءً على عمود "اسم"
df_unique = df.drop_duplicates(subset='اسم')
print(df_unique)
النتيجة:
اسم مدينة راتب زيادة في الراتب
0 علي القاهرة 5000 500.0
1 سارة الإسكندرية 6000 600.0
2 محمد القاهرة 5500 550.0
3 علي الإسكندرية 7000 700.0
4 سارة القاهرة 6500 650.0
- التكرار حسب مجموعة:
- يمكنك العثور على البيانات المكررة داخل مجموعات باستخدام
groupby()
.
- يمكنك العثور على البيانات المكررة داخل مجموعات باستخدام
# العثور على البيانات المكررة في كل مدينة
duplicates_in_group = df.groupby('مدينة').apply(lambda group: group[group.duplicated()])
print(duplicates_in_group)
النتيجة:
اسم مدينة راتب زيادة في الراتب
3 علي الإسكندرية 7000 700.0
4 سارة القاهرة 6500 650.0
المكتبات المتكاملة مع Pandas
Pandas هي مكتبة قوية لتحليل البيانات في Python، وهي غالبًا ما تُستخدم جنبًا إلى جنب مع مكتبات أخرى لتوسيع قدراتها. من بين أهم المكتبات التي تتكامل مع Pandas هي NumPy، Matplotlib، و Seaborn. دعونا نستعرض كيف يمكن لـ Pandas التكامل مع هذه المكتبات وكيفية استخدامها بشكل متكامل لتحليل البيانات والتصور.
1. تكامل Pandas مع NumPy
NumPy هي مكتبة أساسية للتعامل مع الأعداد والمصفوفات في Python. Pandas يعتمد على NumPy بشكل كبير، خاصة في التعامل مع DataFrame و Series، حيث تعتبر DataFrame في Pandas طبقة إضافية على NumPy arrays.
- كيفية التكامل:
- Pandas يتيح لك استخدام العمليات الرياضية المتقدمة التي يوفرها NumPy على البيانات. يمكن إجراء العمليات الحسابية على DataFrame أو Series باستخدام دوال NumPy.
import pandas as pd
import numpy as np
# إنشاء DataFrame
df = pd.DataFrame({'أرقام': [1, 2, 3, 4, 5]})
# استخدام دالة NumPy لحساب الجذر التربيعي
df['جذر تربيعي'] = np.sqrt(df['أرقام'])
print(df)
النتيجة:
أرقام جذر تربيعي
0 1 1.000000
1 2 1.414214
2 3 1.732051
3 4 2.000000
4 5 2.236068
2. تكامل Pandas مع Matplotlib و Seaborn
Matplotlib و Seaborn هما مكتبتان رئيسيتان للتصور في Python. Matplotlib تتيح لك إنشاء رسومات بيانية أساسية، بينما Seaborn توفر رسومات بيانية متقدمة وأكثر جمالاً. يمكن استخدام Pandas مع هذه المكتبات لإنشاء تصورات مرئية للبيانات بشكل فعال.
- استخدام Matplotlib مع Pandas:
import pandas as pd
import matplotlib.pyplot as plt
# إنشاء DataFrame
df = pd.DataFrame({'أرقام': [1, 2, 3, 4, 5], 'قيم': [1, 4, 9, 16, 25]})
# رسم بيانات باستخدام Matplotlib
df.plot(x='أرقام', y='قيم', kind='line')
plt.title('رسم بياني باستخدام Matplotlib')
plt.xlabel('أرقام')
plt.ylabel('قيم')
plt.show()
النتيجة: رسم بياني خطي يظهر العلاقة بين الأرقام والقيم.
- استخدام Seaborn مع Pandas:
import seaborn as sns
# رسم بياني باستخدام Seaborn
sns.scatterplot(data=df, x='أرقام', y='قيم')
plt.title('رسم بياني باستخدام Seaborn')
plt.show()
النتيجة: رسم بياني يوضح العلاقة بين الأرقام والقيم باستخدام Seaborn.
3. تكامل Pandas مع مكتبات أخرى مثل SciPy و Statsmodels
تعمل Pandas بشكل جيد مع مكتبات أخرى مثل SciPy و Statsmodels لتحليل البيانات الإحصائية. يمكن دمج Pandas مع هذه المكتبات لاستخدام الدوال الإحصائية المتقدمة مثل التحليل التنبؤي أو التحليل الانحداري.
كيف يمكن لـ Pandas تكملة المكتبات الأخرى في تحليل البيانات والتصور؟
Pandas تتيح لك تنظيم وتحضير البيانات بشكل مناسب لاستخدامها مع مكتبات أخرى. عندما تقوم بإعداد البيانات بشكل صحيح باستخدام Pandas، يمكنك استخدام المكتبات الأخرى مثل Matplotlib أو Seaborn لتحليل البيانات بصريًا أو استخدام NumPy لأداء العمليات الرياضية المعقدة. يمكن تلخيص دور Pandas في تكملة المكتبات الأخرى في تحليل البيانات والتصور كما يلي:
- تنظيف وتحضير البيانات: Pandas يوفر طرقًا مرنة للتعامل مع البيانات غير المنظمة، مثل إزالة القيم المفقودة أو تعديل الأنواع.
- التحليل العددي والإحصائي: NumPy و SciPy يستخدمان البيانات المحضرة باستخدام Pandas لإجراء التحليلات العدديه المتقدمة.
- التصور البياني: Matplotlib و Seaborn يمكن أن تعكسا البيانات المدروسة في شكل رسومات بيانية تساعد في اتخاذ القرارات.
استخدام Pandas في التطبيقات العملية
Pandas يمكن استخدامها في مجموعة متنوعة من التطبيقات العملية لتحليل البيانات. بعض الحالات الشائعة تشمل:
1. تحليلات الأعمال
في تحليلات الأعمال، يمكن استخدام Pandas لتحليل البيانات المالية، إدارة المخزون، وتحليل أداء الأعمال. على سبيل المثال، يمكن تحليل بيانات المبيعات، حساب الإيرادات، أو مراقبة التكاليف.
- مثال عملي: حساب إجمالي الإيرادات لكل منطقة مبيعات:
# بيانات مبيعات
sales_data = {'منطقة': ['الشمال', 'الجنوب', 'الشرق', 'الغرب'],
'إيرادات': [50000, 60000, 55000, 70000]}
df_sales = pd.DataFrame(sales_data)
# حساب إجمالي الإيرادات
total_revenue = df_sales['إيرادات'].sum()
print(f'إجمالي الإيرادات: {total_revenue}')
2. تحليل البيانات المالية
Pandas تعد أداة أساسية لتحليل البيانات المالية. يمكن استخدامها لتحليل أسعار الأسهم، تحليل العوائد، أو إنشاء تقارير مالية.
- مثال عملي: حساب العائد اليومي على السهم باستخدام أسعار الإغلاق.
# بيانات أسعار الأسهم
stock_data = {'تاريخ': ['2024-01-01', '2024-01-02', '2024-01-03'],
'إغلاق': [100, 105, 110]}
df_stock = pd.DataFrame(stock_data)
# حساب العائد اليومي
df_stock['العائد اليومي'] = df_stock['إغلاق'].pct_change() * 100
print(df_stock)
3. البيانات العلمية
في التطبيقات العلمية، يمكن استخدام Pandas لتحليل بيانات تجريبية أو محاكاة، مثل بيانات الطقس، التجارب الطبية، أو بيانات البحث العلمي.
- مثال عملي: تحليل بيانات الطقس وتحويلها إلى معايير إحصائية.
# بيانات الطقس
weather_data = {'تاريخ': ['2024-01-01', '2024-01-02', '2024-01-03'],
'درجة حرارة': [20, 22, 19], 'رطوبة': [30, 40, 35]}
df_weather = pd.DataFrame(weather_data)
# حساب متوسط درجة الحرارة
avg_temperature = df_weather['درجة حرارة'].mean()
print(f'متوسط درجة الحرارة: {avg_temperature}')
خاتمة
Pandas هي واحدة من أقوى المكتبات في Python المخصصة لتحليل البيانات ومعالجتها. بفضل واجهتها السهلة والمرنة، توفر Pandas للمستخدمين أدوات قوية لتنظيف البيانات، التلاعب بها، وتحليلها بشكل فعال. تعتبر Pandas عنصرًا أساسيًا في عملية تحليل البيانات لأنها تتيح للمستخدمين العمل مع أنواع بيانات متعددة (مثل DataFrame و Series) وتقديم وظائف متقدمة مثل التجميع، التصفية، والحسابات الإحصائية. كما أنها تتكامل بسلاسة مع مكتبات أخرى مثل NumPy، Matplotlib، و Seaborn، مما يجعلها حلاً مثاليًا للمشروعات التي تتطلب تحليل البيانات وتصويرها بشكل متكامل.
كيف يمكن للمستخدمين بدء استخدام Pandas في مشاريعهم الخاصة؟
للبدء في استخدام Pandas في مشاريعك الخاصة، إليك بعض الخطوات البسيطة:
-
التثبيت: يمكنك تثبيت مكتبة Pandas عبر pip باستخدام الأمر التالي:
pip install pandas
-
استكشاف البيانات: بمجرد تثبيت Pandas، يمكنك البدء بتحميل البيانات من ملفات CSV أو Excel، أو العمل مع البيانات التي تم جمعها من مصادر أخرى. مثال على قراءة ملف CSV:
import pandas as pd df = pd.read_csv('data.csv') print(df.head())
-
التلاعب بالبيانات: استخدم وظائف Pandas مثل
groupby()
وapply()
لتجميع البيانات أو تطبيق دوال مخصصة. يمكنك أيضًا استخدامdropna()
للتعامل مع القيم المفقودة أوdrop_duplicates()
لإزالة البيانات المكررة. -
التصور: استخدم Matplotlib و Seaborn لتصور البيانات المستخلصة من Pandas باستخدام الرسوم البيانية مثل الأعمدة، الخطوط، أو الرسوم البيانية التفاعلية.
-
الاستفادة من المصادر التعليمية: هناك العديد من الموارد التعليمية المتاحة عبر الإنترنت، مثل الوثائق الرسمية لـ Pandas، والمقالات التعليمية على المواقع مثل Kaggle و Medium، والتي يمكن أن تساعدك في تعلم المزيد حول Pandas.