يقول مؤلف المقال ، الذي ننشر ترجمته اليوم ، إنه عندما اكتشف أساليب مكتبة Pandas التي يريد التحدث عنها هنا ، شعر بأنه مبرمج غير كفء تمامًا. لماذا؟ الحقيقة هي أنه عندما كتب الكود من قبل ، كان كسولًا جدًا للنظر في محرك البحث ومعرفة ما إذا كانت هناك بعض الطرق الفعالة لحل بعض المشاكل. ونتيجة لذلك ، لم يكن يعرف حتى بوجود عدد من طرق الباندا المفيدة للغاية. دون استخدام هذه الأساليب ، كان مع ذلك قادرًا على تنفيذ المنطق الضروري ، لكن هذا تطلب منه عدة ساعات من العمل ، مما جعله عصبيًا. وبالطبع ، على طول الطريق ، كتب مجموعة من التعليمات البرمجية غير الضرورية. أعد هذا المقال لأولئك الذين لا يريدون أن يكونوا في وضعه.

أساليب Idxmin () و idxmax ()
لقد
كتبت بالفعل عن
idxmin()
و
idxmax()
، لكن إذا لم أتحدث عنها هنا ، فلن يكون من السهل عليك فهم ما سنناقشه بعد ذلك.
هذه الطرق ، إذا وصفتها باختصار ، فارجع الفهرس (موضع المؤشر) للسجل المطلوب. افترض أنني قمت بإنشاء كائن
Series
Pandas التالي.
x = pd.Series ([ 1, 3, 2, 8, 124, 4, 2, 1 ])
أحتاج إلى العثور على مؤشر الحد الأدنى والحد الأقصى للعنصر. بالطبع ، ليس من الصعب معرفة ذلك فقط من خلال النظر في وصف الكائن ، ولكن في المشروعات الحقيقية لا تفي أبدًا (مثل هذا بالضبط - "أبدًا") بمجموعات البيانات التي تتكون من هذا العدد الصغير من العناصر.
ما يجب القيام به استخدم
idxmin()
و
idxmax()
. إليك ما يبدو عليه:
باستخدام هذه الطرق ، يجب ألا تنسى أنها تُرجع فهرس التواجد الأول للقيمة الدنيا أو القصوى.
طريقة Ne ()
كانت طريقة
ne()
اكتشافًا كبيرًا لي. منذ بعض الوقت ، كنت أعمل مع سلسلة زمنية للبيانات واجهت مشكلة عندما كانت الملاحظات
n
الأولى هي 0.
تخيل أنك اشتريت شيئًا ما ، لكنك لم تستهلكه لفترة معينة من الزمن. ما اشتريته تحت تصرفك ، لكن بما أنك لا تستخدمه ، فإن مستوى استهلاكه في تاريخ معين هو 0. وبما أنني كنت مهتمًا بالبيانات المتعلقة بالاستهلاك التي تم الحصول عليها عند الاستخدام الفعلي لما بدأ " اشترى "، اتضح أن طريقة
ne()
كانت بالضبط ما أحتاجه.
النظر في السيناريو التالي. لدينا كائن Pandas
DataFrame
، والذي يحتوي على نتائج بعض الملاحظات ، والتي في أعلى القائمة ، يتم تمثيلها بقيم 0.
df = pd.DataFrame()
لن تُرجع الطريقة
ne()
True
إلا إذا كانت القيمة الحالية ليست هي القيمة المحددة عند استدعاء هذه الطريقة (على سبيل المثال ، عندما يتم استدعاؤها ، يمكن تحديد القيمة 0) ، وإلا فإنها ستُرجع
False
:
df['X'].ne(0)
هذه الطريقة وحدها لا يمكن أن تكون مفيدة بشكل خاص. تذكر الآن كيف قلت في بداية المقالة أنه لفهم المقالة ، يلزمك التعرف على طريقة
idxmax()
. لم أكن أمزح بعد ذلك. يمكنك إرفاق
idxmax()
بالمكالمة
ne()
أعلاه. والنتيجة هي ما يلي:
df['X'].ne(0).idxmax()
هذا يخبرنا أن أول نتيجة مراقبة غير صفرية هي في الموضع 6. مرة أخرى ، قد لا يبدو هذا مثل هذا الاكتشاف المهم. ولكن الشيء الأكثر أهمية هنا هو أنه يمكن استخدام هذه المعلومات لتحديد مجموعة فرعية من كائن
DataFrame
ولعرض فقط تلك القيم التي تظهر بدءًا من الموضع الذي تم اكتشافه:
df.loc[df['X'].ne(0).idxmax():]
هذه التقنية مفيدة للغاية في العديد من المواقف التي يتعين عليك فيها التعامل مع بيانات السلاسل الزمنية.
طرق Nsmallest () و nlargest ()
أظن أنه فقط بعد رؤية أسماء هذه الأساليب ، يمكنك تخمين الغرض منها. افترض أنني قمت بإنشاء
DataFrame
التالية:
df = pd/DataFrame({ 'Name': ['Bob', 'Mark', 'Steph', 'Jess', 'Becky'], 'Points': [55, 98, 46, 77, 81] })
لجعله أكثر إثارة للاهتمام ، افترض أن هذه هي نتائج الاختبار الذي اجتازه بعض الطلاب. نريد أن نجد ثلاثة طلاب نجحوا في الاختبار:
df.nsmallest(3, 'Points')
أو - معرفة من هو في المراكز الثلاثة الأولى:
df.nlargest(3, 'Points')
هذه الطرق هي بدائل جيدة جدًا لطرق مثل
sort_values()
.
النتائج
هنا نظرنا إلى بعض طرق Pandas المفيدة. بالنسبة لأولئك الذين يعرفونهم ، قد يبدو تطبيقهم أمرًا طبيعيًا تمامًا ، ولكن بالنسبة لأولئك الذين تعلموا للتو ، قد يبدو وكأنه اكتشاف حقيقي. نأمل أن خدمتك جيدا.
أعزائي القراء! تعرف على بعض طرق الباندا المفيدة التي قد لا يعرفها الآخرون؟
