ورقة الغش الباندا لعلوم البيانات في Python

⚡ ملخص ذكي

تُقدّم أوراق الغش الخاصة بـ Pandas ملخصًا لأكثر أوامر المكتبة استخدامًا في صفحة واحدة. ويُصنّف هذا المرجع الأوامر حسب المهمة: التثبيت، وبناء السلاسل وإطارات البيانات، واستيراد الملفات، وتحديد الصفوف، وتنظيف البيانات، وتطبيق الدوال، وتصدير النتائج.

  • 🔘 هيكلان: تحتوي السلسلة على بُعد واحد مُصنَّف، بينما يحتوي إطار البيانات على بُعدين بأنواع أعمدة مختلطة.
  • ☑️ استورد أي شيء: تقوم الدوال read_csv و read_excel و read_sql و read_json و read_html بتحميل الملفات إلى DataFrame.
  • ✅ اختيار دقيق: يحدد loc حسب التسمية، ويحدد iloc حسب الموضع، وتقوم الأقنعة المنطقية بتصفية الصفوف حسب الشرط.
  • 🧪 نظف بشكل موثوق: تقوم الدوال isnull و dropna و fillna و drop_duplicates و replace بمعالجة الفجوات والسجلات المتكررة.
  • 🛠️ افحص بسرعة: تُلخص الأشكال والمعلومات وأنواع البيانات والوصف البنية والإحصائيات قبل بدء التحليل.
  • ⚠️ ملاحظة حول الإصدار: يقوم الإصدار 3.0 من مكتبة pandas بتمكين خاصية النسخ عند الكتابة بشكل افتراضي، لذا فإن عملية التعيين المتسلسلة تؤدي إلى ظهور خطأ.

ورقة الغش الباندا لعلوم البيانات في Python

ما هي ورقة الغش الخاصة بـ Pandas؟

تحتوي مكتبة Pandas على مئات الدوال، ولكن لا يظهر منها سوى جزء صغير في العمل اليومي. دليل استخدام باندا هو مرجع من صفحة واحدة يسرد تلك الأوامر، مصنفة حسب المهمة التي تؤديها.

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

👉 قم بتنزيل ملف PDF الخاص بورقة الغش هنا

كيفية تثبيت واستيراد مكتبة Pandas

يتطلب إعداد Pandas تنفيذ أمرين، وكلاهما يعمل في سطر الأوامر أو Jupyter دفتر خلية - زنزانة.

الخطوة 1) تثبيت مكتبة Pandas

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

pip install pandas

الخطوة الثانية: استيراد مكتبة Pandas

استورد الحزمة تحت الاسم المستعار pdوهو ما يفترضه كل مثال هنا.

import pandas as pd

يمكنك الآن استدعاء دوال Pandas لمعالجة البيانات وتحليلها وتنظيفها. تُدرج الأقسام أدناه هذه الدوال بالترتيب الذي تستخدمها به عادةً.

هياكل بيانات الباندا

تحتوي مكتبة Pandas على بنيتين للبيانات، مسلسلات و DataFrameكلاهما عبارة عن مصفوفات مُصنّفة، وكلاهما يمكنه استيعاب أي نوع من البيانات. الفرق الوحيد هو الأبعاد: السلسلة (Series) هي مصفوفة أحادية البعد، بينما إطار البيانات (DataFrame) هو مصفوفة ثنائية الأبعاد مبنية من نمباي المصفوفات الموجودة أسفلها.

الميزات مسلسلات DataFrame
الأبعاد أحادي البعد ثنائي الأبعاد
يحمل عمود واحد مُصنَّف أعمدة متعددة، وأنواع بيانات مختلطة
منشئ pd.Series() pd.DataFrame ()

1. السلسلة

هو عبارة عن مصفوفة أحادية البعد مُصنّفة. يمكنها استيعاب أي نوع من البيانات، و None تصبح قيمة مفقودة.

s = pd.Series([2, -4, 6, 3, None], index=['A', 'B', 'C', 'D', 'E'])

2. إطار البيانات

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

data = {'RollNo' : [101, 102, 75, 99],
        'Name' : ['Mithlesh', 'Ram', 'Rudra', 'Mithlesh'],
        'Course' : ['Nodejs', None, 'Nodejs', 'JavaScript']
}
df = pd.DataFrame(data, columns=['RollNo', 'Name', 'Course'])
df.head()

تحتوي ورقة الغش القابلة للطباعة أدناه على نفس الأوامر في صفحة واحدة.

قائمة مختصرة قابلة للطباعة لأوامر Pandas الخاصة بالسلاسل وإطارات البيانات

استيراد البيانات

تستطيع مكتبة Pandas قراءة أنواع ملفات متعددة مباشرةً إلى DataFrame. كل قارئ أدناه يُرجع نوعًا واحدًا، و read_csv () هو الأكثر استخداما.

# Import a CSV file pd
pd.read_csv(filename)

# Import a TSV file
pd.read_table(filename)

# Import a Excel file pd
pd.read_excel(filename)

# Import a SQL table/database
pd.read_sql(query, connection_object)

# Import a JSON file
pd.read_json(json_string)

# Import a HTML file
pd.read_html(url)

# From clipboard to read_table()
pd.read_clipboard()

# From dict
pd.DataFrame(dict)

اختيار

يمكنك تحديد العناصر حسب موقعها أو حسب فهرسها. ويُستخدم نفس بناء الجملة بين قوسين مربعين لاختيار الصفوف والأعمدة والشرائح من كلا البنيتين.

1. السلسلة

# Accessing one element from Series
s['D']

# Accessing all elements between two given indices
s['A':'C']

# Accessing all elements from starting till given index
s[:'C']

# Accessing all elements from given index till end
s['B':]

2. إطار البيانات

# Accessing one column df
df['Name']

# Accessing rows from after given row
df[1:]

# Accessing till before given row
df[:1]

# Accessing rows between two given rows
df[1:2]

الاختيار عن طريق الفهرسة المنطقية والإعداد

استعمل iloc و iat بالنسبة للمواقع الصحيحة، و loc و at للملصقات.

1 حسب المنصب

df.iloc[0, 1]

df.iat[0, 1]

2. عن طريق التسمية

df.loc[[0],  ['Name']]

3. حسب التسمية/المنصب

df.loc[2] # Both are same
df.iloc[2]

4. الفهرسة المنطقية

يحتفظ القناع المنطقي فقط بالصفوف التي يكون فيها الشرط صحيحًا. ويضيف المثال الثاني عامل النفي (NOT). ~لذا فهو يُرجع أيضًا قيمًا لا تتجاوز 1.

# Series s where value is > 1
s[(s > 0)]

# Series s where value is <-2 or >1
s[(s < -2) | ~(s > 1)]

# Use filter to adjust DataFrame
df[df['RollNo']>100]

# Set index a of Series s to 6
s['D'] = 10
s.head()

تنظيف البيانات

في عمل Python لأغراض تنظيف البيانات، يمكنك إجراء العمليات التالية:

  • أعد تسمية الأعمدة باستخدام rename() الأسلوب.
  • قم بتحديث القيم باستخدام at[] or iat[] طريقة للوصول إلى عناصر محددة وتعديلها.
  • أنشئ نسخة من سلسلة بيانات أو إطار بيانات باستخدام copy() الأسلوب.
  • تحقق من القيم الفارغة باستخدام isnull() الطريقة، ثم قم بإسقاطها باستخدام dropna() الأسلوب.
  • تحقق من القيم المكررة باستخدام duplicated() الطريقة. قم بإسقاطها باستخدام drop_duplicates() الأسلوب.
  • استبدل القيم الفارغة باستخدام fillna() طريقة ذات قيمة محددة.
  • استبدل القيم باستخدام replace() الأسلوب.
  • فرز القيم باستخدام sort_values() الأسلوب.
  • رتب القيم باستخدام rank() الأسلوب.
# Renaming columns
df.columns = ['a','b','c']
df.head()

# Mass renaming of columns
df = df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'})

# Or use this edit in same DataFrame instead of in copy
df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'}, inplace=True)
df.head()

# Counting duplicates in a column
df.duplicated(subset='Name')

# Removing entire row that has duplicate in given column
df.drop_duplicates(subset=['Name'])

# You can choose which one keep - by default is first
df.drop_duplicates(subset=['Name'], keep='last')

# Checks for Null Values
s.isnull()

# Checks for non-Null Values - reverse of isnull()
s.notnull()

# Checks for Null Values df
df.isnull()

# Checks for non-Null Values - reverse of isnull()
df.notnull()

# Drops all rows that contain null values
df.dropna()

# Drops all columns that contain null values
df.dropna(axis=1)

# Replaces all null values with 'Guru99'
df.fillna('Guru99')

# Replaces all null values with the mean
s.fillna(s.mean())

# Converts the datatype of the Series to float
s.astype(float)

# Replaces all values equal to 6 with 'Six'
s.replace(6,'Six')

# Replaces all 2 with 'Two' and 6 with 'Six'
s.replace([2,6],['Two','Six'])

# Drop from rows (axis=0)
s.drop(['B',  'D'])

# Drop from columns(axis=1)
df.drop('Name', axis=1)

# Sort by labels with axis
df.sort_index()

# Sort by values with axis
df.sort_values(by='RollNo')

# Ranking entries
df.rank()

# s1 is pointing to same Series as s
s1 = s

# s_copy of s, but not pointing same Series
s_copy = s.copy()

# df1 is pointing to same DataFrame as df
df1 = s

# df_copy of df, but not pointing same DataFrame
df_copy = df.copy()

نلاحظ أن s1 = s لا يقوم إلا بإنشاء اسم ثانٍ لنفس الكائن، وليس نسخة منه أبدًا - ولهذا السبب copy() يتبع ذلك.

استرجاع المعلومات

يمكنك إجراء هذه العمليات لاسترجاع المعلومات:

  • استخدم shape السمة للحصول على عدد الصفوف والأعمدة.
  • استخدم head() or tail() طريقة للحصول على الصفوف القليلة الأولى أو الأخيرة كعينة.
  • استخدم info(), describe() or dtypes طريقة للحصول على معلومات حول نوع البيانات، والعدد، والمتوسط، والانحراف المعياري، والقيم الدنيا والقصوى.
  • استخدم count(), min(), max(), sum(), mean() و median() طرق للحصول على معلومات إحصائية محددة للقيم.
  • استخدم loc[] طريقة للحصول على صف.
  • استخدم groupby() طريقة لتطبيق دالة GROUP BY لتجميع القيم المتشابهة في عمود من DataFrame.

1. معلومات اساسية

# Counting all elements in Series
len(s)

# Counting all elements in DataFrame
len(df)

# Prints number of rows and columns in dataframe
df.shape

# Prints first 10 rows by default, if no value set
df.head(10)

# Prints last 10 rows by default, if no value set
df.tail(10)

# For counting non-Null values column-wise
df.count()

# For range of index df
df.index

# For name of attributes/columns
df.columns

# Index, Data Type and Memory information
df.info()

# Datatypes of each column
df.dtypes

# Summary statistics for numerical columns
df.describe()

2. ملخص

# For adding all values column-wise
df.sum()

# For min column-wise
df.min()

# For max column-wise
df.max()

# For mean value in number column
df.mean()

# For median value in number column
df.median()

# Count non-Null values
s.count()

# Count non-Null values
df.count()

# Return Series of given column
df['Name'].tolist()

# Name of columns
df.columns.tolist()

# Creating subset
df[['Name', 'Course']]

# Return number of values in each group
df.groupby('Name').count()

تطبيق الوظائف

apply() يقوم هذا الإجراء بتطبيق دالة على كل قيمة. ثم تحدد قواعد المحاذاة ما يحدث عندما يشترك كائنان في جزء فقط من فهرسهما.

# Define function
f = lambda x: x*5

# Apply this function on given Series - For each value
s.apply(f)

# Apply this function on given DataFrame - For each value
df.apply(f)

1. محاذاة البيانات الداخلية

# NA values for indices that don't overlap
s2 = pd.Series([8, -1, 4],  index=['A',  'C',  'D'])
s + s2

2. الحساب Operaمع طرق التعبئة

# Fill values that don't overlap
s.add(s2, fill_value=0)

3. التصفية والفرز والتجميع حسب

يمكن استخدام هذه الوظائف للتصفية والفرز والتجميعping كائنات السلسلة وإطار البيانات.

# Filter rows where column is greater than 100
df[df['RollNo']>100]

# Filter rows where 70 < column < 101
df[(df['RollNo'] > 70) & (df['RollNo'] < 101)]

# Sorts values in ascending order
s.sort_values()

# Sorts values in descending order
s.sort_values(ascending=False)

# Sorts values by RollNo in ascending order
df.sort_values('RollNo')

# Sorts values by RollNo in descending order
df.sort_values('RollNo', ascending=False)

تصدير البيانات

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

# Export as a CSV file df
df.to_csv(filename)

# Export as a Excel file df
df.to_excel(filename)

# Export as a SQL table df
df.to_sql(table_name, connection_object)

# Export as a JSON file
df.to_json(filename)

# Export as a HTML table
df.to_html(filename)

# Write to the clipboard
df.to_clipboard()

كولاب من ورقة الغش

يمكن تنفيذ كل أمر هنا في دفتر الملاحظات المصاحب: ورقة الغش الباندا – Python لعلم البيانات.ipynb.

الأسئلة الشائعة

خاصية النسخ عند الكتابة مُفعّلة دائمًا، وتستخدم السلاسل نوع بيانات str مخصصًا، ويؤدي التعيين المتسلسل على نسخة مُفلترة إلى ظهور خطأ ChainedAssignmentError. قم بالتعيين من خلال ملف .loc بدلًا من ذلك. جميع الأوامر المذكورة هنا لا تزال تعمل على باندا 3.0.

تقوم الدالة pd.merge() بدمج البيانات باستخدام المفاتيح المشتركة بالطريقة التي... SQL تقوم الدالة join بمحاذاة البيانات بناءً على الفهرس، بينما تقوم الدالة pd.concat بتجميع الإطارات. استخدم merge للمفاتيح، و concat للإلحاق.

تقوم الدالة df.pivot_table() بتحويل الصفوف الطويلة إلى شبكة مجمعة واسعة، وتقوم الدالة pd.melt() بعكس ذلك، وتقوم الدالة stack() أو unstack() بنقل مستوى واحد بين الفهرس والأعمدة.

تقوم الدالة pd.to_datetime() بتحويل النص إلى datetime64، ويعرض مُعرّف .dt السنة والشهر ويوم الأسبوع، وتقوم الدالة resample() بالتجميع حسب اليوم أو الأسبوع أو الشهر بمجرد أن يصبح هذا العمود هو الفهرس.

تُنفذ العمليات المتجهة بلغة C المترجمة على كامل المصفوفة، بينما تستدعي الدالة apply() Python قم بتنفيذ الدالة مرة واحدة لكل صف. ثم قم بالتبديل.ping غالباً ما يكون استخدام دالة apply() على مستوى الصفوف للتعبير المتجهي أسرع بعشر مرات.

تقوم المساعدات المدعومة بالذكاء الاصطناعي بتحويل وصف بسيط للنتيجة إلى استدعاءات محددة، مقترحةً استخدام groupby أو merge أو pivot_table مع الوسائط اللازمة لكل منها. تحقق من الاقتراح على عينة صغيرة أولاً.

نعم. مساعد الطيار جيثب يحوّل تعليقًا مثل "group by course and count" إلى كود Pandas يعمل في الداخل Jupyterتعامل مع المخرجات كمسودة وتحقق من عدد الصفوف.

مرر نوع البيانات إلى read_csv ()قم بتحويل أعمدة النصوص المتكررة إلى فئات، وحوّل الأرقام إلى قيم رقمية باستخدام pd.to_numeric، وقم بتحميل البيانات على أجزاء باستخدام chunksize. يعرض df.info() الحجم الفعلي للبيانات.

تلخيص هذه التدوينة بـ: