-
المساهمات
222 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة Ahmed Ahmed64
-
-
بتاريخ On 19/1/2024 at 14:08 قال El Sayed El Tohamy:
هل تقصد البحث في الأسماء عن أي اسم يحتوي كلمة "أحمد" سواء بأولها أو وسطها أو آخرها؟
إذا كان كذلك يمكنك استخدام الوظيفة contains
import re import pandas as pd names = pd.DataFrame({ 'Name': ['Ahmed Yousof', 'Abdullah Mohammed', 'Ashraf Ali', 'Fatema El Zahraa'], 'Arabic': [90, 80, 70, 95], 'Math': [100, 99, 95, 90] }) result = names[names['Name'].str.contains('ahmed')] print(result)
تمام أشكرك أخي هذا ما قصدته
ماذا لو البحث عن الاسم الأول فقط كيف الطريقة
-
السلام عليكم
ما المقصود بهذا الخطأ
ValueError: Cannot mask with non-boolean array containing NA / NaN values
حيث كنت أحاول البحث عن أسم داخل مع استخدام Treeview
- 1
-
السلام عليكم
عذرا لدي سؤال لم أستطيع إيجاد إجابة واضحة له أرجو الشرح إخوتي
السؤال
لدي DataFrame بها مجموعة من الأعمدة
يوجد عمودين أقوم بجمعهم ببعض لينتج لنا عمود جديد
أريد أن يكون هناك شرط باسم أحد الأعمدة بحيث لو كان هناك صف في هذا العمود أصغر من 50 أو به قيمة فارغة فلا يقوم بأي عملية في هذا الصف وتكون عمليه الجمع في العمود الجديد = 0
-
بتاريخ 1 ساعة قال El Sayed El Tohamy:
قم بتغيير عناوين الأعمدة لتمييزها عن بعضها، ثم قم بعملية إعادة الترتيب، ثم إرجاع أسماء الأعمدة مرة لأخرى لأصلها.
ولكن منطقيًا، يجب أن يكون لكل عمود اسمًا مميزًا له.
هل من الممكن ترتيب الأعمدة برقم العمود وليس بإسمه
-
السلام عليكم
قمت بإنشاء DataFrame
ومن ثم قمت بالتعديل على أسماء الأعمدة
df = pd.DataFrame(df.values, columns=column_names)
حاولت إعادة ترتيب الأعمدة برقم العمود
df.reindex(columns=[ 0,1,2,3,4,5,6,7,8,9,10,11,14,13,12])
لاكن هناك خطأ
ValueError: cannot reindex on an axis with duplicate labels
علماُ أن لدي أعمدة تحتوي على نفس اسم عمود أخر
فما الحل لإعادة الترتيب
-
بتاريخ 54 دقائق مضت قال El Sayed El Tohamy:
إذن ستكون هناك قيم فارغة في العمود الذي نقفر فيه،
فإذا كان لدينا عشرون صفًا، فسيظهروا جميعًا مع كل الأعمدة، ما عدا العمود الأول يظهر به عشرة صفوف فقط لأننا، فكيف تريد عرضها؟
أعط مثالًا حتى تكون الصورة واضحة.
كيف أقوم إجراء عملية على عمودين باستدعاء رقم العمود وليس اسم العمود
هل هذا الكود صحيح هكذا
Table1['المجموع الكلي'] = Table1[1] + Table1[2]
-
بتاريخ 1 دقيقة مضت قال El Sayed El Tohamy:
وماذا عن القيم الفارغة؟
لأنك ستحصل على عدد غير متساوٍ من الصفوف؟ هل تقصد أن الصفوف التي لا يقرأها يجعلها فارغة؟
إذا كان كذلك، يمكنك تنفيذه عن طريق:
قراءة كل الملف، ثم تحديد الصفوف المراد إخفاؤها وجعلها فارغة
df.iloc[1::2, :] = np.nan
عفواً لم يكن هكذا السؤال
أقصد أن يقفز سطر
كا التالي df.iloc[3::2, [2,3,5,]]
هنا القفز لجميع الأعمدة ولاكن أحتاج أن يكون القفز داخل أحد الأعمدة فقط
كيف أقوم التعديل إذا على هذا الكود
selected_columns = df.iloc[3:, [2, 3, 5]]
-
بتاريخ 15 دقائق مضت قال Adnane Kadri:
العد يبدأ من الصفر لكل من الصفوف والأعمدة. لذا، الصف الأول يمثله الرقم 0، والعمود الأول يمثله الرقم 0 وهكذا ..
أخي لنفترض أن لدي عمود وليكن العمود 3 أحتاج أن أقرأ منه سطر وأتجاهل السطر الذي يله وهكذا حتى أخر العمود كيف يتم ذلك وباقي الأعمدة يتم قراءة كل الأسطر
أرجو التعديل هنا على هذا الكود لكي أفهم التعديل أين يتم
selected_columns = df.iloc[3:, [2, 3, 5]]
أسف على الإطالة معك في الحقيقة لقد أوضحت لي الكثير
-
بتاريخ 8 دقائق مضت قال Adnane Kadri:
يمكنك استخدام قوس مربعي فارغ لتحديد الصفوف الكل (:) واختيار الأعمدة المطلوبة. على سبيل المثال، إذا كنت تريد اختيار العمودين 2 و 3 وتجاهل العمود 4 وتحتاج العمود 5، يمكنك القيام بذلك كما يلي:
selected_columns = df.iloc[3:, [2, 3, 5]]
سيشتمل هذا على الصفوف من الصف 3 وما بعدها، والأعمدة 2 و 3 و 5.
كما أن لدي استفسار أخر وأسف على الإطالة أخي
هل العد يبدأ من 0 أو 1 بالنسبة للأعمدة والصفوف
-
بتاريخ 7 دقائق مضت قال Adnane Kadri:
الجزء df.iloc[3:, 2:4] يستخدم لتحديد جزء معين من DataFrame باستخدام تقديم الصفوف والأعمدة المحددة. فـ:
- 3:: يعني ابتداءً من الصف رقم 3 وحتى نهاية الصفوف. هذا يتجاوز الصفوف الثلاثة الأولى (التي قد تحتوي على عناوين الأعمدة أو معلومات غير ضرورية).
- 2:4: يعني ابتداءً من العمود رقم 2 وحتى العمود رقم 3.
وهكذا يتم اختيار العمودين الثاني والثالث.
لنفترض أني لا أريد عمود معين فهذا لا ينجح ( 2:4: يعني ابتداءً من العمود رقم 2 وحتى العمود رقم 3. )
أحيانا قد أحتاج عمود 2 و 3 وأتجاهل 4 وأحتاج العمود 5 فكيف أقوم بذلك
كما أن لدي استفسار أخر هل العد يبدأ من 0 أو 1 بالنسبه للأعمدة والصفوف
-
بتاريخ 4 دقائق مضت قال Adnane Kadri:
الكود الذي كتبته لإنشاء DataFrame يبدو صحيحا بشكل عام، ولكن إليك طريقة أفضل لتحديد الأعمدة وإعطائها أسماء:
# اختيار الأعمدة المحددة من DataFrame الأصلي selected_columns = df.iloc[3:, 2:4] # تحديد أسماء الأعمدة column_names = ['الأول', 'الثاني'] # إنشاء DataFrame df1 = pd.DataFrame(selected_columns.values, columns=column_names)
بهذه الطريقة، سيتم تحديد الأعمدة 2 و 3 من DataFrame الأصلي (iloc[3:, 2:4]) وتخزينها في المتحول selected_columns. ثم تحديد أسماء الأعمدة وأخيرًا إنشاء DataFrame جديد باستخدام هذه الأعمدة وأسمائها.
df.iloc[3:, 2:4]
أخي هل لك أن توضح لي أكثر
لقد ذكرت العمود 2 و العمود الثالث
إذا كيف تم الكتابه هكذا
- 1
-
السلام عليكم ورحمة الله وبركاته
جمعة طيبة للجميع
في البداية أحب أن أشكر كل من ساهم في تلقيني معلومة في هذا الصرح العلمي والذي عن نفسي استفدت منه كثيراُ
إخوتي لقد تكونت لدي مجموعة من الأفكار عن كتابة الكود ولاكن في بعض الأحيان أكون عاجز عن استكماله
الأن أحاول تصميم DataFrame من جدول Excel
في البداية لكي تكون الصورة واضحة لكم
الجدول يتكون من مجموعة كبيرة من الأعمدة ليس لها عنوان .... لنفترض أن الصف الأول حتى الصف الثالث لا يحتوي أي بيانات ،،، أود أن أقوم بإنشاءDataFrame
في البداية قمت بي بقراءة الملف هكذا
df = pd.read_excel("ABC.xlsx")
مثلا أود أن أقرأ العمود 3 قمت بذلك
df.iloc[3::, 2]
أود أيضا أن أقرأ العمود 4 قمت بذلك
df.iloc[3::, 3]
الأن سؤالي كيف أقوم بتكوين DataFrame من هذه الأعمدة مع إعطاء اسم فهرس لكل عمود حتى أتعامل به في المستقبل
DATA = {'الأول':df.iloc[3::, 2],'الثاني':df.iloc[3::, 3]} df1 = pd.DataFrame(DATA)
هل الكود هكذا به مشكلة إن كان كتابة الكود غير سليم فأرجو شرح كيف أقوم بهذا
- 1
-
بتاريخ 5 ساعة قال Khaled Osama3:
يمكنك استيراد مكتبة Pandas باستخدام import pandas as pd. هذه الخطوة تتيح لنا استخدام طرق وأدوات Pandas مثل القراءة وكتابة الDataFrame.
import pandas as pd
2. قراءة البيانات من ملف إكسل باستخدام pd.read_excel() وتخزينها في متغير df.
# get file xlsx df = pd.read_excel("data.xlsx")
3. معاينة الداتا فريم باستخدام print(df) للتأكد من القراءة.
# Print the dataframe print(df)
4. إضافة عمود جديد بإعادة تسمية أحد المواد.
# make الماده = second column header df['الماده'] = df.columns[1]
5. إعادة تسمية أسماء الأعمدة باستخدام df.rename().
# rename columns df = df.rename(columns={df.columns[0]: 'الاسم', df.columns[1]: 'امتحان اول', df.columns[2]: 'امتحان ثاني', df.columns[3]: 'النهائي'})
6. ترتيب الأعمدة بالترتيب المطلوب باستخدام df[['عمود1'...'عمودn']].
# sort columns df = df[['الاسم', 'الماده', 'امتحان اول', 'امتحان ثاني', 'النهائي']]
رائع أخي شرح واضح
ولاكن واجهة مشكلة في هذا الجدول كيف أقوم بذلك
التحويل لهذا الشكل
لو لاحظت أحي يوجد مادتين
-
السلام عليكم
إخوتي أريد مساعدة في كتابة كود DataFrame يقوم بتحويل هذا الجدول
إلى هذا الشكل
كيف يتم كتابة شكل الكود الرجاء المساعدة
- 1
-
السلام عليكم
لنفترض أن لدينا DataFrame تحتوي على عمود Name هذا العمود به الاسم ثلاثي وأردت أن أقوم بالبحث عن اسم معين داخل هذا العمود و لنفترض أن الاسم أحمد
كيف أستحرج جميع الحقول التي تحتوي على اسم أحمد
إذا أمكن أيضا أخي أحتاج أن تكون عرض النتيجة داخل أداة Treeview - Python Tkinter
- 1
-
بتاريخ On 16/1/2024 at 17:26 قال El Sayed El Tohamy:
لمعرفة ما إذا كانت القيمة موجودة أم لا، نقوم بعملية البحث بشكل عادي جدًا، وبعدها نسأل عن dataframe هل هو فارغ
search1 = names[names['Name'] == 'Ali'] if search1.empty: # يتحقق الشرط في حالة عدم وجود القيمة print("no result")
أخي لنفترض أن لدينا DataFrame تحتوي على عمود Name هذا العمود به الاسم ثلاثي وأردت أن أقوم بالبحث عن اسم معين لنفترض أن الاسم أحمد
كيف أستحرج جميع الحقول التي تحتوي على اسم أحمد
إذا أمكن أيضا أخي أحتاج أن تكون النتيجة داخل أداة Treeview - Python Tkinter
-
بتاريخ 14 ساعة قال Chihab Hedidi:
من فضلك ارفق ملف الاكسل الذي تعمل عليه حتى يمكنني فهم المشكل بشكل أفضل.
أشكرك أخي لقد فهمت الخطأ
الخطأ في DataFrame
- 1
-
بتاريخ 14 دقائق مضت قال Chihab Hedidi:
تظهر الرسالة "See the caveats in the documentation" عندما تقوم بتعديل قيم في DataFrame بطريقة يمكن أن تؤثر على النسخة الأصلية، يعني هذا أن هناك احتمالا لحدوث تأثير جانبي على البيانات الأصلية.
قد ظهرت هذه الرسالة إذا كانت هناك قيم غير صحيحة في العمود 'وحدة دراسية' وتم تحويلها إلى NaN، لذا تأكد أن كل سطر في العمود يحتوي على قيم و تكون عبارة عن أرقام.
تم التأكيد وقد اختفت هذه الرسالة
المشكلة الأن أن الجمع غير صحيح
- 1
-
أشكرك أخي على التوضيح
فعلا الأن تم تطبيق البرنامج ولاكن المشكلة في عملية الجمع تظهر خاطئة
كما أن هناك هذه الأسطر لم أفهمها
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
names2['وحدة دراسية'] = pd.to_numeric(names2['وحدة دراسية'], errors='coerce')
4115460.0بتاريخ 18 دقائق مضت قال Ahmed Ahmed64:أشكرك أخي على التوضيح
فعلا الأن تم تطبيق البرنامج ولاكن المشكلة في عملية الجمع تظهر خاطئة
كما أن هناك هذه الأسطر لم أفهمها
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
names2['وحدة دراسية'] = pd.to_numeric(names2['وحدة دراسية'], errors='coerce')
4115460.0قمت بتحويل إلى DataFrame وقد عالجة المشكلة الأخيرة
وهذه مخرجات لاكن نتيجة الجمع لها خطأ
4115460.0
رقم القيد object
رمز المقرر object
الفصل الدراسي object
الاعمال int64
النهائي float64
المجموعة int64
وحدة دراسية int64
cc float64
dtype: object- 1
-
بتاريخ 3 دقائق مضت قال Chihab Hedidi:
تأكد من أن العمود لا يحتوي على أي كلمات، اذا تستطيع أرفق الكود مع الملف لأطلع عليه أكثر.
names2 =melted_df[['رقم القيد', 'رمز المقرر' , 'الفصل الدراسي' , 'الاعمال' , 'النهائي' , 'المجموعة' ]] names2['وحدة دراسية']=melted_df['المادة'].map(self.Subjects_SH).fillna('Other') names2['cc']=names2['النهائي'] * names2['وحدة دراسية'] df3 = pd.DataFrame(names2) Total = df3['cc'].sum() print(Total)
- 1
-
بتاريخ 7 دقائق مضت قال Chihab Hedidi:
يمكنك ذلك باستخدام مكتبة pandas في Python لتنفيذ هذه العملية، سأكتب لك كود كمثال لتفهم أكثر:
import pandas as pd # قم بتعريف DataFrame الخاص بك data = {'Column1': [1, 2, 3, 4], 'Column2': [5, 6, 7, 8], 'Column3': [9, 10, 11, 12]} df = pd.DataFrame(data)
إذا أردت جمع قيم Column1 وتقسيمها على قيم Column2، يمكنك استخدام الكود التالي:
# جمع قيم Column1 sum_column1 = df['Column1'].sum() # جمع قيم Column2 sum_column2 = df['Column2'].sum() # تقسيم النتيجة result = sum_column1 / sum_column2 print(result)
هذا سيعطيك النتيجة المطلوبة. يمكنك تعديل الأعمدة والبيانات وفقا لاحتياجات DataFrame الخاص بك.
أحسنت أخي هذا ما فعلته بالضبط ولاكن يظهر هذا الخطأ
TypeError: unsupported operand type(s) for +: 'float' and 'str'
علما أن البيانات كلها أرقام بهذا العمود
-
السلام عليكم
يوجد لدي DataFrame بها مجموعة من الأعمدة
أحتاج أن أجمع قيم أحد الأعمدة وتقسيمها على مجموعة عمود أخر أيضا بعد جمعه
- 1
-
بتاريخ 14 ساعة قال El Sayed El Tohamy:
هذه هي الشيفرات كاملة
# استيراد المكتبات اللازمة import customtkinter import tkinter as tk app = customtkinter.CTk() entry = customtkinter.CTkEntry(app) # ربط عمليتي النسخ واللصق باختصارات لوحة المفاتيح entry.bind("<Control-c>", lambda e: entry.event_generate("<<Copy>>")) entry.bind("<Control-v>", lambda e: entry.event_generate("<<Paste>>")) entry.pack() app.mainloop()
ملحوظة:
افتراضيًا تدعم أداة الإدخال Entry عملية القص، والنسخ، واللصق تلقائيًا باستخدام اختصارات لوحة المفاتيح دون الحاجة لكتابة هذه الشيفرات، لكن في حالة نظام التشغيل لا يدعمها يمكننا استخدام هذه الشيفرات.
أما إذا كنت تريد إظهار قائمة منبثقة (تظهر بالنقر اليمين) وتظهر بها هذه الأوامر، يمكنك استخدام المثال التالي
# Import the customtkinter and tkinter modules import customtkinter import tkinter as tk window = tk.Tk() entry = tk.Entry(window) entry.pack() # إنشاء القائمة المنبثقة (بالنقر الأيمن) وإضافة ثلاثة عناصر لها popup_menu = tk.Menu(window, tearoff=0) popup_menu.add_command(label="Cut", command=lambda: entry.event_generate("<<Cut>>")) popup_menu.add_command(label="Copy", command=lambda: entry.event_generate("<<Copy>>")) popup_menu.add_command(label="Paste", command=lambda: entry.event_generate("<<Paste>>")) # هذه الوظيفة لإظهار القائمة المنبثقة مكان النقر باليمين def show_popup_menu(event): popup_menu.post(event.x_root, event.y_root) # ربط القائمة المنبثقة بحدث النقر بالزر الأيمن entry.bind("<Button-3>", show_popup_menu) window.mainloop()
أحسنت جزاك الله خيراً
-
بتاريخ 1 ساعة قال El Sayed El Tohamy:
تريد تمكين وظائف النسخ واللصق من وإلى أداة Entry، بمعني إمكانية نسخ المحتوى عندما يضغط المستخدم الاختصار المعروف ctrl-c وكذلك اللصق عن طريق الاختصار ctrl-v
# ننشيئ الأداة entry = customtkinter.CTkEntry(app) # نربط وظائف النسخ واللصق باختصارات من لوحة المفاتيح entry.bind("<Control-c>", lambda e: entry.event_generate("<<Copy>>")) entry.bind("<Control-v>", lambda e: entry.event_generate("<<Paste>>"))
هل يعمل هذا الكود مباشرة أم هناك كود تنفيذ
بهذه الطريقة لم يعمل الكود
عفواً أخي هل لك أن توضح لي أكثر
ValueError: Cannot mask with non-boolean array containing NA / NaN values
في بايثون
نشر · تم التعديل في بواسطة Ahmed Ahmed64
نعم هذا صحيح لقد توقعت هذا الرد
في الحقيقة استخدمت هذه الشفرة وقد حلت المشكلة
تم الحل بهذه الإضافة na=False
أشكرك أخي على الإجابة السريعة والمساعدة