Ibis هي مكتبة بيانات Python المحمولة:
راجع الوثائق الخاصة بـ "لماذا Ibis؟" لمعرفة المزيد.
يمكنك pip install
Ibis باستخدام الواجهة الخلفية وبيانات المثال:
pip install ' ibis-framework[duckdb,examples] '
نصيحة
راجع دليل التثبيت لمزيد من خيارات التثبيت.
ثم استخدم إيبيس:
> >> import ibis
> >> ibis . options . interactive = True
> >> t = ibis . examples . penguins . fetch ()
> >> t
┏━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓
┃ species ┃ island ┃ bill_length_mm ┃ bill_depth_mm ┃ flipper_length_mm ┃ body_mass_g ┃ sex ┃ year ┃
┡━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩
│ string │ string │ float64 │ float64 │ int64 │ int64 │ string │ int64 │
├─────────┼───────────┼────────────────┼───────────────┼───────────────────┼─────────────┼────────┼───────┤
│ Adelie │ Torgersen │ 39.1 │ 18.7 │ 181 │ 3750 │ male │ 2007 │
│ Adelie │ Torgersen │ 39.5 │ 17.4 │ 186 │ 3800 │ female │ 2007 │
│ Adelie │ Torgersen │ 40.3 │ 18.0 │ 195 │ 3250 │ female │ 2007 │
│ Adelie │ Torgersen │ NULL │ NULL │ NULL │ NULL │ NULL │ 2007 │
│ Adelie │ Torgersen │ 36.7 │ 19.3 │ 193 │ 3450 │ female │ 2007 │
│ Adelie │ Torgersen │ 39.3 │ 20.6 │ 190 │ 3650 │ male │ 2007 │
│ Adelie │ Torgersen │ 38.9 │ 17.8 │ 181 │ 3625 │ female │ 2007 │
│ Adelie │ Torgersen │ 39.2 │ 19.6 │ 195 │ 4675 │ male │ 2007 │
│ Adelie │ Torgersen │ 34.1 │ 18.1 │ 193 │ 3475 │ NULL │ 2007 │
│ Adelie │ Torgersen │ 42.0 │ 20.2 │ 190 │ 4250 │ NULL │ 2007 │
│ … │ … │ … │ … │ … │ … │ … │ … │
└─────────┴───────────┴────────────────┴───────────────┴───────────────────┴─────────────┴────────┴───────┘
>> > g = t . group_by ( "species" , "island" ). agg ( count = t . count ()). order_by ( "count" )
> >> g
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓
┃ species ┃ island ┃ count ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩
│ string │ string │ int64 │
├───────────┼───────────┼───────┤
│ Adelie │ Biscoe │ 44 │
│ Adelie │ Torgersen │ 52 │
│ Adelie │ Dream │ 56 │
│ Chinstrap │ Dream │ 68 │
│ Gentoo │ Biscoe │ 124 │
└───────────┴───────────┴───────┘
نصيحة
راجع البرنامج التعليمي للبدء للحصول على مقدمة كاملة عن Ibis.
بالنسبة لمعظم الواجهات الخلفية، يعمل Ibis من خلال تجميع تعبيرات إطار البيانات الخاصة به في SQL:
> >> ibis . to_sql ( g )
SELECT
"t1" . "species" ,
"t1" . "island" ,
"t1" . "count"
FROM (
SELECT
"t0" . "species" ,
"t0" . "island" ,
COUNT ( * ) AS "count"
FROM "penguins" AS "t0"
GROUP BY
1 ,
2
) AS "t1"
ORDER BY
"t1" . "count" ASC
يمكنك مزج كود SQL وPython:
> >> a = t . sql ( "SELECT species, island, count(*) AS count FROM penguins GROUP BY 1, 2" )
> >> a
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓
┃ species ┃ island ┃ count ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩
│ string │ string │ int64 │
├───────────┼───────────┼───────┤
│ Adelie │ Torgersen │ 52 │
│ Adelie │ Biscoe │ 44 │
│ Adelie │ Dream │ 56 │
│ Gentoo │ Biscoe │ 124 │
│ Chinstrap │ Dream │ 68 │
└───────────┴───────────┴───────┘
>> > b = a . order_by ( "count" )
> >> b
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓
┃ species ┃ island ┃ count ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩
│ string │ string │ int64 │
├───────────┼───────────┼───────┤
│ Adelie │ Biscoe │ 44 │
│ Adelie │ Torgersen │ 52 │
│ Adelie │ Dream │ 56 │
│ Chinstrap │ Dream │ 68 │
│ Gentoo │ Biscoe │ 124 │
└───────────┴───────────┴───────┘
يتيح لك ذلك الجمع بين مرونة Python وحجم وأداء SQL الحديث.
يدعم Ibis ما يقرب من 20 واجهة خلفية:
ترتبط معظم إطارات بيانات Python ارتباطًا وثيقًا بمحرك التنفيذ الخاص بها. والعديد من قواعد البيانات تدعم SQL فقط، بدون Python API. يحل Ibis هذه المشكلة من خلال توفير واجهة برمجة تطبيقات مشتركة لمعالجة البيانات في Python، وتجميع واجهة برمجة التطبيقات هذه إلى اللغة الأصلية للواجهة الخلفية. هذا يعني أنه يمكنك تعلم واجهة برمجة تطبيقات واحدة واستخدامها عبر أي واجهة خلفية مدعومة (محرك التنفيذ).
يدعم Ibis على نطاق واسع نوعين من الواجهة الخلفية:
لاستخدام واجهات خلفية مختلفة، يمكنك ضبط الواجهة الخلفية التي يستخدمها Ibis:
> >> ibis . set_backend ( "duckdb" )
> >> ibis . set_backend ( "polars" )
> >> ibis . set_backend ( "datafusion" )
عادةً، ستقوم بإنشاء كائن اتصال:
> >> con = ibis . duckdb . connect ()
> >> con = ibis . polars . connect ()
> >> con = ibis . datafusion . connect ()
والعمل مع الجداول في تلك الواجهة الخلفية:
> >> con . list_tables ()
[ 'penguins' ]
> >> t = con . table ( "penguins" )
يمكنك أيضًا القراءة من تنسيقات الملفات الشائعة مثل CSV أو Apache Parquet:
> >> t = con . read_csv ( "penguins.csv" )
> >> t = con . read_parquet ( "penguins.parquet" )
يتيح لك ذلك التكرار محليًا والنشر عن بُعد عن طريق تغيير سطر واحد من التعليمات البرمجية.
نصيحة
قم بمراجعة المدونة الخاصة بالمصفوفات المحايدة للواجهة الخلفية للحصول على مثال واحد باستخدام نفس الكود عبر DuckDB وBigQuery.
Ibis هو مشروع مفتوح المصدر ويرحب بالمساهمات من أي شخص في المجتمع.
انضم إلى مجتمعنا من خلال التفاعل على GitHub أو الدردشة معنا على Zulip.
لمزيد من المعلومات قم بزيارة https://ibis-project.org/.
مشروع Ibis هو مشروع مجتمعي مفتوح المصدر يتم إدارته بشكل مستقل لبناء وصيانة مكتبة Python Dataframe المحمولة. لدى Ibis مساهمون عبر مجموعة من شركات ومؤسسات البيانات.