Mohamed Elnemr نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 أحاول تشغيل الكود التالي: path = 'data.csv' df = pd.read_csv(path) لكن يظهر لي هذا الخطأ pandas.parser.CParserError: Error tokenizing data. C error: Expected 2 fields in line 3, saw 12 كيف يمكنني التغلب على هذا الخطأ؟ 1 اقتباس
0 Ahmed Sharshar نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 يظهر الخطأ نتيجة عدم معرفة ال parser برأس البيانات header حيث يعتبر أن أول صف هو بداية البيانات رغم أنه ليس كذلك، لذا يمكنك تجربة الكود التالي لتغطي هذا الخطأ والذي يقوم بعدم اعتبار أول صفين ضمن البيانات: data = pd.read_csv(path, skiprows=2) أو يمكنك ترك pandas تعالج الخطأ بنفسها عن طريق تجنب الصفوف التى تظهر الخطأ كالتالي: df = pd.read_csv('data.csv', error_bad_lines=False) اقتباس
0 Ali Haidar Ahmad نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 (معدل) قد تكون المشكلة إما بالصف الأول من البيانات كما أشار أحمد، أو بالمحددات delimiters. لذا لحل المشكلة قم باستخدام الوسيط sep و/أو الوسيط header مع الدالة read_csv. بالنسبة ل sep فالتوثيق يقول"إذا كان sep = None [ أي غير محدد] ، فسيحاول باندا تحديده تلقائياً." أي عدم تحديده لن يسبب مشكلة (ومع ذلك في الممارسة العملية تنتج أخطاء مع البعض لذا يفضل تحديده إذا حدث خطأ). أما بالنسبة لل header تقول المستندات في باندا ""إذا كان الملف لا يحتوي على صف header، فيجب عليك تمرير header = None" بشكل صريح. ,في هذه الحالة، يقوم باندا تلقائياً بإنشاء فهارس لكل حقل {0،1،2، ...}." مثلاً: df = pd.read_csv(path, sep='delimiter', header=None) # sep :delimiter تقوم من خلالها بتعريف المحدد # header=None: لإخبار باندا بأن بياناتك لا تحتوي على صف لعناوين الرؤوس / الأعمدة كما يمكنك استخدام الحلول التي أشار لها أحمد بالنسبة لل header تم التعديل في 5 سبتمبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
0 عبدالباسط ابراهيم نشر 5 سبتمبر 2021 أرسل تقرير نشر 5 سبتمبر 2021 (معدل) كما وضح أحمد أنه المشكلة في عدم وجود ال header وكما في التوثيق الخاص بpandas اقتباس إذا كان الملف لا يحتوي على صف ال header، فعليك تمرير header=None لذلك لحل المشكلة سوف يكون الكود كالتالي df = pandas.read_csv(filepath, sep='delimiter', header=None) أو يمكنك حل هذه المشكلة من خلال تعريف أسماء الأعمدة في الخاصية names كما في المثال التالي col_names = ["col1", "col2", "col3", ...] df = pd.read_csv(filename, names=col_names) وليس شرطاً أن تكون بنفس أسماء الأعمدة بل يجب أن تكون placeholder فقط بعدد الأعمدة لذلك يمكنك استخدام الحل التالي df = pd.read_csv(filename, names = list(range(0,N))) حيث يعبر N عن عدد الأعمدة تم التعديل في 6 سبتمبر 2021 بواسطة عبدالباسط ابراهيم تصحيح بعض المعلومات 1 اقتباس
السؤال
Mohamed Elnemr
أحاول تشغيل الكود التالي:
path = 'data.csv' df = pd.read_csv(path)
لكن يظهر لي هذا الخطأ
pandas.parser.CParserError: Error tokenizing data. C error: Expected 2 fields in line 3, saw 12
كيف يمكنني التغلب على هذا الخطأ؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.