Ibis adalah pustaka kerangka data Python portabel:
Lihat dokumentasi tentang "Mengapa Ibis?" untuk mempelajari lebih lanjut.
Anda dapat pip install
Ibis dengan backend dan contoh data:
pip install ' ibis-framework[duckdb,examples] '
Tip
Lihat panduan instalasi untuk opsi instalasi lebih lanjut.
Kemudian gunakan Ibis:
> >> 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 │
└───────────┴───────────┴───────┘
Tip
Lihat tutorial memulai untuk pengenalan lengkap tentang Ibis.
Untuk sebagian besar backend, Ibis bekerja dengan mengkompilasi ekspresi kerangka datanya ke dalam 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
Anda dapat mencampur kode SQL dan 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 │
└───────────┴───────────┴───────┘
Hal ini memungkinkan Anda untuk menggabungkan fleksibilitas Python dengan skala dan kinerja SQL modern.
Ibis mendukung hampir 20 backend:
Sebagian besar kerangka data Python digabungkan erat dengan mesin eksekusinya. Dan banyak database hanya mendukung SQL, tanpa API Python. Ibis memecahkan masalah ini dengan menyediakan API umum untuk manipulasi data dengan Python, dan mengkompilasi API tersebut ke dalam bahasa asli backend. Ini berarti Anda dapat mempelajari satu API dan menggunakannya di semua backend yang didukung (mesin eksekusi).
Ibis secara luas mendukung dua jenis backend:
Untuk menggunakan backend yang berbeda, Anda dapat mengatur backend yang digunakan Ibis:
> >> ibis . set_backend ( "duckdb" )
> >> ibis . set_backend ( "polars" )
> >> ibis . set_backend ( "datafusion" )
Biasanya, Anda akan membuat objek koneksi:
> >> con = ibis . duckdb . connect ()
> >> con = ibis . polars . connect ()
> >> con = ibis . datafusion . connect ()
Dan bekerja dengan tabel di backend itu:
> >> con . list_tables ()
[ 'penguins' ]
> >> t = con . table ( "penguins" )
Anda juga dapat membaca dari format file umum seperti CSV atau Apache Parket:
> >> t = con . read_csv ( "penguins.csv" )
> >> t = con . read_parquet ( "penguins.parquet" )
Hal ini memungkinkan Anda melakukan iterasi secara lokal dan menerapkannya dari jarak jauh dengan mengubah satu baris kode.
Tip
Lihat blog tentang array agnostik backend untuk mengetahui satu contoh penggunaan kode yang sama di DuckDB dan BigQuery.
Ibis adalah proyek sumber terbuka dan menerima kontribusi dari siapa pun di komunitas.
Bergabunglah dengan komunitas kami dengan berinteraksi di GitHub atau mengobrol dengan kami di Zulip.
Untuk informasi lebih lanjut kunjungi https://ibis-project.org/.
Proyek Ibis adalah proyek komunitas sumber terbuka yang diatur secara independen untuk membangun dan memelihara pustaka kerangka data Python portabel. Ibis memiliki kontributor di berbagai perusahaan dan institusi data.