Cara memanipulasi data Excel menggunakan Python - Tutorial ini adalah lanjutan dari tutorial pertama yaitu tentang bagaimana cara membaca file excel menggunakan python yang telah kita pelajari sebelumnya.
Jika teman-teman baru saja mengunjungi tutorial ini dan masih dalam tahap pemula, sebaiknya membaca dulu tutorial sebelumnya di sini agar lebih mudah mengikuti alur dari tutorial ini.
JSON
fileSetelah kita belajar basic untuk membaca file excel menggunakan python, sekarang kita akan mencoba memanipulasi sebuah data pada excel menggunakan python.
Untuk mendapatkan informasi yang lebih spesifik, kita harus tahu data apa saja yang kita butuhkan dari file excel tersebut untuk mempermudah proses manipulasi.
>>> import json
>>> from openpyxl import load_workbook
>>> data = load_workbook(filename="100_data_excel.xlsx")
>>> sheet = data.active
>>> sheet
<Worksheet "Sheet1">
>>> for value in sheet.iter_rows(min_row=1, max_row=1, values_only=True):
... print(value)
...
(0, 'First Name', 'Last Name', 'Gender', 'Country', 'Age', 'Date', 'Id')
0, 'First Name', 'Last Name', 'Gender', 'Country', 'Age', 'Date', 'Id'
Selanjutnya kita ingin membaca apa data apa saja kah yang ada pada row 90 menggunakan metode pengulangan / iterasi, dan mendapatkan hasil yang diinginkan, yaitu sebuah value dari row ke 90.
>>> for value in sheet.iter_rows(min_row=91,
max_row=91,
values_only=True):
... print(value)
...
(90, 'Chase', 'Karner', 'Male', 'United States', 37, '15/10/2017', 2154)
Question: Mengapa kita memilih row ke 91 jika kita ingin mendapatkan data pada row ke 90?
Answer: Karena row pertama adalah value dari header.
Contoh lain untuk mendapatkan data yang lebih spesifik, kita bisa menggunakan parameter seperti berikut:
>>> for value in sheet.iter_rows(min_row=90,
min_col=2,
max_col=5,
values_only=True):
print(value)
('Shanice', 'Mccrystal', 'Female', 'United States')
('Chase', 'Karner', 'Male', 'United States')
('Tommie', 'Underdahl', 'Male', 'United States')
('Dorcas', 'Darity', 'Female', 'United States')
('Angel', 'Sanor', 'Male', 'France')
('Willodean', 'Harn', 'Female', 'United States')
('Weston', 'Martina', 'Male', 'United States')
('Roma', 'Lafollette', 'Female', 'United States')
('Felisa', 'Cail', 'Female', 'United States')
('Demetria', 'Abbey', 'Female', 'United States')
('Jeromy', 'Danz', 'Male', 'United States')
('Rasheeda', 'Alkire', 'Female', 'United States')
Pada baris kode di atas, kita ingin mendapatkan data yang lebih spesifik dimulai dari row ke 90, kolom ke 2 hingga ke 5, maka kita akan mendapatkan data seperti di atas, cukup mudah bukan?.
Sekarang mari kita cocokkan data tersebut apakah seusuai?
Dan yep!. data tersebut sesuai, menarik sekali bukan?.
JSON
Selanjutnya adalah kita akan memasukkan data tersebut ke dalam dict
menggunakan iterasi pada python agar pengolahan data menjadi lebih mudah.
dataku = {}
for row in sheet.iter_rows(min_row=2,
max_row=5,
min_col=2,
max_col=8,
values_only=True):
data_id = row[0]
data_baru = {
"nama depan": row[0],
"nama belakang": row[1],
"kelamin": row[2],
"negara": row[3],
"usia": row[4],
"tanggal join": row[5],
"id": row[6]
}
dataku[data_id] = data_baru
print(json.dumps(dataku))
Pada script di atas kita menggunakan indexing pada tuple
untuk mendapatkan data dari row pertama hingga row ke 4, kemudian menyimpan data tersebut ke dalam sebuah python dict
kemudian melakukan convert menjadi json menggunakan metode json.dumps
yang telah kita import di atas pertama kali.
Jika script di atas kita jalankan maka akan mendapatkan hasil seperti di bawah ini:
{
"Dulce":{
"nama depan":"Dulce",
"nama belakang":"Abril",
"kelamin":"Female",
"negara":"United States",
"usia":32,
"tanggal join":"15/10/2017",
"id":1562
},
"Mara":{
"nama depan":"Mara",
"nama belakang":"Hashimoto",
"kelamin":"Female",
"negara":"Great Britain",
"usia":25,
"tanggal join":"16/08/2016",
"id":1582
},
"Philip":{
"nama depan":"Philip",
"nama belakang":"Gent",
"kelamin":"Male",
"negara":"France",
"usia":36,
"tanggal join":"21/05/2015",
"id":2587
},
"Kathleen":{
"nama depan":"Kathleen",
"nama belakang":"Hanner",
"kelamin":"Female",
"negara":"United States",
"usia":25,
"tanggal join":"15/10/2017",
"id":3549
}
}
Data di atas adalah data JSON
yang berhasil kita convert.
Mari kita cocokkan data tersebut dengan file excel kita, apakah telah sesuai?
And yep, that’s correct!.
JSON
fileKita juga dapat menyimpan data json di atas menjadi sebuah file baru yang kemudian bisa kita import ke dalam sebuah database.
Tambahkan kode berikut di bawah baris kode ini
# menampung hasil convert json ke dalam variable X
>>> x = json.dumps(dataku)
# simple swap variable
>>> simpan = x
# menyimpan data ke dalam folder kita
>>> with open('data_baru.json', 'w') as json_file:
json.dump(simpan, json_file)
Dari script di atas, kita telah berhasil menyimpan hail output tadi menjadi sebuah file JSON
baru.
Jika kita melihat ke dalam working directory, maka kita akan menemukan file bernama data_baru.json
, menarik bukan?
Lalu mengapa jason JSON
? Karena dengan JSON
kita bisa lebih mudah untuk melakukan import ke dalam sebuah database seperti PostGreSQL dan MongoDB.
Menguasai dasar-dasar pengolahan data sangatlah berguna bagi seorang backend engineer apalagi jika kita seorang data science yang akan selalu berkutat dengan raw data dengan jumlah yang sangat banyak (big data).
Oleh karenanya wajib hukumnya kita mempelajari dasar-dasar pengolahan data tersebut.
Pertanyaan serta kritik dan saran terkait tutorial manipulasi data excel menggunakan python ini silahkan tinggalkan di kolom komentar di bawah.
Mari kita bersama berdiskusi.