Cara menggunakan PD.EXCELWRITER pada Python

Saat ini saya memiliki kode ini. Ini bekerja dengan sempurna.

Ini mengulang-ulang melalui file excel dalam folder, menghapus 2 baris pertama, lalu menyimpannya sebagai file excel individual, dan juga menyimpan file-file dalam loop sebagai file tambahan.

Saat ini file yang ditambahkan menimpa file yang ada setiap kali saya menjalankan kode.

Saya perlu menambahkan data baru ke bagian bawah lembar excel yang sudah ada ('master_data.xlsx)

dfList = []
path = 'C:\\Test\\TestRawFile' 
newpath = 'C:\\Path\\To\\New\\Folder'

for fn in os.listdir(path): 
  # Absolute file path
  file = os.path.join(path, fn)
  if os.path.isfile(file): 
    # Import the excel file and call it xlsx_file 
    xlsx_file = pd.ExcelFile(file) 
    # View the excel files sheet names 
    xlsx_file.sheet_names 
    # Load the xlsx files Data sheet as a dataframe 
    df = xlsx_file.parse('Sheet1',header= None) 
    df_NoHeader = df[2:] 
    data = df_NoHeader 
    # Save individual dataframe
    data.to_excel(os.path.join(newpath, fn))

    dfList.append(data) 

appended_data = pd.concat(dfList)
appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'))

Saya pikir ini akan menjadi tugas yang sederhana, tapi saya kira tidak. Saya pikir saya perlu membawa file master_data.xlsx sebagai dataframe, kemudian mencocokkan indeks dengan data baru yang ditambahkan, dan menyimpannya kembali. Atau mungkin ada cara yang lebih mudah. Bantuan apa pun sangat dihargai.

I am trying to append data on existing excel sheet using Pandas-ExcelWriter functionality. As per python official document, if_sheet_exists=overlay : Write contents to the existing sheet without removing the old contents.

Code I tried:

import pandas as pd

df = pd.DataFrame({'Data': [10, 20, 30]})
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter', mode='w')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()

df = pd.DataFrame({'Data': [100, 200, 300]})
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='openpyxl', mode='a', if_sheet_exists='overlay')

df.to_excel(writer, sheet_name='Sheet1')
writer.save()

Output I am getting: (overwriting new data instead of appending)

Cara menggunakan PD.EXCELWRITER pada Python

Output I am expecting:

Cara menggunakan PD.EXCELWRITER pada Python

Version details:

Python : 3.9.2
Pandas : pandas==1.4.3
openpyxl : openpyxl==3.0.10
xlsx : XlsxWriter==3.0.3

Trials:

  1. Tried with engine='xlsxwriter' for append mode. but got ValueError: Append mode is not supported with xlsxwriter!

Seperti yang dapat kita lihat, data tersebut dipisahkan oleh koma, jadi ini termasuk jenis file CSV (Comma Separated Values) sehingga kita dapat menggunakan method read_csv() untuk import data.

Baca juga: Pengenalan Library Python Untuk Data Science

Di Python, untuk mengimport data ke jupyter notebook cukup mudah yaitu hanya dengan tiga langkah.

  1. Import pandas
  2. Definisikan variabel untuk menyimpan path url atau file dataset
  3. Gunakan method read_csv untuk mengimport data
import pandas as pd

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/autos/imports-85.data"
df = pd.read_csv(url)

Jika menggunakan file dari komputer lokal, kita harus menentukan lokasi file tersebut tersimpan.

import pandas as pd

path = "dataset/imports-85.data"
df = pd.read_csv(path)

Kita bisa melihat dataset tersebut dalam bentuk dataframe dengan method head() untk melihat data teratas.

df.head()

Atau tail() untuk melihat data terbawah.

df.tail()

Default dari method head() dan tail() di atas adalah menampilkan 5 baris data teratas ataupun terbawah. Namun, jika kita ingin menentukan jumlah yang spesifik bisa dilakukan dengan memberikan sebuah angka di dalam tanda kurung.

Misalnya :

df.head(10)

atau

df.tail(20)

Baca juga: Cara Mengecek Tipe dan Distribusi Data di Pandas Python

Method read_csv() mengasumsikan setiap data yang dibaca telah mengandung header, sehingga jika ternyata dataset tersebut belum mengandung header seperti dataset automobiles yang kita gunakan, maka otomatis baris pertama dataset tersebut akan dijadikan header seperti terlihat di bawah ini.

Cara menggunakan PD.EXCELWRITER pada Python