اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

plt.hist من  مكتبة Matplotlib ترسم الهيستوغرام حسب البيانات التي تُمرر إليها مباشرة، ولو البيانات تحتوي على قيم inf أو -inf، فإن plt.hist ستفشل وترمي خطأ ValueError لأنها لا تستطيع التعامل مع تلك القيم غير المحدودة بشكل افتراضي، وستحتاج إلى تنظيف البيانات يدويًا قبل تمريرها من خلال استبعاد inf و-inf باستخدام numpy بواسطة np.isfinite.

أما sns.histplot من مكتبة Seaborn فهي تعتمد على مكتبة Matplotlib ولكنها توفر طبقة إضافية من المعالجة التلقائية للبيانات، فبشكل افتراضي، sns.histplot تتعامل مع القيم inf و-inf عن طريق تجاهلها بمعنى أنها تستبعد  القيم تلقائيًا من الرسم دون رمي خطأ، وذلك بفضل الاعتماد على مكتبة numpy وpandas في المعالجة الداخلية، بالتالي أكثر مرونة عند التعامل مع بيانات غير نظيفة مقارنة بـ plt.hist.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

الفرق الرئيسي بين sns.histplot من مكتبة seaborn و plt.hist من مكتبة matplotlib في التعامل مع القيم اللانهائية (inf و -inf) يكمن في كيفية معالجة هذه القيم عند التعامل مع الرسوم البيانية.

حيث في plt.hist من مكتبة matplotlib لا يتعامل بشكل خاص مع القيم اللانهائية inf و -inf. إذا كانت البيانات تحتوي على هذه القيم فمن الممكن أن يحدث الخطأ التالي :ValueError: range parameter must be finite لانها لا تستطيع التعامل مع القيم اللانهائية إفتراضيا .

أما sns.histplot من مكتبة seaborn فهي تتعامل بشكل أفضل مع القيم اللانهائية.حيث إذا كانت البيانات تحتوي على inf أو -inf فسيتم استبعادها تلقائيا من الرسم البياني دون أن تؤثر على بقية البيانات.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

الفرق الرئيسي بين sns.histplot و plt.hist ينقسم كالتالي

أولاً sns.histplot (من مكتبة Seaborn)

  • يتعامل مع القيم اللانهائية بشكل أفضل وأكثر مرونة 
  • يتجاهل القيم inf و -inf تلقائيًا عند رسم المخطط
  • لا يسبب خطأ عند وجود هذه القيم في البيانات

بينما plt.hist (من مكتبة Matplotlib)

  • يحاول تضمين القيم اللانهائية في المخطط
  • قد يؤدي إلى أخطاء أو مخططات غير مفيدة عند وجود قيم inf أو -inf

ولذلك عند التعامل مع بيانات تحتوي على قيم لانهائية، يُفضل استخدام sns.histplot أو معالجة البيانات مسبقًا لإزالة هذه القيم قبل استخدام plt.hist.

  • 0
نشر

تمام جدا

الف شكراا جدا لحضرتكم

جزاكم الله كل خير

بتاريخ 14 دقائق مضت قال محمد عاطف17:

وعليكم السلام ورحمة الله وبركاته.

الفرق الرئيسي بين sns.histplot من مكتبة seaborn و plt.hist من مكتبة matplotlib في التعامل مع القيم اللانهائية (inf و -inf) يكمن في كيفية معالجة هذه القيم عند التعامل مع الرسوم البيانية.

حيث في plt.hist من مكتبة matplotlib لا يتعامل بشكل خاص مع القيم اللانهائية inf و -inf. إذا كانت البيانات تحتوي على هذه القيم فمن الممكن أن يحدث الخطأ التالي :ValueError: range parameter must be finite لانها لا تستطيع التعامل مع القيم اللانهائية إفتراضيا .

أما sns.histplot من مكتبة seaborn فهي تتعامل بشكل أفضل مع القيم اللانهائية.حيث إذا كانت البيانات تحتوي على inf أو -inf فسيتم استبعادها تلقائيا من الرسم البياني دون أن تؤثر على بقية البيانات.

طيب القيمه دي تعتبر inf ,  -inf

         ID resname  resid        x_1        y_1        z_1           x_2  \
0   R1107_1       G      1  -5.499000   8.520000   8.605000 -1.000000e+18   
1   R1107_2       G      2  -5.826000  10.453000  14.010000 -1.000000e+18   
2   R1107_3       G      3  -5.849000  14.768000  17.584999 -1.000000e+18   
3   R1107_4       G      4  -5.784000  19.985001  18.666000 -1.000000e+18   
4   R1107_5       G      5  -5.755000  25.533001  17.132999 -1.000000e+18   
5   R1107_6       C      6  -6.227000  30.093000  13.965000 -1.000000e+18   
6   R1107_7       C      7  -9.016000  37.029999  11.306000 -1.000000e+18   
7   R1107_8       A      8  -9.026000  31.554001   8.725000 -1.000000e+18   
8   R1107_9       C      9 -13.912000  30.908001   8.347000 -1.000000e+18   
9  R1107_10       A     10 -22.273001  33.250999   7.105000 -1.000000e+18   

            y_2           z_2           x_3  ...          z_37          x_38  \
0 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
1 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
2 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
3 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
4 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
5 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
6 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
7 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
8 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   
9 -1.000000e+18 -1.000000e+18 -1.000000e+18  ... -1.000000e+18 -1.000000e+18   

           y_38          z_38          x_39          y_39          z_39  \
0 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
1 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
2 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
3 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
4 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
5 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
6 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
7 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
8 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   
9 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18 -1.000000e+18   

           x_40          y_40          z_40  
0 -1.000000e+18 -1.000000e+18 -1.000000e+18  
1 -1.000000e+18 -1.000000e+18 -1.000000e+18  
2 -1.000000e+18 -1.000000e+18 -1.000000e+18  
3 -1.000000e+18 -1.000000e+18 -1.000000e+18  
4 -1.000000e+18 -1.000000e+18 -1.000000e+18  
5 -1.000000e+18 -1.000000e+18 -1.000000e+18  
6 -1.000000e+18 -1.000000e+18 -1.000000e+18  
7 -1.000000e+18 -1.000000e+18 -1.000000e+18  
8 -1.000000e+18 -1.000000e+18 -1.000000e+18  
9 -1.000000e+18 -1.000000e+18 -1.000000e+18  

[10 rows x 123 columns]

 

  • 0
نشر
بتاريخ 9 دقائق مضت قال Ali Ahmed55:

طيب القيمه دي تعتبر inf ,  -inf

 

 

إن القيم التي تظهر لك ك -1.000000e+18 لا تعتبر قيمة لانهائية (inf أو -inf) بل هي مجرد قيم عددية كبيرة جدا ولكنها سالبة و هذه القيم تمثل أرقاما محدودة أى يمكن حسابها ولكنها كبيرة جدا من حيث الحجم. 

أما ال inf الانهائية الموجبة تمثل قيمة أكبر من أي رقم نعرفه و يمكن تمثيله أى أننا لا نعرف ما هو أخر رقم نستطيع الوصول له لهذا سميت بلانهائية.

و ال -inf الانهائية السالبة تمثل قيمة أصغر من أي رقم نعرفه و يمكن تمثيله في النظام أى أننا لا نعرف ما هو أقل وأصغر رقم نستطيع الوصول له لهذا سميت بلانهائية سالبة.

ويوجد الدالة isinf للتحقق من أن القيمة هي لانهائية أم لا ويمكنك تنفيذ الكود التالي لمعرفة الفرق بين القيمة اللانهائية والرقم الكبير :

import numpy as np
import pandas as pd

print(np.inf)
print(np.isinf(np.inf))
print(-1.000000e+18)
print(np.isinf(-1.000000e+18))

# ما سيتم طباعته
# inf
# True
# -1e+18
# False

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...