البرمجة

تحليل البيانات بواسطة pandas

لحل هذه المشكلة، يمكنك استخدام لغة البرمجة Python ومكتبة pandas لمعالجة البيانات. يمكنك استخدام الكود التالي:

python
import pandas as pd # البيانات الأولى data1 = { 'col1': ['O75663', 'O95400', 'O95433', '', '', ''], 'col2': ['O95456', 'O95670', '', 'O95456', 'O95670', ''], 'col3': ['O75663', 'O95400', 'O95433', 'O95456', '', ''], 'col4': ['', 'O95670', 'O95801', 'P00352', '', ''] } df1 = pd.DataFrame(data1) # البيانات الثانية data2 = { 'strings': ['O75663', 'O95400', 'O95433', 'O95456', 'O95670', 'O95801', 'P00352', 'P00492'] } df2 = pd.DataFrame(data2) # تحويل القيم الفارغة إلى NaN df1 = df1.replace('', pd.NA) # تحويل كل قيمة في df1 إلى مجموعة متعددة (set) تحتوي على العمود الذي يحتوي عليها cols = df1.applymap(lambda x: {col for col in df1.columns if x in df1[col]}) # الحلقة التي تبحث عن القيم في df2 في كل مجموعة من العمود في df1 matches = df2['strings'].apply(lambda x: ','.join(str(idx) for idx, col_set in cols.items() if x in col_set.values)) # إنشاء إطار بيانات جديد للنتائج result = pd.DataFrame({ 'strings': df2['strings'], 'column_ids': matches.replace('', 'NA') }) print(result)

هذا الكود يعمل على إنشاء إطار بيانات جديد (result) يحتوي على عمودين، الأول للسلاسل من البيانات الثانية والثاني للمؤشرات (index) للعمود الذي يتواجد فيه كل سلسلة من البيانات الثانية في البيانات الأولى.

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

بالطبع، يمكنني توضيح المزيد من المعلومات حول الكود السابق:

  1. يتم تمثيل البيانات الأولى في DataFrame df1، حيث يحتوي كل عمود على سلسلة من القيم، ويتم تمثيل البيانات الثانية في DataFrame df2، حيث يحتوي عمود واحد على سلسلة من القيم.

  2. يتم استبدال القيم الفارغة في df1 بقيمة pd.NA التي تمثل قيمة غير متوفرة.

  3. يتم استخدام دالة applymap لتطبيق دالة على كل خلية في df1. الدالة المستخدمة هنا تبني مجموعة من الأعمدة التي تحتوي على السلسلة في كل خلية.

  4. يتم استخدام الحلقة apply لتطبيق دالة على كل سلسلة في df2. الدالة المستخدمة هنا تبحث عن السلسلة في كل مجموعة من الأعمدة في df1 وتجمع المؤشرات لكل سلسلة.

  5. يتم إنشاء إطار بيانات جديد result يحتوي على السلسلة من df2 والمؤشرات المجمعة لكل سلسلة.

  6. يتم طباعة result لعرض النتائج.

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