Baca kumpulan data R dari Python.
Paket rdata menawarkan cara ringan untuk mengimpor kumpulan data/objek R yang disimpan dalam format ".rda" dan ".rds" ke dalam Python. Keuntungan utamanya adalah:
Ini adalah implementasi Python murni, tanpa ketergantungan pada bahasa R atau perpustakaan terkait. Oleh karena itu, ini dapat digunakan di mana saja yang mendukung Python, termasuk web yang menggunakan Pyodide.
Ini berupaya mendukung semua objek R yang dapat diterjemahkan secara bermakna. Berbeda dengan solusi lain, Anda tidak dibatasi untuk mengimpor kerangka data atau data dengan struktur tertentu.
Hal ini memungkinkan pengguna untuk dengan mudah menyesuaikan konversi kelas R ke kelas Python. Apakah data Anda menggunakan kelas R khusus? Jangan khawatir lagi, karena Anda dapat menentukan konversi khusus ke kelas Python pilihan Anda.
Ini memiliki lisensi permisif (MIT). Berbeda dengan paket lain yang bergantung pada perpustakaan R dan karenanya harus mematuhi lisensi GPL, Anda dapat menggunakan rdata sebagai ketergantungan pada MIT, BSD, atau bahkan proyek sumber tertutup.
rdata ada di PyPi dan dapat diinstal menggunakan pip
:
pip instal rdata
Ini juga tersedia untuk conda
menggunakan saluran conda-forge
:
conda install -c conda-forge rdata
Versi saat ini dari cabang pengembangan dapat diinstal sebagai
pip instal git+https://github.com/vnmabus/rdata.git@develop
Dokumentasi rdata ada di ReadTheDocs.
Contoh penggunaan tersedia di ReadTheDocs.
Cara umum membaca kumpulan data R adalah sebagai berikut:
impor rdataconverted = rdata.read_rda(rdata.TESTDATA_PATH / "test_vector.rda") dikonversi
yang mengakibatkan
{'test_vector': array([1., 2., 3.])}
Di bawah tenda, ini setara dengan kode berikut:
impor rdataparsed = rdata.parser.parse_file(rdata.TESTDATA_PATH / "test_vector.rda") dikonversi = rdata.conversion.convert(diurai)dikonversi
Ini terdiri dari dua langkah:
Pertama, file diurai menggunakan fungsi rdata.parser.parse_file. Ini memberikan deskripsi literal tentang konten file sebagai hierarki objek Python yang mewakili objek R dasar. Langkah ini jelas dan selalu sama.
Kemudian, setiap objek harus dikonversi ke objek Python yang sesuai. Pada langkah ini terdapat beberapa pilihan tipe Python mana yang paling tepat sebagai konversi objek R tertentu. Oleh karena itu, kami menyediakan rutinitas rdata.conversion.convert default, yang mencoba memilih objek Python yang menyimpan sebagian besar informasi dari objek R asli. Untuk kelas R khusus, dimungkinkan juga untuk menentukan rutinitas konversi ke objek Python.
Rutinitas konversi dasar hanya membuat objek SimpleConverter dan memanggil metode konversinya. Semua argumen convert langsung diteruskan ke metode inisialisasi SimpleConverter.
Meskipun tidak sepele, dimungkinkan untuk membuat objek Konverter khusus untuk mengubah cara objek R dasar diubah menjadi objek Python. Namun, situasi yang lebih umum adalah seseorang tidak ingin mengubah cara objek R dasar dikonversi, melainkan ingin menyediakan konversi untuk kelas R tertentu. Hal ini dapat dilakukan dengan meneruskan kamus ke metode inisialisasi SimpleConverter, yang berisi kunci nama kelas R dan sebagai nilai, callable yang mengonversi objek R dari kelas tersebut menjadi objek Python. Secara default, kamus yang digunakan adalah DEFAULT_CLASS_MAP, yang dapat mengkonversi kelas R yang umum digunakan seperti data.frame dan faktor.
Sebagai contoh, berikut adalah cara kita menerapkan konversi rutin untuk kelas faktor ke objek bytes, alih-alih konversi default ke objek Pandas Categorical:
import rdatadef factor_constructor(obj, attrs): value = [bytes(attrs['levels'][i - 1], 'utf8') if i >= 0 else Tidak ada untuk i di obj] return valuenew_dict = { **rdata. konversi.DEFAULT_CLASS_MAP, "faktor": faktor_konstruktor}dikonversi = rdata.read_rda( rdata.TESTDATA_PATH / "test_dataframe.rda", konstruktor_dict=new_dict, )dikonversi
yang mempunyai hasil sebagai berikut:
{'test_dataframe': nilai kelas 1 b'a' 1 2 b'b' 2 3 b'b' 3}
Contoh tambahan yang menggambarkan fungsionalitas paket ini dapat ditemukan di dokumentasi ReadTheDocs.