ما هي مكتبة (PandasAI)
هي مكتبة في لغة البرمجة بايثون مفتوحة المصدر يمكن من خلالها معالجة وتحليل البيانات من خلال الدردشة القائمة على الذكاء الاصطناعي (معالجة اللغات الطبيعية)، حيث تستخدم مكتبة (PandasAI) نماذج الذكاء الاصطناعي التوليدي لفهم وتفسير نصوص اللغات الطبيعة وترجمتها إلى أكواد برمجية في (Python or SQL) بحيث تستخدم هذه الأكواد للتفاعل مع البيانات والرد على استفسارات او طلبات المستخدمين. يمكن استخدام مكتبة (PandasAI) للقيام بالتالي:
- الاستفسار والاستعلام من البيانات، حيث يمكن طرح بعض الأسئلة ثم تستخدم نماذج وخوارزميات اللغات الطبيعة للبحث عن إجابه لها من البيانات مثل ما هو عدد سكان دوله معينة؟.
- معالجة وتصوير البيانات، يمكن القيام بمعالجة البيانات مثل معالجة البيانات المفقودة او تنظيف البيانات المتكررة من خلال توجيــه أوامر نصيــة من خــلال الدردشة دون الحــاجة لكتابة أوامــر برمجية. كذلك يمكن استخدام التوجيه النصي لنظام الدردشة القائم على الذكاء الاصطناعي لتحليل وتصوير البيانات وعرض النتائج بطريقة مناسبة.
كيف يمكن استخدام مكتبة (PandasAI)
لتوضيح كيف يمكن استخدام مكتبة (PandasAI) سوف نستخدم بيانات الناتج المحلي (GDP) لمجموعة من الدول لعام 2022 والتي يمكن تحميلها خلال الرابط. وبعد ذلك يمكن استيرادها كما في الكود التالي:
In: import pandas as pd GDP_data = pd.read_csv('GDP_data.csv',sep=',') GDP_data.head() Out:![]()
في البداية سوف يتم إعداد نموذج الذكاء الاصطناعي التوليدي من خلال الربط مع ChatGPT كما يلي:
In: from pandasai import SmartDataframe from pandasai.llm import OpenAI llm = OpenAI(api_token="******") df = SmartDataframe(GDP_data, config={"llm": llm})
حيث تستبدل ****** بـ API الخاص بـ ChatGPT في حسابك.
بعد ذلك يمكن استخدام النموذج كما في الأمثلة التالية:
- وصف البيانات
In: df.chat("can you describe the data") Out:![]()
- الاستفسار من البيانات
In: df.chat("Which are the top 5 countries in term of GDP?") Out:
- تصوير البيانات
In: df.chat("can you visualize 10 highest GDP countries using bar chart with skyblue color?") Out:
- إضافة عمود جديد
In: df.chat("can you add new column for country rank based on GDP, and return the first 3 rows?") Out:
- حذف بيانات معينة
In: df.chat("can you remove Australia form data, and return the first 3 rows?") Out:![]()