تصفية الصفوف في Pandas DataFrames
Pandas هي مكتبة قوية في لغة بايثون لمعالجة البيانات وتحليلها. إحدى المهام الشائعة هي تحديد الصفوف من DataFrame بناءً على قيم الأعمدة، على غرار جدول SQL SELECT * FROM WHERE column_name = some_value.
سيرشدك هذا الدليل عبر طرق مختلفة لتحقيق ذلك في Pandas، مما يجعل من السهل تصفية بياناتك بكفاءة. سواء كنت مستخدمًا مبتدئًا أو متمرسًا، ستعزز هذه النصائح مهاراتك في التعامل مع البيانات.
يأمر | وصف |
---|---|
pd.DataFrame(data) | ينشئ DataFrame من قاموس البيانات. |
df[column_name] | الوصول إلى عمود في DataFrame بالاسم. |
df[condition] | يقوم بتصفية DataFrame بناءً على الشرط المطبق على عمود. |
print(selected_rows) | طباعة DataFrame أو مجموعة فرعية منه إلى وحدة التحكم. |
df[df['Age'] >df[df['Age'] > 25] | تحديد الصفوف التي تكون فيها قيم عمود "العمر" أكبر من 25. |
df[df['City'] == 'Chicago'] | يحدد الصفوف التي تكون فيها قيم عمود "المدينة" مساوية لقيمة "شيكاغو". |
فهم اختيار صف DataFrame في الباندا
توضح البرامج النصية المقدمة كيفية تحديد صفوف من DataFrame بناءً على قيم الأعمدة باستخدام مكتبة Pandas في Python. يبدأ البرنامج النصي الأول باستيراد مكتبة Pandas بامتداد import pandas as pd يأمر. ثم يقوم بإنشاء نموذج DataFrame باستخدام قاموس البيانات، والذي يتم تحويله إلى DataFrame باستخدام الملف pd.DataFrame(data) يأمر. يوضح البرنامج النصي بعد ذلك طريقتين لاختيار الصف: تحديد الصفوف التي تكون فيها قيمة عمود "العمر" أكبر من 25 باستخدام df[df['Age'] > 25]، واختيار الصفوف التي تكون فيها قيمة العمود "المدينة" هي "شيكاغو" باستخدام df[df['City'] == 'Chicago']. تتم طباعة DataFrames التي تمت تصفيتها باستخدام print() وظيفة لعرض الصفوف المحددة.
يتبع البرنامج النصي الثاني بنية مماثلة ولكنه يستخدم بيانات ومعايير اختيار مختلفة. يقوم بإنشاء DataFrame بمعلومات المنتج، بما في ذلك أعمدة "المنتج" و"السعر" و"المخزون". يتم تحديد الصفوف التي يكون فيها "السعر" أقل من أو يساوي 200 df[df['Price'] <= 200]، وحيث يكون "المخزون" أكثر من 40 استخدامًا df[df['Stock'] > 40]. الغرض من هذه البرامج النصية هو إظهار كيفية تصفية صفوف DataFrame بناءً على شروط محددة، على غرار كيفية استخدام استعلام SQL لتحديد صفوف من جدول بناءً على قيمة عمود. من خلال فهم هذه الأوامر وتطبيقها، يمكنك معالجة البيانات وتحليلها بكفاءة في DataFrames الخاصة بك.
تحديد الصفوف في DataFrame باستخدام قيم الأعمدة في Pandas
بايثون مع مكتبة الباندا
# Importing the necessary library
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)
تصفية البيانات في DataFrame بناءً على معايير العمود
بايثون مع مكتبة الباندا
# Importing pandas library
import pandas as pd
# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
'Price': [100, 150, 200, 250, 300],
'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)
# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)
# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)
تقنيات متقدمة لاختيار صفوف DataFrame في الباندا
إلى جانب التصفية الأساسية باستخدام الفهرسة المنطقية، يقدم Pandas تقنيات متقدمة لاختيار الصفوف بناءً على قيم الأعمدة. إحدى الطرق القوية هي استخدام query() وظيفة، والتي تسمح لك بتصفية الصفوف باستخدام تعبير استعلام، مما يجعل بناء الجملة أكثر وضوحًا وأكثر سهولة في كثير من الأحيان. على سبيل المثال، بدلا من استخدام df[df['Age'] > 25]، يمكنك كتابة df.query('Age > 25'). تعتبر هذه الطريقة مفيدة بشكل خاص عند التعامل مع شروط أكثر تعقيدًا أو عندما تحتوي أسماء الأعمدة على مسافات. بالإضافة إلى ذلك، isin() تكون الوظيفة مفيدة عندما تريد تصفية الصفوف بناءً على قائمة القيم. على سبيل المثال، لتحديد صفوف حيث تكون قيمة العمود "المدينة" إما "شيكاغو" أو "نيويورك"، يمكنك استخدام df[df['City'].isin(['Chicago', 'New York'])].
تقنية أخرى تنطوي على loc و iloc مفهرسات. ال loc يعتمد المفهرس على التسمية، مما يسمح لك بتحديد الصفوف بناءً على تسميات الصفوف وأسماء الأعمدة، بينما iloc يعتمد على الموقع الصحيح، مما يتيح التحديد حسب أرقام الصفوف والأعمدة. تعتبر هذه المرونة مفيدة بشكل خاص لتحديد الصفوف بناءً على شرط مطبق على عمود مختلف. على سبيل المثال، df.loc[df['Age'] > 25, 'Name'] ستعيد أسماء الأفراد الذين تزيد أعمارهم عن 25 عامًا. تعمل هذه الطرق على توسيع مجموعة الأدوات الخاصة بك للتعامل مع البيانات وتحليلها بكفاءة في Pandas، مما يوفر تعليمات برمجية أكثر قابلية للقراءة والصيانة.
أسئلة وأجوبة شائعة حول تحديد صفوف DataFrame
- كيف يمكنني تحديد الصفوف بناءً على شروط متعددة؟
- يمكنك استخدام ال query() وظيفة أو الجمع بين الشروط مع عوامل التشغيل المنطقية مثل & و |. على سبيل المثال، df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- هل يمكنني تصفية الصفوف بناءً على قائمة القيم؟
- نعم استخدم isin() وظيفة. على سبيل المثال، df[df['City'].isin(['Chicago', 'New York'])].
- ماهو الفرق بين loc و iloc؟
- loc يعتمد على التسمية، بينما iloc يعتمد على الموقع الصحيح. يستخدم loc مع تسميات الصف/العمود و iloc مع مؤشرات الصف/العمود.
- كيف يمكنني تحديد أعمدة معينة أثناء تصفية الصفوف؟
- يمكنك استخدام loc. على سبيل المثال، df.loc[df['Age'] > 25, ['Name', 'City']].
- كيف أتعامل مع القيم المفقودة عند تحديد الصفوف؟
- استخدم ال dropna() وظيفة لإزالة الصفوف ذات القيم المفقودة، أو fillna() لاستبدالها بقيمة محددة.
- هل يمكنني استخدام التعبيرات العادية لتصفية الصفوف؟
- نعم str.contains() وظيفة مع regex=True تسمح لك المعلمة بتصفية الصفوف بناءً على أنماط التعبير العادي. على سبيل المثال، df[df['Name'].str.contains('^A', regex=True)].
- كيف أقوم بتصفية الصفوف بناءً على الفهرس؟
- يمكنك استخدام loc مع اسم الفهرس. على سبيل المثال، df.loc[df.index == 'some_index'].
- ماذا لو كانت أسماء الأعمدة تحتوي على مسافات أو أحرف خاصة؟
- استخدم ال query() الوظيفة التي يمكنها التعامل مع أسماء الأعمدة هذه باستخدام العلامات الخلفية. على سبيل المثال، df.query('`column name` == value').
الأفكار النهائية حول تقنيات اختيار صف DataFrame
يعد تحديد الصفوف من DataFrame بناءً على قيم الأعمدة في Pandas مهارة بالغة الأهمية لمعالجة البيانات. الأساليب المختلفة التي تمت مناقشتها، بما في ذلك الفهرسة المنطقية، query(), isin()والفهرسة المستندة إلى التصنيف والموقع الصحيح باستخدام loc و iloc، توفير أدوات قوية لتصفية البيانات بكفاءة. يتيح إتقان هذه التقنيات تحليلًا أفضل للبيانات وتعليمات برمجية أكثر وضوحًا وأكثر قابلية للصيانة.