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

السؤال

Recommended Posts

  • 0
نشر

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

هذا التخذير يظهر لك بسبب استخدامك لخيار use_inf_as_na في مكتبة pandas وهذا الخيار يستخدم لتعيين القيم اللانهائية (inf) كقيم مفقودة (NaN).و هذا الخيار أصبح قديم وسيتم إزالته في الإصدارات المستقبلية من pandas.

لحل هذه المشكلة يمكنك تحويل القيم اللانهائية إلى NaN بنفسك قبل إجراء أى عمليات عليها.

df.replace([np.inf, -np.inf], np.nan, inplace=True)

 

  • 0
نشر
بتاريخ 3 دقائق مضت قال محمد عاطف17:

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

هذا التخذير يظهر لك بسبب استخدامك لخيار use_inf_as_na في مكتبة pandas وهذا الخيار يستخدم لتعيين القيم اللانهائية (inf) كقيم مفقودة (NaN).و هذا الخيار أصبح قديم وسيتم إزالته في الإصدارات المستقبلية من pandas.

لحل هذه المشكلة يمكنك تحويل القيم اللانهائية إلى NaN بنفسك قبل إجراء أى عمليات عليها.

df.replace([np.inf, -np.inf], np.nan, inplace=True)

 

ايوه بس ده مش كده هياثر علي البيانات ؟

  • 0
نشر
بتاريخ الآن قال Ali Ahmed55:

ايوه بس ده مش كده هياثر علي البيانات ؟

نعم صحيح تعديل القيم من الممكن أن يؤثر على البيانات ولكنك انت بالفعل قد قمت بتفعيل هذا الخيار لهذا يحدث لك هذا التحذير .

هل تستخدم اى من السطرين التاليين في الكود لديك ؟ :

pd.set_option('use_inf_as_na', True)


df.fillna(value=np.nan, use_inf_as_na=True)

إذا كنت تستخدم إحدى هذين الأمرين في الكود فهذا هو سبب التحذير و الكود الذي أرفقته لك يفعل نفس الشئ السابق أى أنني لم أضيف أى شئ جديد لديك في الكود . أى أنه في الكود لديك تم تفعيل خيار تحويل القيم اللانهائية إلى NaN . إذا لم ترد ذلك يجب عليك البحث عن أى من السطرين السابقين وخذفهم.

  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد عاطف17:
pd.set_option('use_inf_as_na', True)


df.fillna(value=np.nan, use_inf_as_na=True)

الا والله ده الكود بتاعي 

import matplotlib.pyplot as plt
import seaborn as sns

# Assuming you have a DataFrame called 'data'

# Set the figure size for better visualization
plt.figure(figsize=(12, 6))

# Plotting the distribution of 'x_1' with Kernel Density Estimate (KDE)
plt.subplot(1, 3, 1)
sns.histplot(data['x_1'], kde=True)
plt.title('Distribution of x_1')

# Plotting the distribution of 'y_1' with KDE
plt.subplot(1, 3, 2)
sns.histplot(data['y_1'], kde=True)
plt.title('Distribution of y_1')

# Plotting the distribution of 'z_1' with KDE
plt.subplot(1, 3, 3)
sns.histplot(data['z_1'], kde=True)
plt.title('Distribution of z_1')

# Adjusts the layout to prevent overlapping of plots
plt.tight_layout()

# Display all plots
plt.show()

 

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

الا والله ده الكود بتاعي 

import matplotlib.pyplot as plt
import seaborn as sns

# Assuming you have a DataFrame called 'data'

# Set the figure size for better visualization
plt.figure(figsize=(12, 6))

# Plotting the distribution of 'x_1' with Kernel Density Estimate (KDE)
plt.subplot(1, 3, 1)
sns.histplot(data['x_1'], kde=True)
plt.title('Distribution of x_1')

# Plotting the distribution of 'y_1' with KDE
plt.subplot(1, 3, 2)
sns.histplot(data['y_1'], kde=True)
plt.title('Distribution of y_1')

# Plotting the distribution of 'z_1' with KDE
plt.subplot(1, 3, 3)
sns.histplot(data['z_1'], kde=True)
plt.title('Distribution of z_1')

# Adjusts the layout to prevent overlapping of plots
plt.tight_layout()

# Display all plots
plt.show()

 

المشكلة تظهر من مكتبة seaborn وهذه التحذيرات تتعلق باستخدام خاصية use_inf_as_na التي أصبحت مهجورة (deprecated) في pandas وستتم إزالتها في إصدارات مستقبلية.

والخاصية use_inf_as_na تعامل القيم اللانهائية (Infinity) كقيم مفقودة (NaN) أي عندما تستخدم seaborn للرسم البياني، فإنه يستخدم هذه الخاصية داخليا، مما يسبب ظهور هذه التحذيرات.

لإزالة هذه التحذيرات وضمان استقرار الكود في المستقبل، قم بإضافة السطرين التاليين في بداية الكود قبل عملية الرسم البياني:

import numpy as np
data = data.replace([np.inf, -np.inf], np.nan)

ليصبح الكود النهائي كالتالي:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

data = data.replace([np.inf, -np.inf], np.nan)

plt.figure(figsize=(12, 6))

plt.subplot(1, 3, 1)
sns.histplot(data['x_1'], kde=True)
plt.title('Distribution of x_1')

plt.subplot(1, 3, 2)
sns.histplot(data['y_1'], kde=True)
plt.title('Distribution of y_1')

plt.subplot(1, 3, 3)
sns.histplot(data['z_1'], kde=True)
plt.title('Distribution of z_1')

# Adjusts the layout to prevent overlapping of plots
plt.tight_layout()

# Display all plots
plt.show()
  • 0
نشر
بتاريخ 49 دقائق مضت قال Ali Ahmed55:

الا والله ده الكود بتاعي 

import matplotlib.pyplot as plt
import seaborn as sns

# Assuming you have a DataFrame called 'data'

# Set the figure size for better visualization
plt.figure(figsize=(12, 6))

# Plotting the distribution of 'x_1' with Kernel Density Estimate (KDE)
plt.subplot(1, 3, 1)
sns.histplot(data['x_1'], kde=True)
plt.title('Distribution of x_1')

# Plotting the distribution of 'y_1' with KDE
plt.subplot(1, 3, 2)
sns.histplot(data['y_1'], kde=True)
plt.title('Distribution of y_1')

# Plotting the distribution of 'z_1' with KDE
plt.subplot(1, 3, 3)
sns.histplot(data['z_1'], kde=True)
plt.title('Distribution of z_1')

# Adjusts the layout to prevent overlapping of plots
plt.tight_layout()

# Display all plots
plt.show()
 

 

 

الجزء الذي يسبب التحذير هو استخدام sns.histplot  حيث  عندما تقوم seaborn بمعالجة البيانات، فإنها تستخدم pandas في الخلفية. و إذا كانت البيانات لديك تحتوي على قيم لانهائية (inf أو -inf)، فإن pandas يحاول التعامل معها باستخدام الخيار use_inf_as_na، والذي أصبح قديما ويبدوا أن البيانات لديك بها قيم لانهائية.

ويتم تحويل القيم اللانهائية إلى NAN لأن القيم اللانهائية (inf) يمكن أن تسبب مشاكل في الحسابات الإحصائية أو الرسوم البيانية لأنها لا تمثل قيما عددية حقيقية. فمثلا إذا كنت تحسب المتوسط أو الانحراف المعياري لعمود يحتوي على inf فقد تحصل على نتائج غير صحيحة.

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

طيب القيمه دي عبار عن اي ؟

وهل تعتبر outliers ؟

القيمة inf أو -inf للقيم السالبة هي اختصار لكلمة "infinity" وتعني ما لا نهاية في الرياضيات وهذا هو رمزها ∞ .

وتأتي تلك القيمة في الرياضيات من عدة حالات فمثلا لو قمنا بالقسمة على صفر فالناتج سيكون ما لا نهاية . أو ضرب أى رقم في عدد ما لانهاية أو log للرقم 0 :

import numpy as np

print(1 / 0)       # خطأ رياضي
print(np.log(0))   # -inf
print(np.exp(1000))

ونعم إن inf تعتبر قيمة شاذة (Outliers) ولكنها نوع خاص من القيم الشاذة. حيث هي دائما ليست قيمة شاذة .

فمثلا إذا كنت تعمل في مجال يتعامل مع قيم ضخمة جدا مثل الفيزياء النظرية أو مجال يوجد به حسابات وأرقام كبيرة فهنا inf لن تعتبر قيمة شاذة لأن الحسابات لديك من المتوقع أن يظهر بها ما لا نهاية .

أما إذا لم تكن inf منطقية في الحالة الذي تعمل فيه مثلا حساب رواتب أو درجات أو في الطب مثل قياس السكر وغيرها . فهنا بالطبع تعتبر قيمة شاذة لأنه ليس من الطبيعي أن تصل تلك الأرقام إلى قيمة ما لا نهاية فلا يوجد مرتب قيمته ما لانهاية ولا يوجد نسبة السكر في الدم ما لانهاية .وهنا في هذه الحالة يجب حذف القيمة لأنها قيمة شاذة.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...