English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

التركيب في Pandas

مثال على عملية الاتصال في Pandas

يقدم Pandas مجموعة متنوعة من الوظائف التي يمكن من خلالها جمع Series،DataFrame وPanel بسهولة.

 pd.concat(objs,axis=0,join='outer',join_axes=None,
 ignore_index=False)

objs − هذا هو سلسلة Series أو خريطة، أو DataFrame أو جسم Panel. axis − {0،1،...}،افتراضياً هي 0. هذا هو المحور الذي سيتم توصيله. join − {'inner'،'outer'}،افتراضياً هي 'outer'. كيفية التعامل مع مؤشرات الأطراف الأخرى. الخارجي هو الاتحاد، الداخلي هو التقاطع. ignore_index − قيمة منطقية، افتراضياً هي False. إذا كانت True، فلا تستخدم قيم المؤشر في المحور المتصل. سيتم تسمية المحور بالرقم 0،...،n-1. join_axes − قائمة من فئات المؤشرات. تستخدم لفئات المؤشرات المحددة للأطراف الأخرى (n-1) وليس لتنفيذ منطق الإعداد الداخلي/الخارجي.

مشاركة الأجسام

دوره CONCAT من وظائف الاتصال على طول المحور. دعونا نخلق مختلف الأجسام ونقوم بالتواصل.

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(pd.concat([one,two])))

النتائج التشغيلية كالتالي:

    Marks_scored                 Name         subject_id
1                                         98                 Alex                                 sub1
2                                         90                 Amy                                 sub2
3                                         87         Allen                                 sub4
4                                         69         Alice                                 sub6
5                                         78         Ayoung                                 sub5
1                                         89         Billy                                 sub2
2                                         80         Brian                                 sub4
3                                         79         Bran                                 sub3
4                                         97         Bryce                                 sub6
5                                         88         Betty                                 sub5

افترض أننا نريد ربط مفتاح معين بكل جزء من DataFrame المقطوع. يمكننا القيام بذلك باستخدام معامل keys -

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],keys=['x','y']))

النتائج التشغيلية كالتالي:

x         1         98         Alex         sub1
   2         90         Amy                 sub2
   3         87         Allen         sub4
   4         69         Alice         sub6
   5         78         Ayoung         sub5
y         1         89         Billy         sub2
   2         80         Brian         sub4
   3         79         Bran         sub3
   4         97         Bryce         sub6
   5         88         Betty         sub5

فهرس النتائج مكرر؛ كل فهرس مكرر.

إذا كان يجب على نتائج العنصر اتباع فهرسه الخاص به، فيجب تعيين ignore_index إلى True.

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],keys=['x','y'],ignore_index=True))

النتائج التشغيلية كالتالي:

    Marks_scored                 Name         subject_id
0                                         98                 Alex                                 sub1
1                                 90         Amy                                 sub2
2                                 87         Allen                                 sub4
3                                 69         Alice                                 sub6
4                                 78         Ayoung                                 sub5
5                                 89         Billy                                 sub2
6                                 80         Brian                                 sub4
7                                 79         Bran                                 sub3
8                                 97         Bryce                                 sub6
9                                 88         Betty                                 sub5

الاحتياط، يتم تغيير المؤشر بشكل كامل ويتم تغطية المفاتيح أيضًا.

إذا كنت بحاجة إلى إضافة كائنين على المحور = 1، فإنه سيتم إضافة عمود جديد.

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(pd.concat([one,two],axis=1))

النتائج التشغيلية كالتالي:

    Marks_scored    Name    subject_id    Marks_scored    Name    subject_id
1                                 98         Alex                                 sub1                                 89                                 Billy                                 sub2
2                                 90         Amy                                 sub2                                 80                                 Brian                                 sub4
3                                 87         Allen                                 sub4                                 79                                 Bran                                 sub3
4                                 69         Alice                                 sub6                                 97                                 Bryce                                 sub6
5                                 78         Ayoung                                 sub5                                 88                                 Betty                                 sub5

استخدام append للتواصل

طريقة مختصرة لـ Concat هي استخدام أساليب append على Series و DataFrame. هذه الأساليب في الواقع قديمة أكثر من concat. إنها تربط على المحور = 0، أي على المؤشر-

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(one.append(two))

النتائج التشغيلية كالتالي:

    Marks_scored    Name  subject_id
1           98      Alex      sub1
2           90       Amy      sub2
3           87     Allen      sub4
4           69     Alice      sub6
5           78    Ayoung      sub5
1           89     Billy      sub2
2           80     Brian      sub4
3           79      Bran      sub3
4           97     Bryce      sub6
5           88     Betty      sub5

该附加功能可以采取多个对象,以及-

 import pandas as pd
 one = pd.DataFrame({
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5'],
    'Marks_scored':[98,90,87,69,78]},
    index=[1,2,3,4,5])
 two = pd.DataFrame({
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
    'subject_id':['sub2','sub4','sub3','sub6','sub5'],
    'Marks_scored':[89,80,79,97,88]},
    index=[1,2,3,4,5])
 print(one.append([two,one,two]))

النتائج التشغيلية كالتالي:

    Marks_scored    Name    subject_id
1                                 98                                 Alex                                 sub1
2                                 90                                 Amy                                 sub2
3                                 87                                 Allen                                 sub4
4                                 69         Alice                                 sub6
5                                 78         Ayoung                                 sub5
1                                 89         Billy                                 sub2
2                                 80         Brian                                 sub4
3                                 79         Bran                                 sub3
4                                 97         Bryce                                 sub6
5                                 88         Betty                                 sub5
1                                 98                                 Alex                                 sub1
2                                 90                                 Amy                                 sub2
3                                 87                                 Allen                                 sub4
4                                 69         Alice                                 sub6
5                                 78         Ayoung                                 sub5
1                                 89         Billy                                 sub2
2                                 80         Brian                                 sub4
3                                 79         Bran                                 sub3
4                                 97         Bryce                                 sub6
5                                 88         Betty                                 sub5

سلسلة الوقت

يقدم Pandas أداة قوية لمعالجة بيانات السلسلة الزمنية، خاصة في مجال المالية. عند معالجة بيانات السلسلة الزمنية، نحن نواجه عادةً الحالات التالية:

إنتاج الترتيب الزمني تحويل سلسلة الوقت إلى ترددات مختلفة

يقدم مجموعة من الأدوات المترابطة بشكل متماسك واستقلالية لتنفيذ المهام المذكورة أعلاه.

الحصول على الوقت الحالي

datetime.now()نقدم لك التاريخ والوقت الحالي.

 import pandas as pd
 اطبع (pd.datetime.now())

النتائج التشغيلية كالتالي:

2017-05-11 06:10:13.393147

إنشاء توقيت

بيانات التوقيتات هي نوع أساسي من بيانات السلسلة الزمنية التي تربط القيم بالأوقات النقاط. بالنسبة لأجسام Pandas، هذا يعني استخدام النقاط الزمنية. دعونا نأخذ مثالًا -

import pandas as pd
اطبع (pd.Timestamp('2017-03-01'))

النتائج التشغيلية كالتالي:

2017-03-01 00:00:00

يمكن أيضًا تحويل الأعداد الصحيحة أو القيم الرقمية العشر. القيمة الافتراضية هي النانو ثانية ( لأنها طريقة تخزين التوقيتات). ولكن، عادة ما يتم تخزين الأزمنة في وحدة أخرى يمكن تحديدها.

import pandas as pd
اطبع (pd.Timestamp(1587687255, unit='s'))

النتائج التشغيلية كالتالي:

 2020-04-24 00:14:15

إنشاء نطاق الوقت

import pandas as pd
اطبع (pd.date_range("11:00", "13:30", freq="30min").time)

النتائج التشغيلية كالتالي:

 [datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
 datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)

تغيير تردد الوقت

import pandas as pd
اطبع (pd.date_range("11:00", "13:30", freq="H").time)

النتائج التشغيلية كالتالي:

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]

تحويل إلى وقت

لتحويل سلسلة أو قائمة مشابهة لعدادات التواريخ، يمكنك استخدام دالة to_datetime. عند التمرير، سيتم العودة إلى سلسلة (تحتوي على نفس المؤشر) بينما سيتم تحويل القوائم المشابهة إلىDatetimeIndex. انظر المثال التالي-

import pandas as pd
print(pd.to_datetime(pd.Series(['Jul 31, 2009', '2010-01-10', None])))

النتائج التشغيلية كالتالي:

 0 2009-07-31
 1 2010-01-10
 2 NaT
 dtype: datetime64[ns]

NaT تعني ليس وقتًا (مثل NaN)

لنأخذ مثالاً آخر.

import pandas as pd
print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))

النتائج التشغيلية كالتالي:

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)