البرنامج التعليمي لـ Python Pandas: DataFrame، النطاق الزمني، استخدام Pandas

ما هو الباندا بايثون؟

الباندا هي مكتبة مفتوحة المصدر تسمح لك بمعالجة البيانات وتحليلها في بايثون. تقدم مكتبة Pandas Python معالجة البيانات وعمليات البيانات للجداول الرقمية والسلاسل الزمنية. توفر الباندا طريقة سهلة لإنشاء البيانات ومعالجتها وتعديلها. إنه مبني على NumPy، مما يعني أنه يحتاج إلى NumPy ليعمل.

لماذا استخدام الباندا؟

يستفيد علماء البيانات من Pandas في Python لمتابعتهاwing مزايا:

  • يتعامل بسهولة مع البيانات المفقودة
  • ويستخدم سلسلة لبنية البيانات أحادية البعد و DataFrame لبنية البيانات متعددة الأبعاد
  • يوفر طريقة فعالة لتقسيم البيانات
  • فهو يوفر طريقة مرنة لدمج البيانات أو تسلسلها أو إعادة تشكيلها
  • يتضمن أداة سلسلة زمنية قوية للعمل معها

باختصار، 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 لها متابعةwing المعلمات:

  • البيانات: يمكن أن تكون قائمة أو قاموسًا أو قيمة عددية
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 بقيمة مفقودة للصفوف الثالثة. لاحظ أن القيم المفقودة في بايثون تمت الإشارة إلى "NaN". يمكنك استخدام numpy لإنشاء القيمة المفقودة: np.nan بشكل مصطنع

pd.Series([1,2,np.nan])

الناتج

0    1.0
1    2.0
2    NaN
dtype: float64

إنشاء إطار بيانات الباندا

الآن في هذا البرنامج التعليمي Pandas DataFrame، سوف نتعلم كيفية إنشاء إطار بيانات Python Pandas:

يمكنك تحويل مصفوفة 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 Pandas:

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]