Saya memiliki file spreadsheet besar (.xlsx) yang saya proses menggunakan python panda. Kebetulan saya butuh data dari dua tab di file besar itu. Salah satu tab memiliki satu ton data dan yang lainnya hanya beberapa sel persegi.
Ketika saya menggunakan pd.read_excel () pada lembar kerja apa pun , menurut saya seluruh file dimuat (bukan hanya lembar kerja yang saya minati). Jadi ketika saya menggunakan metode ini dua kali (satu kali untuk setiap lembar), saya secara efektif harus membiarkan seluruh buku kerja dibaca dua kali (meskipun kami hanya menggunakan lembar yang ditentukan).
Apakah saya salah menggunakannya atau hanya terbatas dengan cara ini?
Terima kasih!
Jawaban:
Coba
pd.ExcelFile
:Seperti dicatat oleh @HaPsantran, seluruh file Excel dibaca selama
ExcelFile()
panggilan (tampaknya tidak ada cara untuk mengatasi ini). Ini hanya menyelamatkan Anda dari keharusan membaca file yang sama di setiap kali Anda ingin mengakses lembar baru.Perhatikan bahwa
sheet_name
argumen untukpd.read_excel()
dapat berupa nama lembar (seperti di atas), bilangan bulat yang menentukan nomor lembar (misalnya 0, 1, dll), daftar nama lembar atau indeks, atauNone
. Jika daftar disediakan, itu mengembalikan kamus di mana kunci adalah nama lembar / indeks dan nilainya adalah bingkai data. Standarnya adalah hanya mengembalikan lembar pertama (yaitu,sheet_name=0
).Jika
None
ditentukan, semua lembar dikembalikan, sebagai{sheet_name:dataframe}
kamus.sumber
sheet_name
dan tidaksheetname
. Saya tidak menyadari bahwa itu adalah bagian yang sudah usang, karena masih bekerja pada metode read_excel, tetapi tidak pada metode parse.Ada 3 opsi:
Baca semua lembar langsung ke kamus yang dipesan.
Terima kasih @ihightower untuk menunjukkannya dan @toto_tico karena menunjukkan masalah versi.
Baca lembar pertama langsung ke dalam bingkai data
Baca file excel dan dapatkan daftar sheet. Kemudian pilih dan muatkan lembaran.
Baca semua lembar dan simpan dalam kamus. Sama seperti yang pertama tetapi lebih eksplisit.
Pembaruan: Terima kasih @toto_tico karena menunjukkan masalah versi.
sumber
df_sheet_map = pd.read_excel(file_fullpath, sheetname=None)
, ini akan memiliki lembaran dalam kamus secara otomatis .. dan mengakses lembar sebagai kerangka data seperti ini:df_sheet_map['house']
Anda juga dapat menggunakan indeks untuk sheet:
akan memberikan lembar kerja pertama. untuk lembar kerja kedua:
sumber
Anda juga bisa menentukan nama sheet sebagai parameter:
hanya akan mengunggah sheet
"sheet_name"
.sumber
secara default baca lembar pertama buku kerja.
baca lembar kerja tertentu dan
membaca semua lembar kerja dari excel ke panda dataframe sebagai tipe dari OrderedDict berarti kumpulan data bersarang, semua lembar kerja sebagai dataframe yang dikumpulkan di dalam dataframe dan tipenya adalah OrderedDict.
sumber
Ya sayangnya itu akan selalu memuat file lengkap. Jika Anda melakukan ini berulang kali, mungkin yang terbaik untuk mengekstrak lembar untuk memisahkan CSV dan kemudian memuat secara terpisah. Anda dapat mengotomatiskan proses itu dengan d6tstack yang juga menambahkan fitur tambahan seperti memeriksa apakah semua kolom sama di semua lembar atau beberapa file Excel.
Lihat contoh d6tstack Excel
sumber
Jika Anda telah menyimpan file excel di folder yang sama dengan program python Anda (Pengalamatan Relatif) maka Anda hanya perlu menyebutkan nomor sheet bersama dengan nama file. Sintaks = pd.read_excel (Nama file, SheetNo) Contoh:
sumber