تحليل البيانات ببايثون : قراءة ملف CSV باستخدام pandas خطوة بخطوة

قراءة ملف CSV باستخدام pandas في بايثون للمبتدئين

قراءة ملف CSV باستخدام pandas من أهم الخطوات الأولى في تحليل البيانات ببايثون؛ لأن معظم البيانات التي ستتعامل معها في البداية تكون محفوظة في ملفات تشبه الجداول: صفوف، أعمدة، أسماء حقول، وقيم قابلة للفحص والتحليل.

في هذا الدرس ستتعلم كيف تجهز ملف CSV بسيطًا، وكيف تقرأه باستخدام الدالة read_csv()، ثم كيف تعرض أول الصفوف، وتعرف عدد الصفوف والأعمدة، وتعرض أسماء الأعمدة، وتحسب متوسط عمود رقمي، وتتعامل مع أشهر الأخطاء التي تظهر للمبتدئين.

إذا كنت جديدًا تمامًا في هذا المسار، يمكنك أولًا مراجعة دليل تحليل البيانات ببايثون للمبتدئين، وإذا أردت فهم ملفات CSV من ناحية أساسيات بايثون قبل استخدام pandas فراجع أيضًا درس التعامل مع ملفات CSV في كورس أساسيات بايثون.

{alertInfo} الفكرة ببساطة: الدالة read_csv() تقرأ ملف CSV وتحوله إلى جدول داخل pandas يسمى DataFrame، وبعدها تستطيع فحص البيانات وتحليلها بأوامر قصيرة وواضحة.

{getToc} $title={محتوى المقال}

ماذا ستتعلم في هذا الدرس؟

المهارة لماذا تحتاجها؟
فهم شكل ملف CSV حتى تعرف كيف تكون البيانات قبل قراءتها في بايثون.
استخدام pd.read_csv() لقراءة الملف وتحويله إلى DataFrame.
استخدام head() وshape وcolumns لفحص أول الصفوف، وحجم البيانات، وأسماء الأعمدة.
اختيار عمود وحساب المتوسط لبدء أول خطوة تحليل بسيطة على البيانات.
حل أخطاء القراءة الشائعة مثل خطأ عدم وجود الملف، مشكلة الترميز، أو ظهور البيانات في عمود واحد.

ما هو ملف CSV؟

ملف CSV هو ملف نصي بسيط تُخزن فيه البيانات على شكل صفوف وأعمدة. غالبًا يكون الصف الأول هو أسماء الأعمدة، ثم تأتي البيانات في الصفوف التالية.

مثال على ملف CSV بسيط:

name,age,city,score
Ali,22,Aden,88
Sara,25,Sanaa,91
Omar,20,Taiz,76
Mona,23,Aden,95
Khaled,24,Hadramout,82

في هذا المثال لدينا أربعة أعمدة:

  • name: اسم الطالب.
  • age: العمر.
  • city: المدينة.
  • score: الدرجة.

كل سطر بعد الصف الأول يمثل صفًا واحدًا من البيانات. لذلك عندما تقرأ هذا الملف باستخدام pandas سيظهر لك كجدول منظم يمكن فحصه وتحليله.

شرح بنية ملف CSV من صفوف وأعمدة قبل قراءته في بايثون

لماذا نستخدم pandas بدل القراءة اليدوية؟

يمكنك قراءة ملف نصي عادي باستخدام open()، لكن تحليل البيانات يحتاج أكثر من مجرد قراءة السطور. أنت تحتاج إلى اختيار أعمدة، تصفية صفوف، حساب متوسطات، معرفة القيم الفارغة، وفرز البيانات. هنا تظهر قوة مكتبة pandas.

القراءة اليدوية القراءة باستخدام pandas
تحتاج إلى قراءة السطور وتقسيم النصوص يدويًا. تقرأ الملف بأمر واحد باستخدام read_csv().
اختيار الأعمدة يحتاج كودًا أطول. يمكن اختيار أي عمود باسمه مباشرة.
الحسابات تحتاج حلقات وشروطًا كثيرة. يمكن حساب المتوسط والمجموع والوصف الإحصائي بدوال جاهزة.
فحص البيانات الكبيرة يصبح متعبًا. يمكن استخدام head() وinfo() وdescribe() بسرعة.

تثبيت pandas قبل قراءة الملف

قبل استخدام pandas، تأكد أن المكتبة مثبتة لديك. افتح نافذة الأوامر واكتب:

pip install pandas

وإذا كنت تستخدم أكثر من نسخة لبايثون على جهازك، فقد تحتاج إلى استخدام:

python -m pip install pandas

بعد التثبيت، نستورد المكتبة داخل ملف بايثون بهذا الشكل:

import pandas as pd

الاختصار pd هو الاختصار الشائع لمكتبة pandas، وستراه في أغلب الدروس والمشاريع.

{alertWarning} إذا ظهر خطأ ModuleNotFoundError: No module named 'pandas'، فهذا يعني أن المكتبة غير مثبتة في البيئة التي تشغل منها الكود. ثبتها بالأمر السابق ثم شغل الملف مرة أخرى.

إنشاء ملف CSV للتجربة

أنشئ مجلدًا جديدًا للتجربة، ثم أنشئ بداخله ملفًا باسم:

students.csv

ضع داخل الملف البيانات التالية:

name,age,city,score
Ali,22,Aden,88
Sara,25,Sanaa,91
Omar,20,Taiz,76
Mona,23,Aden,95
Khaled,24,Hadramout,82

ثم أنشئ ملف بايثون باسم:

read_students.py

اجعل الملفين في نفس المجلد حتى تكون القراءة سهلة:

project-folder/
  read_students.py
  students.csv
{alertInfo} ملاحظة مهمة: إذا كنت تستخدم Notepad على ويندوز، تأكد أن اسم الملف أصبح students.csv وليس students.csv.txt؛ لأن هذا من أكثر أسباب خطأ عدم العثور على الملف.

قراءة ملف CSV باستخدام read_csv

اكتب الكود التالي داخل ملف read_students.py:

import pandas as pd

df = pd.read_csv("students.csv")

print(df)

في هذا الكود:

  • استوردنا مكتبة pandas بالاختصار pd.
  • قرأنا ملف students.csv باستخدام pd.read_csv().
  • خزنّا البيانات في متغير اسمه df.
  • طبعنا الجدول الناتج باستخدام print(df).

قد يظهر الناتج بهذا الشكل:

     name  age       city  score
0     Ali   22       Aden     88
1    Sara   25      Sanaa     91
2    Omar   20       Taiz     76
3    Mona   23       Aden     95
4  Khaled   24  Hadramout     82

الأرقام الموجودة في أقصى اليسار تسمى index. هذه الأرقام لم تكن موجودة في ملف CSV، لكن pandas يضيفها لترقيم الصفوف داخل DataFrame.

تحويل ملف CSV إلى DataFrame باستخدام pandas في بايثون

ما معنى DataFrame في pandas؟

DataFrame هو جدول بيانات داخل pandas. يمكنك تخيله مثل جدول في Excel، لكنه داخل بايثون ويمكن التعامل معه بالكود.

العنصر معناه داخل DataFrame
الصف سجل واحد من البيانات، مثل بيانات طالب واحد.
العمود نوع معلومة معين، مثل الاسم أو العمر أو الدرجة.
الفهرس index ترقيم داخلي للصفوف يبدأ غالبًا من 0.
اسم العمود العنوان الموجود في الصف الأول من ملف CSV.

عرض أول الصفوف باستخدام head

عند التعامل مع ملف كبير، لا تطبع كل البيانات مرة واحدة. الأفضل أن تعرض أول عدة صفوف فقط باستخدام head().

import pandas as pd

df = pd.read_csv("students.csv")

print(df.head())

الدالة head() تعرض أول 5 صفوف بشكل افتراضي. ويمكنك تحديد عدد الصفوف التي تريدها:

print(df.head(3))

هذا السطر يعرض أول 3 صفوف فقط.

معرفة عدد الصفوف والأعمدة باستخدام shape

بعد قراءة البيانات، اسأل نفسك دائمًا: كم صفًا وكم عمودًا في الملف؟ نستخدم shape للإجابة على هذا السؤال.

import pandas as pd

df = pd.read_csv("students.csv")

print(df.shape)

الناتج:

(5, 4)

هذا يعني أن البيانات تحتوي على 5 صفوف و4 أعمدة.

عرض أسماء الأعمدة باستخدام columns

لمعرفة أسماء الأعمدة الموجودة في الملف، استخدم columns:

import pandas as pd

df = pd.read_csv("students.csv")

print(df.columns)

قد يظهر الناتج بهذا الشكل:

Index(['name', 'age', 'city', 'score'], dtype='object')

وإذا أردت عرض أسماء الأعمدة كقائمة أوضح، استخدم:

print(list(df.columns))

الناتج:

['name', 'age', 'city', 'score']
فحص أول الصفوف وعدد الأعمدة والصفوف بعد قراءة البيانات في pandas

عرض معلومات عامة عن البيانات باستخدام info

الدالة info() تعطيك ملخصًا سريعًا عن البيانات: عدد الصفوف، أسماء الأعمدة، عدد القيم غير الفارغة، ونوع البيانات في كل عمود.

import pandas as pd

df = pd.read_csv("students.csv")

df.info()

قد ترى ناتجًا مشابهًا لهذا:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   name    5 non-null      object
 1   age     5 non-null      int64 
 2   city    5 non-null      object
 3   score   5 non-null      int64 
dtypes: int64(2), object(2)

هذا الملخص مهم قبل أي تحليل؛ لأنه يخبرك هل الأعمدة الرقمية ظهرت كأرقام فعلًا، وهل توجد قيم فارغة، وما نوع كل عمود.

اختيار عمود واحد من البيانات

يمكنك اختيار عمود واحد باستخدام اسمه بين أقواس مربعة. مثلًا لاختيار عمود الأسماء:

import pandas as pd

df = pd.read_csv("students.csv")

print(df["name"])

الناتج:

0       Ali
1      Sara
2      Omar
3      Mona
4    Khaled
Name: name, dtype: object

ولاختيار عمود الدرجات:

print(df["score"])

حساب متوسط الدرجات

بما أن عمود score يحتوي على أرقام، يمكننا حساب المتوسط باستخدام mean():

import pandas as pd

df = pd.read_csv("students.csv")

average_score = df["score"].mean()

print(average_score)

هذا المثال بسيط، لكنه يوضح فكرة مهمة: بعد قراءة ملف CSV وتحويله إلى DataFrame، تستطيع تنفيذ عمليات تحليلية على الأعمدة مباشرة.

تصفية البيانات حسب شرط

يمكنك عرض الطلاب الذين حصلوا على درجة أكبر من أو تساوي 85 بهذا الشكل:

import pandas as pd

df = pd.read_csv("students.csv")

high_scores = df[df["score"] >= 85]

print(high_scores)

الناتج:

   name  age   city  score
0   Ali   22   Aden     88
1  Sara   25  Sanaa     91
3  Mona   23   Aden     95

هذه خطوة صغيرة، لكنها بداية فعلية لتحليل البيانات؛ لأنك لم تعد تعرض الجدول فقط، بل بدأت تستخرج جزءًا محددًا منه حسب شرط.

قراءة ملف CSV من مجلد فرعي

إذا كان ملف CSV داخل مجلد فرعي اسمه data، فسيكون شكل المشروع مثل:

project-folder/
  read_students.py
  data/
    students.csv

في هذه الحالة اكتب المسار بهذا الشكل:

import pandas as pd

df = pd.read_csv("data/students.csv")

print(df.head())

على ويندوز يمكنك غالبًا استخدام الشرطة المائلة للأمام / داخل المسار، وهي أسهل وأوضح للمبتدئين من الشرطة العكسية.

تحديد الفاصل sep عند الحاجة

ليس كل ملف شبيه بـ CSV يستخدم الفاصلة العادية ,. أحيانًا تكون البيانات مفصولة بفاصلة منقوطة ;، خصوصًا في بعض الملفات المصدرة من برامج الجداول.

مثال ملف مفصول بفاصلة منقوطة:

name;age;city;score
Ali;22;Aden;88
Sara;25;Sanaa;91

في هذه الحالة نستخدم المعامل sep:

import pandas as pd

df = pd.read_csv("students.csv", sep=";")

print(df.head())

إذا قرأت الملف ووجدت كل البيانات ظهرت داخل عمود واحد، فغالبًا المشكلة أن الفاصل المستخدم في الملف ليس فاصلة عادية.

مشكلة الترميز encoding مع اللغة العربية

إذا كان ملف CSV يحتوي على نص عربي وظهرت الحروف بشكل غريب، فقد تكون المشكلة في الترميز. جرّب قراءة الملف باستخدام encoding="utf-8":

import pandas as pd

df = pd.read_csv("students.csv", encoding="utf-8")

print(df.head())

وفي بعض الملفات المصدرة من Excel قد تحتاج إلى تجربة utf-8-sig:

df = pd.read_csv("students.csv", encoding="utf-8-sig")
{alertInfo} عند التعامل مع ملفات عربية، الأفضل أن تحفظ ملف CSV بترميز UTF-8 حتى تقل مشاكل ظهور الحروف بشكل غير صحيح.

قراءة أعمدة محددة فقط باستخدام usecols

أحيانًا لا تحتاج إلى كل الأعمدة الموجودة في الملف. يمكنك قراءة أعمدة محددة فقط باستخدام usecols:

import pandas as pd

df = pd.read_csv("students.csv", usecols=["name", "score"])

print(df)

هذا مفيد عندما يكون الملف كبيرًا وتريد التركيز على أعمدة معينة فقط.

قراءة عدد محدود من الصفوف باستخدام nrows

إذا كان الملف كبيرًا جدًا وتريد تجربة سريعة، يمكنك قراءة أول عدد محدد من الصفوف باستخدام nrows:

import pandas as pd

df = pd.read_csv("students.csv", nrows=3)

print(df)

هذا يقرأ أول 3 صفوف فقط من الملف.

أخطاء شائعة عند استخدام read_csv

هذه أشهر المشاكل التي قد تظهر عند قراءة ملفات CSV باستخدام pandas، خصوصًا في بداية التعلم.

المشكلة السبب المحتمل الحل السريع
FileNotFoundError الملف غير موجود في المسار المكتوب. تأكد من اسم الملف ومكانه، أو استخدم مسارًا صحيحًا مثل data/students.csv.
ModuleNotFoundError مكتبة pandas غير مثبتة في البيئة الحالية. استخدم python -m pip install pandas.
كل البيانات ظهرت في عمود واحد الفاصل داخل الملف ليس فاصلة عادية. جرّب sep=";" أو افحص الفاصل المستخدم داخل الملف.
الحروف العربية ظهرت بشكل غير صحيح مشكلة ترميز. جرّب encoding="utf-8-sig".
KeyError كتبت اسم عمود غير موجود أو مختلف في الملف. اعرض أسماء الأعمدة باستخدام list(df.columns).

1. خطأ FileNotFoundError

هذا الخطأ يعني أن بايثون لم يجد الملف في المسار الذي كتبته.

FileNotFoundError: [Errno 2] No such file or directory: 'students.csv'

الحل:

  • تأكد أن اسم الملف مكتوب بشكل صحيح.
  • تأكد أن الملف في نفس مجلد ملف بايثون.
  • إذا كان الملف داخل مجلد فرعي، اكتب المسار الصحيح مثل data/students.csv.
  • تأكد أن الملف ليس محفوظًا باسم students.csv.txt.

2. ظهور كل البيانات في عمود واحد

إذا ظهر الجدول كله داخل عمود واحد، فقد يكون الفاصل داخل الملف ليس فاصلة ,. جرّب:

df = pd.read_csv("students.csv", sep=";")

3. ظهور الحروف العربية بشكل غريب

جرّب تحديد الترميز:

df = pd.read_csv("students.csv", encoding="utf-8-sig")

4. خطأ KeyError عند اختيار عمود

إذا كتبت اسم عمود غير موجود، سيظهر خطأ مثل KeyError. لذلك افحص أسماء الأعمدة أولًا:

print(list(df.columns))

انتبه أيضًا إلى المسافات الزائدة في أسماء الأعمدة. أحيانًا يكون اسم العمود " score" وليس "score".

أخطاء شائعة عند قراءة ملف CSV باستخدام pandas في بايثون وحلولها

الكود الكامل للدرس

هذا كود كامل يجمع أهم ما تعلمناه في الدرس:

import pandas as pd

df = pd.read_csv("students.csv")

print("أول الصفوف:")
print(df.head())

print("\nحجم البيانات:")
print(df.shape)

print("\nأسماء الأعمدة:")
print(list(df.columns))

print("\nمعلومات عامة عن البيانات:")
df.info()

print("\nمتوسط الدرجات:")
print(df["score"].mean())

print("\nالطلاب أصحاب الدرجات العالية:")
high_scores = df[df["score"] >= 85]
print(high_scores)

ملخص أوامر pandas التي استخدمناها

الأمر وظيفته
import pandas as pd استيراد مكتبة pandas بالاختصار الشائع pd.
pd.read_csv() قراءة ملف CSV وتحويله إلى DataFrame.
df.head() عرض أول الصفوف من البيانات.
df.shape معرفة عدد الصفوف والأعمدة.
df.columns عرض أسماء الأعمدة.
df.info() عرض ملخص عن الأعمدة وأنواع البيانات والقيم غير الفارغة.
df["score"].mean() حساب متوسط عمود رقمي.
df[df["score"] >= 85] تصفية الصفوف حسب شرط معين.
sep تحديد الفاصل المستخدم داخل الملف.
encoding تحديد ترميز الملف عند وجود نص عربي أو رموز غير ظاهرة بشكل صحيح.

روابط داخلية مفيدة من بايثون العرب

مصادر خارجية مفيدة

الخلاصة

قراءة ملف CSV باستخدام pandas هي خطوة أساسية في تحليل البيانات ببايثون. باستخدام أمر واحد مثل pd.read_csv("students.csv") يمكنك تحويل ملف نصي بسيط إلى DataFrame منظم، وبعدها تبدأ بفحص البيانات وتحليلها.

في هذا الدرس تعلمت كيف تقرأ الملف، وتعرض أول الصفوف باستخدام head()، وتعرف حجم البيانات باستخدام shape، وتعرض أسماء الأعمدة باستخدام columns، وتستخدم info() لفهم بنية البيانات، ثم تحسب متوسط عمود رقمي وتستخرج صفوفًا حسب شرط معين.

{alertSuccess} القاعدة المهمة: قبل أن تبدأ أي تحليل، اقرأ البيانات جيدًا، افحص أول الصفوف، راجع أسماء الأعمدة، وتأكد أن البيانات ظهرت بالشكل الصحيح داخل DataFrame.

أسئلة شائعة

ما معنى CSV؟

CSV اختصار لـ Comma-Separated Values، وهي صيغة بسيطة لتخزين البيانات في صفوف وأعمدة، وغالبًا تكون القيم فيها مفصولة بفواصل.

ما الفرق بين CSV وDataFrame؟

CSV هو ملف محفوظ على جهازك، أما DataFrame فهو شكل البيانات بعد قراءتها داخل pandas حتى تستطيع التعامل معها بالكود.

هل يجب تثبيت pandas قبل استخدام read_csv؟

نعم، إذا لم تكن مكتبة pandas مثبتة لديك، يجب تثبيتها أولًا باستخدام الأمر pip install pandas أو python -m pip install pandas.

لماذا يظهر خطأ FileNotFoundError عند قراءة CSV؟

لأن الملف غير موجود في المسار الذي كتبته، أو لأن اسم الملف مختلف. تأكد من مكان الملف واسمه، وتأكد أنه ليس محفوظًا باسم students.csv.txt.

ماذا أفعل إذا ظهرت البيانات كلها في عمود واحد؟

غالبًا الفاصل داخل الملف ليس فاصلة عادية. جرّب استخدام sep=";" أو افتح الملف وتأكد من الرمز المستخدم بين القيم.

كيف أتعامل مع ملف CSV يحتوي على نص عربي؟

احفظ الملف بترميز UTF-8، وإذا ظهرت الحروف بشكل غير صحيح جرّب استخدام encoding="utf-8-sig" عند قراءة الملف.

إرسال تعليق

أحدث أقدم