Artikel ini membahas berbagai cara mengimpor berkas teks ke Python menggunakan Python, NumPy, dan metode bawaan Python. Juga membahas cara mengonversinya menjadi list.
Tutorial ini membahas cara membaca berkas teks di Python. Ini adalah langkah awal yang penting dalam proyek apa pun yang melibatkan data teks, khususnya Natural Language Processing (“NLP”). Ada beberapa nuansa dan jebakan umum saat mengimpor berkas teks ke Python, sehingga ilmuwan data sering kali harus meninggalkan paket yang sudah familier seperti pandas untuk menangani data teks secara lebih efisien.
Agar mendapatkan manfaat maksimal dari artikel ini, Anda sebaiknya memiliki pengetahuan dasar Python, khususnya memahami tipe data seperti perbedaan antara string, integer, dan list. Pemahaman tentang pandas dan apa itu dataframe juga akan berguna.
Untuk tutorial ini, kita akan menggunakan berkas teks sederhana yang merupakan salinan paragraf pertama dari halaman Wikipedia tentang Natural Language Processing. Berkas ini disimpan dengan nama nlp_wiki.txt. Isinya sebagai berikut:
"Natural language processing (NLP) is an interdisciplinary subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language, in particular how to program computers to process and analyze large amounts of natural language data. The goal is a computer capable of "understanding" the contents of documents, including the contextual nuances of the language within them. The technology can then accurately extract information and insights contained in the documents as well as categorize and organize the documents themselves. Challenges in natural language processing frequently involve speech recognition, natural-language understanding, and natural-language generation."
Mengimpor data teks di Python
Mengimpor data menggunakan fungsi pandas read_table()
Fungsi pandas read_table() dirancang untuk membaca berkas teks berdelimiter (misalnya spreadsheet yang disimpan sebagai berkas teks, dengan koma sebagai pemisah kolom) ke dalam sebuah dataframe. Berkas teks kita tidak berdelimiter. Ini hanya salinan teks. Namun, menggunakan pandas bisa menjadi cara yang berguna untuk melihat isi dengan cepat karena sintaks fungsi ini mirip dengan read_csv(), yang sudah familier bagi sebagian besar ilmuwan data.
Kode di bawah ini dapat digunakan untuk membaca berkas teks menggunakan pandas.
Kita meneruskan nama berkas teks dan dua argumen ke fungsi read_table().
header=None memberi tahu pandas bahwa baris pertama berisi teks, bukan header.
delimiter=None memberi tahu pandas untuk tidak memisahkan baris di mana pun (kecuali newline) sehingga ada satu kolom dengan satu baris per baris teks.
Dalam situasi ini, DataFrame tidak selalu ideal. Paragraf dipisahkan menjadi baris-baris individual (pandas menggunakan karakter newline untuk melakukan ini), dan kita tidak dapat melihat keluaran penuh. Opsi lain adalah memanggil metode .to_list() pada kolom tersebut.
Ini mengembalikan list yang dapat diakses seperti list Python biasa. Ini juga menampilkan teks lengkap.
Menyesuaikan impor dengan read_table()
Fungsi read_table() memiliki banyak argumen kata kunci opsional, yang dapat Anda baca di dokumentasi resmi. Berikut beberapa yang paling berguna:
skiprows=n
Ini melewati n baris pertama. Pada contoh kita, kita melewati baris pertama.
nrows=n
Ini mempertahankan n baris pertama. Pada contoh kita, kita mempertahankan baris pertama.
skip_blank_lines= True
pandas akan melewati nilai NaN apa pun alih-alih mengembalikan baris kosong.
Mengimpor data teks dengan loadtxt() milik NumPy
loadtxt() milik NumPy dirancang untuk membaca array angka dari berkas teks; namun, ini juga bisa digunakan untuk membaca baris teks. Ini nyaman jika Anda menggunakan NumPy di bagian analisis lainnya, karena keluarannya adalah array NumPy.
Sama seperti contoh pandas, kita meneruskan argumen delimiter untuk mencegah baris dipecah. Dalam kasus ini, delimiter harus satu karakter (menggunakan None berperilaku berbeda), sehingga kita menggunakan karakter "null termination", \0. Karena karakter ini tidak dapat berada di tengah string, menggunakannya berarti "jangan gunakan delimiter".
Kita juga meneruskan dtype="str" yang memberi tahu NumPy tipe data apa yang akan diberikan pada array hasil. Dalam kasus kita, kita menggunakan “str” yang mengembalikan string. Ini juga dapat dikonversi menjadi list menggunakan fungsi .tolist().
Mengimpor berkas teks dengan fungsi bawaan Python open()
Fleksibilitas maksimum dapat dicapai dengan menggunakan fungsionalitas bawaan Python. Ini kurang ramah pengguna dan terutama dirancang untuk rekayasa perangkat lunak. Solusi pandas atau NumPy umumnya sudah cukup untuk analisis data.
Untuk menggunakan open(), Anda juga memerlukan context manager, yaitu kata kunci with. Ini mengalokasikan sumber daya komputer Anda hanya saat kode bertanda inden di bawah with sedang berjalan. Dalam kasus ini, kita membuka file, melakukan loop dan menyimpannya di memori ke variabel lines, lalu menutupnya.
For loop di sini menggunakan list comprehension, setiap baris adalah baris sebagaimana diinterpretasikan oleh fungsi open(), yang dalam kasus ini adalah newline (\n).
Blok kode ini juga menggunakan fungsi strip(), yang menghapus spasi tambahan sebelum dan sesudah setiap objek (atau baris).
with open(filename) as file:
lines = [line.strip() for line in file]
Keluaran:
Seperti yang terlihat, ini menghasilkan satu list, di mana setiap item dalam list adalah satu paragraf. Tidak seperti contoh pandas dan NumPy, kita memiliki tiga objek di sini, karena teks aslinya memiliki dua newline di antara paragraf.
Menulis berkas teks di Python
Sekarang setelah kita membahas cara mengimpor berkas teks di Python, mari lihat cara menulis berkas teks. Yang dimaksud menulis berkas adalah menyimpan berkas teks ke mesin Anda dari Python. Ini sangat berguna saat Anda telah memanipulasi berkas teks di Python dan ingin menyimpan keluarannya.
Menulis berkas teks menggunakan metode bawaan write()
Anda dapat menulis berkas teks di Python menggunakan metode bawaan write(). Ini juga memerlukan penggunaan open(), dan Anda juga memerlukan context manager, yaitu kata kunci with. Mari ilustrasikan dengan contoh:
with open("new_nlp_wiki.txt", "w") as file:
file.write("New wiki entry: ChatGPT")
Pada contoh ini, kita membuka berkas bernama new_nlp_wiki.txt dalam mode tulis (argumen 'w'), yang berarti konten apa pun yang sudah ada di berkas akan ditimpa. Lalu kita memanggil metode write() pada objek file untuk menulis string “New wiki entry: ChatGPT” ke berkas.
Jika Anda ingin menambahkan teks ke berkas yang sudah ada alih-alih menimpanya, Anda bisa membuka berkas dalam mode append (argumen 'a') sebagai gantinya:
with open("new_nlp_wiki.txt", "a") as file:
file.write("New wiki entry: ChatGPT")
Menulis berkas teks menggunakan metode pandas to_csv()
Cara termudah untuk menulis berkas teks menggunakan pandas mungkin adalah dengan metode to_csv(). Mari kita lihat contohnya!
Pada baris kode pertama, kita membaca berkas teks menggunakan metode read_table() seperti dijelaskan pada bagian sebelumnya. Lalu kita menyimpan berkas menggunakan metode to_csv() dan menentukan pemisah sebagai karakter tab ('\t') serta menyetel argumen index ke False untuk mengecualikan indeks baris dari keluaran.
Ringkasan
Semoga Anda menikmati tutorial ini! Sebagai rangkuman, berikut yang telah kita bahas:
Mengimpor data teks dengan pandas dan NumPy di Python
Menulis berkas teks menggunakan fungsi bawaan Python dan pandas
Selami ilmu data dengan Python dan pelajari cara menganalisis serta memvisualisasikan data Anda secara efektif. Tak perlu pengalaman atau keterampilan coding.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.