بانداز

  • حذف صفوف DataFrame في بانداز بايثون باستخدام تعابير منتظمة

    لحذف الصفوف في DataFrame باستخدام تعابير منتظمة في باندا بايثون، يمكنك استخدام الوظيفة str.contains() مع القدرة على تطبيق التعبيرات العادية (regex). لديك نمط معين تريد حذف الصفوف التي تتطابق معه. لذلك، يمكنك استخدام هذا النمط كمعامل في الدالة str.contains().

    في هذه الحالة، لحذف الصفوف التي تحتوي على النمط المحدد في العمود “Event Name”، يمكنك استخدام الكود التالي:

    python
    import pandas as pd # النمط المطابق للبحث patternDel = r"\((MoM|QoQ)\)" # تحميل DataFrame # قم بتحميل DataFrame الخاص بك هنا، يفترض أن يكون اسم العمود 'Event Name' # حذف الصفوف التي تحتوي على النمط المطابق df = df[~df['Event Name'].str.contains(patternDel, regex=True)] # إعادة تعيين فهرس الصفوف إذا كنت ترغب df.reset_index(drop=True, inplace=True) # يمكنك طباعة DataFrame بعد الحذف للتحقق print(df)

    في هذا الكود:

    1. يتم استيراد مكتبة بانداز ويتم تعريف النمط المراد البحث عنه في العمود “Event Name”.
    2. يتم استخدام الدالة str.contains() للبحث عن النمط في العمود “Event Name”.
    3. يتم استخدام العملية المنطقية “NOT” (~) لاختيار الصفوف التي لا تحتوي على النمط المحدد.
    4. يمكن استخدام reset_index() إذا كنت ترغب في إعادة ترتيب فهرس الصفوف.

    يمكنك استخدام هذا الكود لحذف الصفوف التي تحتوي على النمط المحدد بكفاءة، حتى مع DataFrame يحتوي على أكثر من 100 ألف صف.

    المزيد من المعلومات

    بينما الكود المذكور أعلاه يقوم بحذف الصفوف التي تحتوي على النمط المحدد بشكل فعال، هناك بعض النقاط التي يجب مراعاتها لتحقيق أقصى قدر من الكفاءة والأداء مع عدد كبير من الصفوف.

    أولاً وقبل كل شيء، يجب التأكد من أن DataFrame الخاص بك محمل بشكل صحيح وأن العمود الذي تريد البحث فيه يحتوي على البيانات بالتنسيق الصحيح. قد تحتاج أيضًا إلى تحسين أداء عمليات البحث عندما تعمل مع عدد كبير من الصفوف.

    لتحسين الأداء، يمكن استخدام القسم العلوي من الكود لتجنب تحميل DataFrame بالكامل في الذاكرة إذا كان حجمه كبيرًا للغاية. يمكنك استخدام وظائف قراءة الملفات في pandas مثل pd.read_csv() مع استخدام معامل chunksize لتحميل البيانات بشكل تدفقي.

    ثانياً، إذا كانت البيانات متسقة وثابتة، يمكنك استخدام تعبيرات منتظمة بدون الحاجة إلى تشغيلها في كل مرة تقوم فيها بالبحث. يمكنك تخزين النمط في متغير واستخدامه عدة مرات دون الحاجة إلى إعادة تعريفه في كل مرة.

    وأخيرًا، عند حذف الصفوف من DataFrame، يمكن أن تؤدي هذه العملية إلى تباعد الفهرس وزيادة استهلاك الذاكرة. لتجنب هذا، يمكن استخدام المعلمة inplace=True لتحديث DataFrame بمكان دون إعادة تخزينه.

    الكود المحسن يمكن أن يبدو كما يلي:

    python
    import pandas as pd # النمط المطابق للبحث patternDel = r"\((MoM|QoQ)\)" # تحميل DataFrame بشكل تدفقي إذا كان كبيرًا للغاية # يمكنك ضبط حجم الشانك بحسب الحاجة chunk_size = 10000 chunks = pd.read_csv("your_data.csv", chunksize=chunk_size) # البحث وحذف الصفوف بشكل تدفقي for chunk in chunks: chunk = chunk[~chunk['Event Name'].str.contains(patternDel, regex=True)] # استخدام inplace=True لتحديث DataFrame بدون إعادة تخزينه chunk.reset_index(drop=True, inplace=True) # يمكنك استخدام chunk للتعامل مع البيانات بشكل متسلسل هنا # إعادة تعيين فهرس الصفوف إذا لزم الأمر # يمكنك طباعة DataFrame بعد الحذف للتحقق print(df)

    باستخدام هذا الكود، يمكنك الآن حذف الصفوف التي تحتوي على النمط المحدد بكفاءة وبدون استهلاك كبير للذاكرة، حتى مع DataFrame يحتوي على أكثر من 100 ألف صف.

  • تجميع البيانات في بانداز: استخدام groupby وagg

    بالتأكيد، يبدو أنك ترغب في تجميع بيانات الإطار البيانات الخاص بك في بانداز دون فقدان العمود الذي تم تجميعه. يمكن تحقيق هذا باستخدام دالة groupby مع دالة التجميع المناسبة.

    لتحقيق ذلك، يمكنك استخدام دالة groupby مع تعريف دالة مخصصة للتجميع. هناك عدة طرق للقيام بذلك، واحدة منها هي استخدام دالة groupby مع دالة agg وتمرير قاموسٍ يحدد التجميع المخصص لكل عمود. في حالتك، تريد تجميع الأسماء والمعرّفات الفرعية في مجموعات، وهذا يمكن تنفيذه باستخدام دالة set.

    إليك كيف يمكنك القيام بذلك:

    python
    import pandas as pd # الإطار البيانات الأصلي data = { 'Id': [276956, 276956, 276956, 287266], 'NAME': ['A', 'B', 'C', 'D'], 'SUB_ID': [5933, 5934, 5935, 1589] } df = pd.DataFrame(data) # تجميع البيانات مع الاحتفاظ بالعمود المجمّع grouped = df.groupby('Id').agg({'NAME': set, 'SUB_ID': set}).reset_index() print(grouped)

    سينتج هذا الكود إطار بيانات مجمعًا حيث يتم تجميع الأسماء والمعرّفات الفرعية في مجموعات لكل معرّف. وسيتم الاحتفاظ بعمود الهوية كعمود في النتيجة النهائية.

    المزيد من المعلومات

    بالتأكيد، دعنا نواصل تطوير المقال لإضافة المزيد من التفاصيل والشروحات حول كيفية استخدام دالة groupby و agg في بانداز بطريقة فعالة وفعّالة.

    في الكود السابق، قمنا بتجميع البيانات باستخدام دالة groupby للمجال “Id”، ومن ثم استخدمنا دالة agg لتحديد كيفية تجميع الأسماء والمعرّفات الفرعية. باستخدام قاموس في agg، يمكننا تحديد التجميع المخصص لكل عمود.

    في مثالنا، استخدمنا دالة set كدالة تجميع لجمع القيم المكررة. هذا يضمن أنه سيتم تجميع الأسماء والمعرّفات الفرعية بشكل فريد لكل معرّف. بعد التجميع، قمنا بإعادة تعيين الفهرس باستخدام reset_index() لضمان أن العمود “Id” يتم الاحتفاظ به كعمود في النتيجة النهائية.

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

    على سبيل المثال، إذا كنت ترغب في حساب عدد الأسماء والمعرّفات الفرعية لكل معرّف، يمكنك ببساطة استخدام دالة len كدالة تجميع بدلاً من set. وإليك كيف يمكن القيام بذلك:

    python
    grouped = df.groupby('Id').agg({'NAME': len, 'SUB_ID': len}).reset_index()

    هذا سينتج عدد الأسماء والمعرّفات الفرعية لكل معرّف بدلاً من مجموعاتها.

    بهذه الطريقة، يمكن لدالة groupby و agg أن تكون أدوات قوية لتحليل وتحويل البيانات في بانداز. باستخدام هذه الأدوات بشكل صحيح، يمكنك القيام بمجموعة متنوعة من المهام التحليلية بسهولة وفعالية دون فقدان المعلومات الهامة.

  • استخدام سلسلة بيانات بوليانية في pandas لاختيار الصفوف

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

    أولاً وقبل كل شيء، يمكننا استيراد مكتبة بانداز وتحديد الإطار البيانات والسلسلة البوليانية:

    python
    import pandas as pd data = {'Date': ['2009-02-11', '2009-02-12', '2009-02-13', '2009-02-17', '2009-02-18'], 'High': [30.20, 30.28, 30.45, 29.35, 29.35], 'Low': [29.41, 29.32, 29.96, 28.74, 28.56], 'Close': [29.87, 30.24, 30.10, 28.90, 28.92]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) bool_series = pd.Series([True, False, False, True, False], name='bools')

    الآن، يمكننا استخدام السلسلة البوليانية لتحديد الصفوف المطابقة في إطار البيانات:

    python
    selected_data = df[bool_series]['High']

    النتيجة ستكون إطار بيانات فرعيًا يحتوي على القيم التي تتوافق مع True في السلسلة البوليانية:

    yaml
    Date 2009-02-11 30.20 2009-02-17 29.35 Name: High, dtype: float64

    هذا يعني أنك يمكنك الآن الوصول إلى القيم المرتبطة بالقيم المنطقية في السلسلة بسهولة باستخدام السطر المذكور أعلاه. يمكنك توسيع هذا النهج لتضمين العديد من الأعمدة إذا كان ذلك ضروريًا.

    المزيد من المعلومات

    بالتأكيد، دعونا نعزز فهمنا لكيفية استخدام سلسلة القيم البوليانية لاختيار البيانات من إطار البيانات باستخدام مكتبة pandas في لغة البرمجة Python.

    لنفترض أن لدينا القاعدة الأصلية لإطار البيانات كالتالي:

    python
    import pandas as pd data = {'Date': ['2009-02-11', '2009-02-12', '2009-02-13', '2009-02-17', '2009-02-18'], 'High': [30.20, 30.28, 30.45, 29.35, 29.35], 'Low': [29.41, 29.32, 29.96, 28.74, 28.56], 'Close': [29.87, 30.24, 30.10, 28.90, 28.92]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) bool_series = pd.Series([True, False, False, True, False], name='bools')

    الآن، نحن قادرون على استخدام سلسلة القيم البوليانية لتحديد الصفوف التي تتوافق مع True. يمكننا استخدام هذا لاسترجاع البيانات المرتبطة بالقيم البوليانية True:

    python
    selected_data = df[bool_series]

    النتيجة ستكون إطار بيانات فرعيًا يحتوي على الصفوف التي تتوافق مع True في السلسلة البوليانية:

    mathematica
    Date High Low Close 0 2009-02-11 30.20 29.41 29.87 3 2009-02-17 29.35 28.74 28.90

    هذا يعني أننا الآن نحصل على جميع البيانات المتعلقة بالصفوف التي تحتوي على True في سلسلة القيم البوليانية.

    وبهذا، يمكنك استخدام هذه الطريقة لاسترجاع البيانات بشكل دقيق ومحدد باستخدام الشروط الخاصة بك والتي تتوفر عبر سلسلة بيانات بوليانية.

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر