عند محاولة فهم إطار بيانات كبير في Pandas ، قد تحتاج إلى تقسيمه إلى أعمدة وصفوف. سنعرض في هذا البرنامج التعليمي حالات الاستخدام الأكثر شيوعًا لتقسيم الأعمدة إلى DataFrame.
سنبدأ بإعداد مثالنا DataFrame ، والذي سنفعله عن طريق تشغيل كود Python التالي في بيئتنا المفضلة (للتبسيط ، أستخدم Anaconda و Jupyter Lab).
import pandas as pd # import the pandas library
languages = ({"language": [ "Python", "C-Sharp", "Javascript","PHP"] ,
"avg_difficulty_level": [3, 2, 2, 1],
"avg_salary": [120, 100, 120, 80],
"applications": [10,15,14,20]})
# Now let's convert our dict to a DataFrame
languages = pd.DataFrame.from_dict(languages)
الآن ، دعونا نلقي نظرة على الصفوف الأولى من Dataframe باستخدام طريقة head ().
languages.head()
كما ترى ، هذا إطار بيانات بسيط جدًا سنستخدمه كمثال في هذا المنشور:
| |
لغة |
متوسط الصعوبة |
متوسط الراتب |
التطبيقات |
| 0 |
بايثون |
3 |
120 |
10 |
| 1 |
سي شارب |
2 |
100 |
15 |
| 2 |
جافا سكريبت |
2 |
120 |
14 |
| 3 |
بي أتش بي |
1 |
80 |
20 |
تصفية عمود واحد
سنبدأ بأبسط حالة ، وهي تقسيم عمود واحد فرعيًا من مجموعة البيانات الخاصة بنا. سيؤدي تشغيل الأمر التالي إلى إنشاء كائن سلسلة:
بالاسم / التصنيف
languages["language"]
الإخراج عبارة عن سلسلة:
0 بايثون
1 سي شارب
2 جافا سكريبت
3 PHP
الاسم: اللغة ، النوع: الكائن
type(languages["language"])
pandas.core.series.Series
حسب الفهرس
سيعيد الأمر التالي أيضًا سلسلة تحتوي على العمود الأول
languages.iloc[:,0]
اختيار عدة أعمدة
بالاسم
عند تمرير قائمة الأعمدة ، ستُرجع Pandas DataFrame يحتوي على جزء من البيانات.
languages[["language", "applications"]]
| |
لغة |
التطبيقات |
| 0 |
بايثون |
10 |
| 1 |
سي شارب |
15 |
| 2 |
جافا سكريبت |
14 |
| 3 |
بي أتش بي |
20 |
حسب التسمية (مع loc)
df.loc[:,["language","applications"]]
ستكون النتيجة متشابهة.
حسب الفهرس
الآن دعنا نسترجع أعمدة متعددة باستخدام الفهرس:
languages.iloc[: ,[0,3]]
| |
لغة |
التطبيقات |
| 0 |
بايثون |
10 |
| 1 |
سي شارب |
15 |
| 2 |
جافا سكريبت |
14 |
| 3 |
بي أتش بي |
20 |
حسب الشرط
في هذه الحالة ، سنعرض فقط الأعمدة التي يتطابق اسمها مع تعبير معين. سنستخدم طريقة التصفية سهلة الاستخدام :
languages.filter(axis = 1, like="avg")
ملحوظات:
- يمكننا أيضًا التصفية باستخدام تعبير عادي معين (regex).
- يمكننا تطبيق محور المعامل = 0 للتصفية حسب قيمة الصف المحددة.
تصفية صفوف محددة حسب الشرط
إليك طريقة واضحة ومباشرة لتقسيم DataFrame وفقًا لقيمة صف:
languages[(languages["applications"] > 15)]
لدينا نتيجة واحدة فقط:
languages[(languages["applications"] > 15)]
| |
لغة |
متوسط الصعوبة |
متوسط الراتب |
التطبيقات |
| 3 |
بي أتش بي |
1 |
80 |
20 |