تحليل بيانات نصية باستخدام نموذج جوجل جيميني و مكتبة باندا: دليل عملي شامل

هذا الدليل يوضح كيفية الاستفادة من قوة نماذج جوجل جيميني جنبًا إلى جنب مع مرونة مكتبة باندا في بايثون لتحليل البيانات. سنقوم بإجراء تحليلات بيانات مباشرة ومتقدمة على مجموعة بيانات تيتانيك الشهيرة، وذلك باستخدام وكيل (Agent) تفاعلي قادر على فهم الاستفسارات بلغة طبيعية. سيتيح لنا هذا الوكيل فحص البيانات، وحساب الإحصائيات، والكشف عن الارتباطات، وتوليد رؤى بصرية، كل ذلك دون كتابة أكواد يدوية لكل مهمة.

1. الإعداد والتركيب:

  • أولاً، نقوم بتثبيت المكتبات اللازمة باستخدام pip:
    pip install langchain_experimental langchain_google_genai pandas
  • ثم نقوم باستيراد الوحدات الأساسية:
    import os
    import pandas as pd
    import numpy as np
    from langchain.agents.agent_types import AgentType
    from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent
    from langchain_google_genai import ChatGoogleGenerativeAI
  • يجب تعيين مفتاح API الخاص بجوجل كمتغير بيئة: GOOGLE_API_KEY

2. إنشاء وكيل جيميني:

تُنشئ هذه الدالة وكيلًا يعمل بواسطه نموذج جيميني، وقادر على فهم الاستفسارات النصية وتنفيذها على إطار بيانات باندا:

def setup_gemini_agent(df, temperature=0, model="gemini-1.5-flash"):
    llm = ChatGoogleGenerativeAI(model=model, temperature=temperature, convert_system_message_to_human=True)
    agent = create_pandas_dataframe_agent(llm=llm, df=df, verbose=True, agent_type=AgentType.OPENAI_FUNCTIONS, allow_dangerous_code=True)
    return agent

3. تحميل بيانات تيتانيك:

تقوم هذه الدالة بتحميل بيانات تيتانيك من مستودع جيثب التابع لمكتبة باندا، وتطبع أبعادها وأسماء الأعمدة للتحقق من صحتها:

def load_and_explore_data():
    print("تحميل بيانات تيتانيك...")
    df = pd.read_csv("https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv")
    print(f"شكل مجموعة البيانات: {df.shape}")
    print(f"الأعمدة: {list(df.columns)}")
    return df

4. أمثلة على التحليل الأساسي:

يُظهر هذا القسم أمثلة على الاستفسارات البسيطة التي يمكن توجيهها للوكيل:

def basic_analysis_demo(agent):
    print("nالتحليل الأساسي")
    print("=" * 50)
    queries = [
        "كم عدد الصفوف والأعمدة في مجموعة البيانات؟",
        "ما هي نسبة البقاء على قيد الحياة (نسبة الأشخاص الذين نجوا)؟",
        "كم عدد الأشخاص الذين لديهم أكثر من 3 أشقاء؟",
        "ما هو الجذر التربيعي لمتوسط العمر؟",
        "أرني توزيع فئات الركاب",
    ]
    for query in queries:
        print(f"nالاستعلام: {query}")
        try:
            result = agent.invoke(query)
            print(f"النتيجة: {result['output']}")
        except Exception as e:
            print(f"خطأ: {e}")

5. أمثلة على التحليل المتقدم:

يُظهر هذا القسم أمثلة على استفسارات أكثر تعقيدًا تتطلب تحليلات إحصائية أكثر عمقاً:

def advanced_analysis_demo(agent):
    print("nالتحليل المتقدم")
    print("=" * 50)
    advanced_queries = [
        "ما هو الارتباط بين العمر وسعر التذكرة؟",
        "قم بعمل تحليل لبقاء على قيد الحياة حسب الجنس والفئة",
        "ما هو متوسط العمر لكل فئة من فئات الركاب؟",
        "ابحث عن الركاب ذوي أعلى أسعار التذاكر وبياناتهم",
        "احسب معدل البقاء على قيد الحياة لمجموعات عمرية مختلفة (0-18، 18-65، 65+)",
    ]
    for query in advanced_queries:
        print(f"nالاستعلام: {query}")
        try:
            result = agent.invoke(query)
            print(f"النتيجة: {result['output']}")
        except Exception as e:
            print(f"خطأ: {e}")

6. التعامل مع إطارات بيانات متعددة:

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

def multi_dataframe_demo():
    # ... (كود مشابه للقسم السابق مع تعديلات لإضافة إطار بيانات إضافي) ...

7. التحليل المخصص:

يُظهر هذا القسم أمثلة على استفسارات مخصصة تتطلب خطوات متعددة:

def custom_analysis_demo(agent):
    # ... (كود مشابه للقسم السابق مع تعديلات لإضافة استفسارات مخصصة) ...

8. الوظيفة الرئيسية:

تُعد هذه الوظيفة نقطة البداية لتشغيل البرنامج:

def main():
    # ... (كود مشابه للقسم السابق) ...

9. خاتمة:

يُلخص هذا القسم فوائد استخدام هذا النهج في تحليل البيانات.

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

المصدر: MarkTechPost