File CSV (comma-separated value) adalah format file umum untuk mentransfer dan menyimpan data. Kemampuan untuk membaca, memanipulasi, dan menulis data ke dan dari file CSV menggunakan Python adalah keterampilan utama yang harus dikuasai oleh ilmuwan data atau analisis bisnis apa pun. Dalam postingan ini, kita akan membahas apa itu file CSV, cara membaca file CSV ke dalam Pandas DataFrames, dan cara menulis DataFrames kembali ke analisis pasca file CSV
Pandas adalah paket manipulasi data paling populer di Python, dan DataFrames adalah tipe data Pandas untuk menyimpan data 2D tabular
Daftar isi
Muat file CSV ke Python Pandas
Proses dasar memuat data dari file CSV ke dalam Pandas DataFrame (dengan semua berjalan dengan baik) dicapai dengan menggunakan fungsi "read_csv" di Pandas
# Load the Pandas libraries with alias 'pd' import pandas as pd # Read data from file 'filename.csv' # (in the same directory that your python process is based) # Control delimiters, rows, column names with read_csv (see later) data = pd.read_csv("filename.csv") # Preview the first 5 lines of the loaded data data.head()Meskipun kode ini tampak sederhana, pemahaman tentang tiga konsep dasar diperlukan untuk sepenuhnya memahami dan men-debug pengoperasian prosedur pemuatan data jika Anda mengalami masalah
- Memahami ekstensi file dan jenis file – apa sebenarnya arti huruf CSV? . file csv dan a. file txt?
- Memahami bagaimana data direpresentasikan di dalam file CSV – jika Anda membuka file CSV, seperti apa data sebenarnya?
- Memahami jalur Python dan cara mereferensikan file – apa jalur absolut dan relatif ke file yang Anda muat?
- Format dan kesalahan data CSV – kesalahan umum pada fungsi
Masing-masing topik ini dibahas di bawah, dan kami menyelesaikan tutorial ini dengan melihat beberapa mekanisme pemuatan CSV yang lebih canggih dan memberikan beberapa keuntungan dan kerugian luas dari format CSV
1. Ekstensi File dan Jenis File
Langkah pertama untuk bekerja dengan file comma-separated-value (CSV) adalah memahami konsep tipe file dan ekstensi file
- Data disimpan di komputer Anda dalam "file" atau wadah individual, masing-masing dengan nama yang berbeda
- Setiap file berisi data dari jenis yang berbeda – bagian dalam dokumen Word sangat berbeda dari bagian dalam gambar
- Komputer menentukan cara membaca file menggunakan “ekstensi file”, yaitu kode yang mengikuti titik (“. ”) di nama file
- So, a filename is typically in the form “.”. Examples:
- proyek1. DOCX – file Microsoft Word bernama Project1
- shanes_file. TXT – file teks sederhana bernama shanes_file
- IMG_5673. JPG – File gambar bernama IMG_5673
- Jenis dan ekstensi file terkenal lainnya termasuk. XLSX. Excel, PDF. Format Dokumen Portabel, PNG – gambar, ZIP – format file terkompresi, GIF – animasi, MPEG – video, MP3 – musik dll. Lihat daftar lengkap ekstensi di sini
- File CSV adalah file dengan tanda “. csv” ekstensi file, mis. g. "data. csv”, “informasi_super. csv”. "CSV" dalam hal ini memberi tahu komputer bahwa data yang terkandung dalam file dalam format "nilai yang dipisahkan koma", yang akan kita bahas di bawah
Ekstensi file disembunyikan secara default di banyak sistem operasi. Langkah pertama yang akan dilakukan oleh insinyur, insinyur perangkat lunak, atau ilmuwan data yang menghargai diri sendiri di komputer baru adalah memastikan bahwa ekstensi file ditampilkan di jendela Explorer (Windows) atau Finder (Mac) mereka
Untuk memeriksa apakah ekstensi file ditampilkan di sistem Anda, buat dokumen teks baru dengan Notepad (Windows) atau TextEdit (Mac) dan simpan ke folder pilihan Anda. Jika Anda tidak dapat melihat ". txt” di folder Anda ketika Anda melihatnya, Anda harus mengubah pengaturan Anda
- Di Microsoft Windows. Buka Panel Kontrol > Penampilan dan Personalisasi. Sekarang, klik Folder Options atau File Explorer Option, seperti yang sekarang disebut > tab View. Di tab ini, di bawah Pengaturan Lanjutan, Anda akan melihat opsi Sembunyikan ekstensi untuk jenis file yang dikenal. Hapus centang opsi ini lalu klik Terapkan dan Oke
- Di Mac OS. Buka Finder > Di menu, klik Finder > Preferences, Klik Advanced, Pilih kotak centang untuk “Show all filename extensions”
2. Representasi Data dalam file CSV
File "CSV", yaitu file dengan tipe file "csv", adalah file teks dasar. Editor teks apa pun seperti NotePad di windows atau TextEdit di Mac, dapat membuka file CSV dan menampilkan isinya. Sublime Text adalah opsi editor teks yang luar biasa dan multifungsi untuk platform apa pun
CSV adalah standar untuk menyimpan data tabular dalam format teks, di mana koma digunakan untuk memisahkan kolom yang berbeda, dan baris baru (carriage return / tekan enter) digunakan untuk memisahkan baris. Biasanya, baris pertama dalam file CSV berisi nama kolom untuk data
Dan kumpulan data tabel contoh dan data format CSV yang sesuai ditunjukkan pada diagram di bawah ini
Perhatikan bahwa hampir semua data tabular dapat disimpan dalam format CSV – format ini populer karena kesederhanaan dan fleksibilitasnya. Anda dapat membuat file teks di editor teks, simpan dengan a. csv, dan buka file tersebut di Excel atau Google Sheets untuk melihat formulir tabel
Pemisah / Pemisah Lainnya – file TSV
Skema pemisahan koma sejauh ini merupakan metode paling populer untuk menyimpan data tabular dalam file teks
Namun, pemilihan karakter ',' koma untuk kolom pembatas, bagaimanapun, bersifat arbitrer, dan dapat diganti jika diperlukan. Alternatif populer termasuk tab (“\t”) dan semi-colon (“;”). File tab-separate dikenal sebagai file TSV (Tab-Separated Value).
Saat memuat data dengan Panda, fungsi read_csv digunakan untuk membaca file teks apa pun yang dibatasi, dan dengan mengubah pembatas menggunakan parameter sep
Pembatas di Bidang Teks – Quotechar
Salah satu kerumitan dalam membuat file CSV adalah jika Anda memiliki koma, titik koma, atau tab sebenarnya di salah satu bidang teks yang ingin Anda simpan. Dalam hal ini, penting untuk menggunakan "karakter kutipan" di file CSV untuk membuat bidang ini
Karakter kutipan dapat ditentukan dalam Pandas. read_csv menggunakan argumen quotechar . Secara default (seperti pada banyak sistem), ini ditetapkan sebagai tanda kutip standar (“). Koma apa pun (atau pembatas lainnya seperti yang ditunjukkan di bawah) yang muncul di antara dua karakter kutipan akan diabaikan sebagai pemisah kolom
Dalam contoh yang ditampilkan, file yang dipisahkan titik koma, dengan tanda kutip sebagai kutipan dimuat ke dalam Pandas, dan ditampilkan di Excel. Penggunaan kutipan memungkinkan kolom "NickName" mengandung titik koma tanpa dibagi menjadi lebih banyak kolom
3. Python – Jalur, Folder, File
Saat Anda menentukan nama file ke Pandas. read_csv, Python akan mencari di "direktori kerja saat ini" Anda. Direktori kerja Anda biasanya adalah direktori tempat Anda memulai proses Python atau notebook Jupyter
Menemukan Jalur Python Anda
Jalur Python Anda dapat ditampilkan menggunakan modul os bawaan. Modul OS adalah untuk fungsionalitas yang bergantung pada sistem operasi ke dalam program dan skrip Python
Untuk menemukan direktori kerja Anda saat ini, fungsi yang diperlukan adalah os.getcwd(). Fungsi os.listdir() dapat digunakan untuk menampilkan semua file dalam direktori, yang merupakan pemeriksaan yang baik untuk melihat apakah file CSV yang Anda muat ada di direktori seperti yang diharapkan
# Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']_Pada contoh di atas, direktori kerja saya saat ini ada di direktori '/Users/Shane/Document/blog'. File apa pun yang ditempatkan di direktori ini akan segera tersedia untuk fungsi atau fungsi Pandas read csv
Alih-alih memindahkan file data yang diperlukan ke direktori kerja, Anda juga dapat mengubah direktori kerja saat ini ke direktori tempat file berada menggunakan os.chdir()
Memuat File. Jalur Absolut dan Relatif
Saat menentukan nama file ke fungsi read_csv, Anda dapat menyediakan jalur file absolut atau relatif
- Jalur relatif adalah jalur ke file jika Anda memulai dari direktori kerja saat ini. Di jalur relatif, biasanya file akan berada di subdirektori dari direktori kerja dan jalur tidak akan dimulai dengan penentu drive, mis. g. (data/file_tes. csv). Karakter '. ’ digunakan untuk pindah ke direktori induk di jalur relatif
- Jalur absolut adalah jalur lengkap dari dasar sistem file Anda ke file yang ingin Anda muat, mis. g. c. /Documents/Shane/data/test_file. csv. Jalur absolut akan dimulai dengan penentu drive (c. / atau d. / di Windows, atau '/' di Mac atau Linux)
Direkomendasikan dan lebih disukai untuk menggunakan jalur relatif jika memungkinkan dalam aplikasi, karena jalur absolut tidak mungkin berfungsi pada komputer yang berbeda karena struktur direktori yang berbeda
4. Kesalahan Memuat File CSV Panda
Kesalahan paling umum yang akan Anda dapatkan saat memuat data dari file CSV ke Panda adalah
- FileNotFoundError: File b'filename.csv' does not exist
Kesalahan File Tidak Ditemukan biasanya merupakan masalah dengan penyiapan jalur, direktori saat ini, atau kebingungan nama file (ekstensi file dapat berperan di sini. ) - # Find out your current working directory
import os
print(os.getcwd())
# Out: /Users/shane/Documents/blog
# Display all of the files found in your current working directory
print(os.listdir(os.getcwd())
# Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']_0
Kesalahan Dekode Unicode biasanya disebabkan oleh tidak ditentukannya penyandian file, dan terjadi jika Anda memiliki file dengan karakter non-standar. Untuk perbaikan cepat, coba buka file dalam Sublime Text, dan simpan kembali dengan penyandian 'UTF-8' - # Find out your current working directory
import os
print(os.getcwd())
# Out: /Users/shane/Documents/blog
# Display all of the files found in your current working directory
print(os.listdir(os.getcwd())
# Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']_1
Kesalahan Parse dapat disebabkan dalam keadaan yang tidak biasa terkait dengan format data Anda – coba tambahkan parameter “engine='python'” ke pemanggilan fungsi read_csv;
File CSV Baca Tingkat Lanjut
Ada beberapa parameter fleksibel tambahan dalam fungsi Pandas read_csv() yang berguna untuk dimiliki dalam gudang teknik ilmu data Anda
Menentukan Tipe Data
Seperti disebutkan sebelumnya, file CSV tidak berisi informasi jenis apa pun untuk data. Tipe data disimpulkan melalui pemeriksaan baris atas file, yang dapat menyebabkan kesalahan. Untuk menentukan jenis data secara manual untuk kolom yang berbeda, parameter dtype dapat digunakan dengan kamus nama kolom dan jenis data yang akan diterapkan, misalnya. # Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']_2
Perhatikan bahwa untuk tanggal dan waktu tanggal, format, kolom, dan perilaku lainnya dapat disesuaikan menggunakan parameter parse_dates, date_parser, dayfirst, keep_date
Melewati dan Memilih Baris dan Kolom Dari File
Parameter nrows menentukan berapa banyak baris dari bagian atas file CSV yang akan dibaca, yang berguna untuk mengambil sampel file besar tanpa memuat sepenuhnya. Demikian pula, parameter skiprows memungkinkan Anda menentukan baris yang akan ditinggalkan, baik di awal file (berikan int), atau di seluruh file (berikan daftar indeks baris). Demikian pula, parameter usecols dapat digunakan untuk menentukan kolom mana dalam data yang akan dimuat
Simbol Nilai Hilang Kustom
Saat data diekspor ke CSV dari sistem yang berbeda, nilai yang hilang dapat ditentukan dengan token yang berbeda. Parameter na_values memungkinkan Anda menyesuaikan karakter yang dikenali sebagai nilai yang hilang. Nilai default yang ditafsirkan sebagai NA/NaN adalah. ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1. #IND’, ‘-1. #QNAN’, ‘-NaN’, ‘-nan’, ‘1. #IND’, ‘1. #QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’
# Advanced CSV loading example data = pd.read_csv( "data/files/complex_data_example.tsv", # relative python path to subdirectory sep='\t' # Tab-separated value file. quotechar="'", # single quote allowed as quote character dtype={"salary": int}, # Parse the salary column as an integer usecols=['name', 'birth_date', 'salary']. # Only load the three columns specified. parse_dates=['birth_date'], # Intepret the birth_date column as a date skiprows=10, # Skip the first 10 rows of the file na_values=['.', '??'] # Take any '.' or '??' values as NA )Kelebihan dan Kekurangan Format CSV
Seperti semua keputusan teknis, menyimpan data Anda dalam format CSV memiliki kelebihan dan kekurangan. Waspadai potensi jebakan dan masalah yang akan Anda temui saat memuat, menyimpan, dan bertukar data dalam format CSV
Di sisi positifnya
- Format CSV bersifat universal dan data dapat dimuat oleh hampir semua perangkat lunak
- File CSV mudah dipahami dan di-debug dengan editor teks dasar
- File CSV dibuat dengan cepat dan dimuat ke dalam memori sebelum dianalisis
Namun, format CSV memiliki beberapa sisi negatif
- Tidak ada informasi tipe data yang disimpan dalam file teks, semua pengetikan (tanggal, int vs float, string) disimpulkan dari data saja
- Tidak ada informasi pemformatan atau tata letak yang dapat disimpan – hal-hal seperti font, batas, pengaturan lebar kolom dari Microsoft Excel akan hilang
- Pengkodean file dapat menjadi masalah jika ada karakter yang tidak kompatibel dengan ASCII di bidang teks
- Format CSV tidak efisien; . Namun Anda akan menemukan bahwa data CSV Anda terkompresi dengan baik menggunakan kompresi zip
Selain itu, dalam upaya untuk mengatasi beberapa kelemahan ini, dua pengembang ilmu data terkemuka di ekosistem R dan Python, Wes McKinney dan Hadley Wickham, baru-baru ini memperkenalkan Feather Format, yang bertujuan untuk menjadi format yang cepat, sederhana, terbuka,