Mohamed Elnemr نشر 22 أغسطس 2021 أرسل تقرير نشر 22 أغسطس 2021 لدي بيانات على شكل dataframe في pandas، وهناك بعض الأعمدة التي أود تحويل قيمها كلها الى قيم عددية بدلا من خليط من الأعداد الحروف، كالمثال التالي: s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # خليط من الأرقام والحروف كيف يمكنني جعلها كلها قيماً عددية؟ 3 اقتباس
0 عبدالله عبدالرحمن11 نشر 22 أغسطس 2021 أرسل تقرير نشر 22 أغسطس 2021 أفضل طريقة لتحويل عمود واحد أو أكثر من DataFrame إلى قيم رقمية هي استخدام دالة pandas.to_numeric(). ستحاول هذه الدالة تغيير الكائنات غير الرقمية (مثل السلاسل) إلى أعداد صحيحة أو أرقام فاصلة عائمة float حسب الاقتضاء. الإدخال إلى to_numeric() يكون سلسلة أو عمود واحد من DataFrame. >>> s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # سلاسل نصية وقيم عددية >>> s 0 8 1 6 2 7.5 3 3 4 0.9 dtype: object >>> pd.to_numeric(s) # تحويل كل شيء الى قيم عشرية float 0 8.0 1 6.0 2 7.5 3 3.0 4 0.9 dtype: float64 كما ترى ، يتم إرجاع سلسلة جديدة. تذكر تخصيص هذا الإخراج لمتغير أو اسم عمود لمتابعة استخدامه: # تحويل سلاسل my_series = pd.to_numeric(my_series) # تحويل العمود a لل DataFrame df["a"] = pd.to_numeric(df["a"]) يمكنك أيضًا استخدامه لتحويل عدة أعمدة من DataFrame عبر apply()الطريقة: # تحويل كل أعمدة DataFrame df = df.apply(pd.to_numeric) # تحويل العمودين a و b df[["a", "b"]] = df[["a", "b"]].apply(pd.to_numeric) طالما أنه يمكن تحويل جميع قيمك ، فمن المحتمل أن يكون هذا كل ما تحتاجه. وايضاً لديك خيارات آخرى مثل astype()- تحويل (تقريبًا) أي نوع إلى (تقريبًا) أي نوع آخر (حتى لو لم يكن من المعقول القيام بذلك بالضرورة). يسمح لك أيضًا بالتحويل إلى أنواع فئوية (مفيدة جدًا). infer_objects() - طريقة مساعدة لتحويل أعمدة الكائن التي تحتوي على كائنات Python إلى نوع pandas إن أمكن. convert_dtypes()- تحويل أعمدة DataFrame إلى نوع dtype الذي يدعم pd.NA أي كائن pandas للإشارة إلى قيمة مفقودة. اقتباس
0 Ahmed Sharshar نشر 22 أغسطس 2021 أرسل تقرير نشر 22 أغسطس 2021 في pandas يمكنك إستخدام الدالة to_numeric() لتحويل العناصر الى أرقام. اذا قمنا بطباعة نوع العناصر التي قمت بانشاءها في مثالك السابق، ستجد أنها من النوع object >>> s = pd.Series(["5", 6, "7", 8.0, "0.9"]) # mixed string and numeric values >>> s 0 5 1 6 2 7 3 8.0 4 0.9 dtype: object هنا أنت تريد تحويلها كلها الي قيم عددية، يمكنك أستخدام الكود التالي: >>> pd.to_numeric(s) 0 5.0 1 6.0 2 7.0 3 8.0 4 0.9 dtype: float64 لاحظ أن نوع العناصر أصبح float64 وهي قيمة عددية. 1 اقتباس
0 Ali Haidar Ahmad نشر 23 أغسطس 2021 أرسل تقرير نشر 23 أغسطس 2021 (معدل) يمكنك استخدام الدالة astype للقيام بأي شيئ تريده: import pandas as pd s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # خليط من الأرقام والحروف s """ 0 8 1 6 2 7.5 3 3 4 0.9 dtype: object """ s = s.astype('float32') print(s.dtypes) # float32 ############################ أمثلة أخرى ############################### d = {'col1': [1, 2], 'col2': [3, 4]} df = pd.DataFrame(data=d) """ df.dtypes col1 int64 col2 int64 dtype: object """ df.astype('float64').dtypes """ col1 float64 col2 float64 dtype: object """ ############################################### d = {'col1': [1, 2], 'col2': [3, 4]} df = pd.DataFrame(data=d) """ df.dtypes col1 int64 col2 int64 dtype: object """ df.astype('float64').dtypes """ col1 float64 col2 float64 dtype: object """ تم التعديل في 23 أغسطس 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Mohamed Elnemr
لدي بيانات على شكل dataframe في pandas، وهناك بعض الأعمدة التي أود تحويل قيمها كلها الى قيم عددية بدلا من خليط من الأعداد الحروف، كالمثال التالي:
كيف يمكنني جعلها كلها قيماً عددية؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.