Pandas هي مكتبة قوية في بايثون لمعالجة البيانات، تُستخدم بشكل متكرر مع DataFrames التي تحتوي على بيانات رقمية. وتشمل المهمة الشائعة تحويل أعمدة الأعداد ذات الفاصلة العائمة (floats) إلى أعداد صحيحة. وتفصل هذه المقالة طرقًا فعالة لهذا التحويل داخل DataFrame في Pandas، مع تسليط الضوء على نقاط قوتها ونقاط ضعفها.
محتويات الجدول
- استخدام
astype(int)
لتحويل الفاصلة العائمة إلى عدد صحيح - الاستفادة من
pd.to_numeric()
للتحويل المرن - معالجة الأخطاء والدقة المتقدمة في التقريب
استخدام astype(int)
لتحويل الفاصلة العائمة إلى عدد صحيح
توفر طريقة astype(int)
نهجًا مباشرًا لتحويل النوع في Pandas. فهي تقوم مباشرةً بصب نوع بيانات العمود إلى عدد صحيح. ومع ذلك، من المهم فهم سلوكها: فهي تقصم الجزء العشري، وتقوم فعليًا بعملية floor (تقريب للأسفل). وهذا يعني أنها تتجاهل الجزء الكسري، وتقوم دائمًا بالتقريب للأسفل.
مثال:
import pandas as pd
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1]}
df = pd.DataFrame(data)
df['col1_int'] = df['col1'].astype(int)
print(df)
الخرج:
col1 col1_int
0 1.5 1
1 2.7 2
2 3.2 3
3 4.9 4
4 5.1 5
تكمن ميزة هذه الطريقة في بساطتها، لكن سلوكها غير المرن في التقريب يحد من قابليتها للتطبيق عندما تكون هناك حاجة لاستراتيجيات تقريب أخرى.
الاستفادة من pd.to_numeric()
للتحويل المرن
يوفر pd.to_numeric()
تحكمًا ومرونة أكبر. وبالرغم من أنه مصمم في المقام الأول لتحويل أنواع البيانات المختلفة إلى صيغ رقمية، إلا أنه فعال للغاية لتحويل الفاصلة العائمة إلى عدد صحيح، خاصةً عند دمجه مع دوال التقريب.
مثال مع التقريب:
import pandas as pd
import numpy as np
data = {'col1': [1.5, 2.7, 3.2, 4.9, 5.1, np.nan]}
df = pd.DataFrame(data)
df['col1_int'] = pd.to_numeric(df['col1'], errors='coerce').round().astype(int)
print(df)
الخرج:
col1 col1_int
0 1.5 2
1 2.7 3
2 3.2 3
3 4.9 5
4 5.1 5
5 NaN NaN
هنا، errors='coerce'
يعالج القيم غير الرقمية بشكل أنيق عن طريق تحويلها إلى NaN
. round()
يقرب إلى أقرب عدد صحيح قبل عملية التحويل النهائية astype(int)
.
معالجة الأخطاء والدقة المتقدمة في التقريب
لمزيد من التحكم الدقيق في التقريب، استخدم دوال NumPy:
np.floor()
: يقرب للأسفل إلى أقرب عدد صحيح.np.ceil()
: يقرب للأعلى إلى أقرب عدد صحيح.
تذكر معالجة الأخطاء المحتملة (مثل القيم غير الرقمية) باستخدام معلمة errors
في pd.to_numeric()
. يؤدي اختيار 'coerce'
إلى استبدال القيم التي تسبب مشاكل بـ NaN
، مما يمنع حدوث الأخطاء. بدلاً من ذلك، 'raise'
سيرفع استثناءً، و 'ignore'
سيتجاهل القيم غير الرقمية.