Data Science For Beginner | Cara Membaca File Excel Menggunakan Python
Cara Membaca File Excel Menggunakan Python Openpyxl
Sebagai seorang backend engineer, ataupun data science, tentunya kita dituntut untuk bisa mengolah sebuah data mentah atau biasa disebut raw data, karena dengan data-data tersebut kita bisa melakukan banyak analisa.
Jika kita bekerja pada sebuah perusahaan, data-data mentah ini biasanya tersimpan dalam Excel .xlsx
dan CSV .csv
.
Pada tutorial kali ini, kita akan belajar tentang bagaimana membaca sebuah data dari Excel menggunakan python.
Apa yang akan kita pelajar?
- Manipulasi data pada Excel
- Mengekstrak sebuah data / informasi dari Excel
- Membuat sebuah data sederhana hingga data komplek di Excel menggunakan python
Table of contents
Tutorial kali ini akan lebih mudah dipahami jika kita telah mengetahui dasar-dasar python seperti dict
dan list
, juga pengetahuan dasar oop (Object Oriented Programming)
Study Case
➡️ Mengimport data dari Excel ke dalam Database
- Seperti dalam sebuah pekerjaan, kita diberi sebuah tanggung jawab untuk mengimport sebuah raw data dari file Excel dengan jumlah ratusan bahkan ribuan ke dalam sebuah database perusahaan.
➡️ Mengeksport data dari Database ke dalam sebuah file Excel
- Kemudian kita diberi sebuah tanggung jawab untuk melakukan export data dari database ke dalam sebuah file Excel yang berjumlah ratusan rows.
➡️ Menambahkan sebuah data ke dalam file Excel
- Menambahkan sebuah data (row / collumn) baru ke dalam data Excel tersebut dengan jumlah ratusan.
Lalu bagaimana jika kita melakukannya secara manual atau bahkan rumus excel?
Manual? sepertinya sangat impossible bukan? sedangkan jika kita menggunakan rumus Excel, mungkin bisa juga menjadi bahan pertimbangan jika data-data tersebut hanya berjumlah puluhan atau di bawah 500 row / collumn.
Akan tetapi pada study case kali ini kita akan menggunakan cara seorang engineer, yang mana kita diwajibkan untuk bisa menghandle ratusan bahkan ribuan rows dalam satu file.
Oleh karenanya, kita akan mencoba menggunakan cara tersebut.
Now let’s get into it!
Catatan: pastikan kita telah menginstall latest version python dan telah menyiapkan Virtual Environment untuk project tersebut.
Install Openpyxl
Install openpyxl
melalui terminal:
$ pip install openpyxl
Tunggu hingga proses selesai, dan selanjutnya kita akan membuat sebuah workbook sederhana menggunakan python, buatlah file bernama excel.py
.
$ vim excel.py
Note: Kita bisa menggunakan text editor apapun, contoh di atas ditulis menggunakan VIM
.
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
sheet['A1'] = "noTnoob"
sheet['B1'] = "Dev"
workbook.save(filename="latihan.xlsx")
Lalu jalankan file python excel.py
tersebut, maka dalam folder yang sama, kita akan mendapatkan sebuah file excel baru bernama latihan.xlsx
.
Jika kita buka file excel tersebut, maka di dalamnya akan berisi dua kata, yaitu “notnoob” dan “Dev” pada kolom A
dan B
.
Oh Hell yeah dude, and it’s working!!! 🤘
Mengimport file Excel menggunakan openpyxl
Setelah percobaan pertama berhasil, langkah selanjutnya adalah membaca sebuah file excel dengan kita siapkan sebelumnya.
Di dalam file exel tersebut terdapat 100 rows.
Langakah selanjutnya adalah, buka terminal / cmd kita. Masuk ke dalam python shell
untuk langsung mengeksekusi file di atas:
❯ python
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Let’s do it!
>>> from openpyxl import load_workbook
>>> data = load_workbook(filename="100_data_excel.xlsx")
>>> data.sheetnames
['Sheet1']
>>> sheet = data.active
>>> sheet
<Worksheet "Sheet1">
>>> sheet.title
'Sheet1'
>>>
- Pada baris kode pertama di atas, kita mengimpoert module
load_workbook
- Baris kode ke dua,
data = load_workbook(filename="100_data_excel.xlsx")
kita memanggil file excel dalam variabledata
- Baris ke tiga,
data.sheetnames
, kita membaca sheet apa sajakah yang ada di dalam file excel yang sebelumnya telah ditampung pada variabledata
- Baris ke empat dan kelima,
sheet = data.active
untuk memilih sheet pertama yang ada, dansheet
akan akan menunjukkan “sheet 1” ketika kita memanggil variablesheet
.
Pada tutorial membaca file excel menggunakan python ini, kita akan banyak menggunakan metode seperti di atas untuk membaca sebuah file excel.
Selanjutnya, kita dapat dengan mudah membaca data apa saja yang ada di dalam file excel tersebut menggunakan perintah:
>>> sheet["B1"]
<Cell 'Sheet1'.B1>
>>> sheet["B1"].value
'First Name'
>>> sheet["E5"].value
'United States'
>>>
- Baris pertama: kita ingin melakukan pengecekan kolom B1 (kolom B baris ke 1)
- Baris ke dua: kita ingin membaca value yang ada di kolom B1
sheet["B1"].value
yang berisi “First Name” - Pada baris ke tiga: kita membaca isi dari E5 (kolom E baris ke 5), dan mendapatkan value “United States”
.value
pada baris kode di atas adalah jika kita ingin mendapatkan nilai / data dari kolom yang kita kehendaki. Tanpa.value
kita akan mendapatkan hasil seperti pada baris pertama di atas.
Kita juga dapat menggunakan .cell()
untuk mendapatkan index notation.
Contoh:
>>> sheet.cell(row=30, column=4)
<Cell 'Sheet1'.D30>
>>> sheet.cell(row=30, column=4).value
'Male'
Membaca data Excel menggunakan openpyxl
Selanjutnya kita akan mencoba melakukan iterasi / iteration / pengulangan pada file excel sebelumnya untuk mendapatkan value yang lebih spesifik.
Menggunakan metode list slicing:
>>> sheet["B3:C4"]
((<Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>), (<Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>))
Pada contoh di atas, melakukan slice
menggunakan list
pada python untuk mendapatkan membaca dimulai dari kolom B row ke 3 hingga kolom C row ke 4.
Kita juga bisa melakukan pengulangan / iterasi / loop or whatever you called it menggunakan:
>>> sheet["A"]
(<Cell 'Sheet1'.A1>,
<Cell 'Sheet1'.A2>,
<Cell 'Sheet1'.A3>,
<Cell 'Sheet1'.A4>,
<Cell 'Sheet1'.A5>,
...
<Cell 'Sheet1'.A98>,
<Cell 'Sheet1'.A99>,
<Cell 'Sheet1'.A100>,
<Cell 'Sheet1'.A101>)
Perintah di atas akan menampilkan semua rows yang ada pada kolom A.
>>> sheet["A:B"]
((<Cell 'Sheet1'.A1>,
<Cell 'Sheet1'.A2>,
...
<Cell 'Sheet1'.A99>,
<Cell 'Sheet1'.A100>),
(<Cell 'Sheet1'.B1>,
<Cell 'Sheet1'.B2>,
...
<Cell 'Sheet1'.B99>,
<Cell 'Sheet1'.B100>))
Perintah di bawah ini akan menampilkan semua rows yang ada pada kolom A dan B.
>>> sheet[3]
(<Cell 'Sheet1'.A3>,
<Cell 'Sheet1'.B3>,
<Cell 'Sheet1'.C3>,
<Cell 'Sheet1'.D3>,
<Cell 'Sheet1'.E3>,
<Cell 'Sheet1'.F3>,
<Cell 'Sheet1'.G3>,
<Cell 'Sheet1'.H3>)
Perintah di atas akan menampilkan semua data pada row ke 3
>>> sheet[3:5]
((<Cell 'Sheet1'.A3>,
<Cell 'Sheet1'.B3>,
<Cell 'Sheet1'.C3>,
<Cell 'Sheet1'.D3>,
...
<Cell 'Sheet1'.F5>,
<Cell 'Sheet1'.G5>,
<Cell 'Sheet1'.H5>))
Baris kode di atas dapat kita gunakan untuk mendapatkan row yang kita inginkan, dimulai dari row ke 3 hingga row ke 5
Jika kita perhatikan kembali, maka pemrosesan data-data di atas melibatkan list
dan tuple
pada python.
Oleh karenanya, memahami penggunaan list
, seperti list slicing dsb, sangatlah dianjurkan agar dapat dengan mudah memahami tutorial ini.
Kita juga dapat menggunakan default python generator untuk mendapatkan data pada file excel seperti:
iter_rows()
iter_cols()
Contoh penggunaa digabungkan dengan loop:
rows
>>> for row in sheet.iter_rows(min_row=1,
max_row=2,
min_col=1,
max_col=3):
print(row)
...
...
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
- Seperti yang kita lihat, pada contoh baris kode di atas kita melakukan sebuah perulangan pada
row
menggunakaniter_rows
dan mendapatkan hasil datatuple
yang berisikan row pada setiap element yang kita pilih.
>>> for column in sheet.iter_cols(min_row=1,
max_row=2,
min_col=1,
max_col=3):
... print(column)
...
(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.A2>)
(<Cell 'Sheet1'.B1>, <Cell 'Sheet1'.B2>)
(<Cell 'Sheet1'.C1>, <Cell 'Sheet1'.C2>)
- Dan selanjutnya, kita menggunakan
iter_cols
untuk melakukan perulangan pada kolom-kolom excel dan mendapatkan datatuple
yang berisicolumns
sesuai yang telah kita pilih.
Kita juga dapat menambahkan sebuah argumen boolean yaitu values_only
menjadi True
untuk mendapatkan value
dari file excel tersebut, bukan sebuah object Cell
seperti yang kita gunakan di atas.
Contoh:
>>> for value in sheet.iter_rows(min_row=1,
max_row=2,
min_col=1,
max_col=3,
values_only=True):
... print(value)
...
(0, 'First Name', 'Last Name')
(1, 'Dulce', 'Abril')
Hasil yang kita dapat pun adalah sebuah value dari file excel tersebut, bukan sebuah object seperti sebelumnya.
Agar tutorial ini tidak terlalu panjang, maka kita akan melanjutkan part 2 dari tutorial ini dengan lebih fokus tentang bagaimana cara memanipulasi data excel menggunakan python.
Tags: #python
Subscribe to noTnoob Dev
Get the latest posts delivered right to your inbox