English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مثال على عملية الاتصال في 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
طريقة مختصرة لـ 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)