Python البرنامج التعليمي لـ Pandas: DataFrame، النطاق الزمني، استخدام Pandas
ما هو الباندا Python?
الباندا هي مكتبة مفتوحة المصدر تسمح لك بمعالجة البيانات وتحليلها Python. الباندا Python توفر المكتبة معالجة البيانات وعمليات البيانات للجداول الرقمية والسلاسل الزمنية. توفر Pandas طريقة سهلة لإنشاء البيانات ومعالجتها ومعالجتها. تم بناؤها على NumPy، مما يعني أنها تحتاج إلى NumPy للعمل.
لماذا استخدام الباندا؟
يستفيد علماء البيانات من الباندا في Python لمميزاتها التالية:
- يتعامل بسهولة مع البيانات المفقودة
- ويستخدم سلسلة لبنية البيانات أحادية البعد و DataFrame لبنية البيانات متعددة الأبعاد
- يوفر طريقة فعالة لتقسيم البيانات
- فهو يوفر طريقة مرنة لدمج البيانات أو تسلسلها أو إعادة تشكيلها
- يتضمن أداة سلسلة زمنية قوية للعمل معها
باختصار، Pandas هي مكتبة مفيدة في تحليل البياناتيمكن استخدامه لإجراء معالجة البيانات وتحليلها. توفر Pandas هياكل بيانات قوية وسهلة الاستخدام، بالإضافة إلى الوسائل اللازمة لإجراء العمليات بسرعة على هذه الهياكل.
كيفية تثبيت الباندا؟
الآن في هذا Python برنامج Pandas التعليمي، سوف نتعلم كيفية تثبيت Pandas فيه Python.
لتثبيت مكتبة Pandas، يرجى الرجوع إلى البرنامج التعليمي الخاص بنا كيفية تثبيت TensorFlow. يتم تثبيت Pandas بشكل افتراضي. في حالة التحكم عن بعد، لم يتم تثبيت الباندا-
يمكنك تثبيت الباندا باستخدام:
- أناكوندا: تثبيت كوندا -c أناكوندا باندا
- In Jupyter دفتر :
import sys !conda install --yes --prefix {sys.prefix} pandas
ما هو إطار بيانات الباندا؟
إطار بيانات الباندا عبارة عن مصفوفة ثنائية الأبعاد تحتوي على بنية بيانات مصنفة تحتوي على أنواع أعمدة مختلفة. يعد DataFrame طريقة قياسية لتخزين البيانات بتنسيق جدولي، مع صفوف لتخزين المعلومات وأعمدة لتسمية المعلومات. على سبيل المثال، يمكن أن يكون السعر اسم عمود ويمكن أن تكون 2,3,4،XNUMX،XNUMX قيم السعر.
إطار البيانات معروف جيدًا من قبل الإحصائيين وغيرهم من ممارسي البيانات.
أسفل صورة لإطار بيانات الباندا:
ما هي السلسلة؟
السلسلة عبارة عن بنية بيانات أحادية البعد. يمكن أن تحتوي على أي بنية بيانات مثل عدد صحيح، وتعويم، وسلسلة. يكون ذلك مفيدًا عندما تريد إجراء عملية حسابية أو إرجاع مصفوفة أحادية البعد. السلسلة، حسب التعريف، لا يمكن أن تحتوي على أعمدة متعددة. بالنسبة للحالة الأخيرة، يرجى استخدام بنية إطار البيانات.
Python تحتوي سلسلة Pandas على المعلمات التالية:
- البيانات: يمكن أن تكون قائمة أو قاموسًا أو قيمة عددية
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
يمكنك إضافة الفهرس باستخدام ملف Index. يساعد على تسمية الصفوف. يجب أن يكون الطول مساويا لحجم العمود
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
أدناه، يمكنك إنشاء سلسلة Pandas بقيمة مفقودة للصفوف الثالثة. لاحظ أن القيم المفقودة في Python تمت الإشارة إلى "NaN". يمكنك استخدام numpy لإنشاء القيمة المفقودة: np.nan بشكل مصطنع
pd.Series([1,2,np.nan])
الناتج
0 1.0 1 2.0 2 NaN dtype: float64
إنشاء إطار بيانات الباندا
الآن في هذا البرنامج التعليمي Pandas DataFrame، سوف نتعلم كيفية الإنشاء Python إطار بيانات الباندا:
يمكنك تحويل مصفوفة numpy إلى إطار بيانات الباندا باستخدام pd.Dataframe(). والعكس ممكن أيضا. لتحويل إطار بيانات الباندا إلى مصفوفة، يمكنك استخدام np.array()
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
يمكنك أيضًا استخدام القاموس لإنشاء إطار بيانات Pandas.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
العمر | الاسم | |
---|---|---|
0 | 30 | جون |
1 | 40 | سميث |
بيانات نطاق الباندا
تتمتع Pandas بواجهة برمجة تطبيقات ملائمة لإنشاء نطاق من التاريخ. دعونا نتعلم مع Python أمثلة الباندا:
pd.data_range(التاريخ، الفترة، التكرار):
- المعلمة الأولى هي تاريخ البدء
- المعلمة الثانية هي عدد الفترات (اختياري إذا تم تحديد تاريخ الانتهاء)
- المعلمة الأخيرة هي التكرار: اليوم: 'D'، الشهر: 'M' والسنة: 'Y.'
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
الناتج
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
الناتج
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
فحص البيانات
يمكنك التحقق من رأس أو ذيل مجموعة البيانات باستخدام head()، أو tail() مسبوقًا باسم إطار بيانات الباندا كما هو موضح في مثال Pandas أدناه:
الخطوة 1) إنشاء تسلسل عشوائي مع نمباي. يحتوي التسلسل على 4 أعمدة و6 صفوف
random = np.random.randn(6,4)
الخطوة 2) ثم تقوم بإنشاء إطار بيانات باستخدام الباندا.
استخدم date_m كمؤشر لإطار البيانات. وهذا يعني أنه سيتم إعطاء كل صف "اسمًا" أو فهرسًا يتوافق مع التاريخ.
وأخيرًا، قم بتسمية الأعمدة الأربعة التي تحتوي على أعمدة الوسيطات
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
الخطوة 3) استخدام وظيفة الرأس
df.head(3)
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
الخطوة 4) استخدام وظيفة الذيل
df.tail(3)
A | B | C | D | |
---|---|---|---|---|
2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
الخطوة 5) من الممارسات الممتازة للحصول على فكرة عن البيانات استخدام description() . يوفر التعداد والمتوسط والقياسي والحد الأدنى والحد الأقصى والنسبة المئوية لمجموعة البيانات.
df.describe()
A | B | C | D | |
---|---|---|---|---|
عد | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
تعني | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
الأمراض المنقولة جنسيا | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
دقيقة | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
ماكس | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
بيانات الشريحة
النقطة الأخيرة من هذا Python يدور برنامج Pandas التعليمي حول كيفية تقطيع إطار بيانات الباندا.
يمكنك استخدام اسم العمود لاستخراج البيانات في عمود معين كما هو موضح في مثال Pandas أدناه:
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
لتحديد عدة أعمدة، يلزمك استخدام القوسين مرتين، [[..,..]]
الزوج الأول من الأقواس يعني أنك تريد تحديد الأعمدة، أما الزوجان الثانيان من الأقواس فيشيران إلى الأعمدة التي تريد إرجاعها.
df[['A', 'B']].
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
يمكنك تقطيع الصفوف باستخدام:
يقوم الكود أدناه بإرجاع الصفوف الثلاثة الأولى
### using a slice for row df[0:3]
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
تُستخدم دالة loc لتحديد الأعمدة حسب الأسماء. وكالمعتاد، تشير القيم الموجودة قبل الفاصلة إلى الصفوف، وتشير بعدها إلى العمود. تحتاج إلى استخدام الأقواس لتحديد أكثر من عمود.
## Multi col df.loc[:,['A','B']]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
هناك طريقة أخرى لتحديد صفوف وأعمدة متعددة في Pandas. يمكنك استخدام iloc[]. تستخدم هذه الطريقة الفهرس بدلاً من اسم الأعمدة. يُرجع الكود أدناه نفس إطار البيانات كما هو مذكور أعلاه
df.iloc[:, :2]
A | B | |
---|---|---|
2030-01-31 | -0.168655 | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | -0.940617 |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | -1.547836 | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
إسقاط عمود
يمكنك إسقاط الأعمدة باستخدام pd.drop()
df.drop(columns=['A', 'C'])
B | D | |
---|---|---|
2030-01-31 | 0.587590 | -0.031827 |
2030-02-28 | 0.998266 | 0.475975 |
2030-03-31 | -0.940617 | -0.341532 |
2030-04-30 | 0.507350 | -0.296035 |
2030-05-31 | 1.276558 | 0.523017 |
2030-06-30 | 1.572085 | -0.594772 |
سلسلة
يمكنك ربط اثنين من DataFrame في Pandas. يمكنك استخدام pd.concat()
أولاً، تحتاج إلى إنشاء إطاري بيانات. جيد جدًا حتى الآن، فأنت على دراية بإنشاء إطار البيانات
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
وأخيرًا، قمت بربط إطاري DataFrame
df_concat = pd.concat([df1,df2]) df_concat
العمر | الاسم | |
---|---|---|
0 | 25 | جون |
1 | 30 | سميث |
2 | 50 | بول |
3 | 26 | ادم |
4 | 11 | سميث |
Drop_duplicates
إذا كانت مجموعة البيانات يمكن أن تحتوي على معلومات مكررة، فمن السهل استبعاد الصفوف المكررة. يمكنك أن ترى أن `df_concat` يحتوي على ملاحظة مكررة، ويظهر `Smith` مرتين في عمود `name`.
df_concat.drop_duplicates('name')
العمر | الاسم | |
---|---|---|
0 | 25 | جون |
1 | 30 | سميث |
2 | 50 | بول |
3 | 26 | ادم |
فرز القيم
يمكنك فرز القيمة باستخدام قيم_الفرز
df_concat.sort_values('Age')
العمر | الاسم | |
---|---|---|
4 | 11 | سميث |
0 | 25 | جون |
3 | 26 | ادم |
1 | 30 | سميث |
2 | 50 | بول |
إعادة التسمية: تغيير الفهرس
يمكنك استخدام إعادة التسمية لإعادة تسمية عمود في Pandas. القيمة الأولى هي اسم العمود الحالي والقيمة الثانية هي اسم العمود الجديد.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl | لقب | |
---|---|---|
0 | 25 | جون |
1 | 30 | سميث |
2 | 50 | بول |
3 | 26 | ادم |
4 | 11 | سميث |
الملخص
فيما يلي ملخص للطريقة الأكثر فائدة لعلم البيانات باستخدام Pandas
بيانات الاستيراد | read_csv |
---|---|
إنشاء سلسلة | مسلسلات |
إنشاء إطار البيانات | DataFrame |
إنشاء نطاق زمني | DATE_RANGE |
رأس العودة | رئيس |
ذيل العودة | ذيل |
وصف | وصف |
شريحة باستخدام الاسم | اسم البيانات["اسم العمود"] |
شريحة باستخدام الصفوف | اسم_البيانات[0:5] |