Pandas & NumPy Academy · Pelajaran

Menulis DataFrames ke File

Ekspor DataFrame yang telah dibersihkan ke CSV dan Excel dengan to_csv dan to_excel, sambil mengatur indeks dan format float

Pelajaran 3 dari 413 langkah

Menulis DataFrames ke File adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Mengapa Ekspor Penting

Analisis data jarang berakhir di dalam Python. Anda perlu membagikan kumpulan data yang telah dibersihkan kepada pemangku kepentingan, memasukkan hasil ke alat lain, atau mengarsipkan data yang telah diproses agar dapat direproduksi. Pandas menyediakan to_csv(), to_excel(), to_json(), dan to_parquet()—yang mencerminkan fungsi pembaca dan menerima sebagian besar parameter konfigurasi yang sama.

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
df.to_csv('results.csv')
df.to_excel('results.xlsx')
df.to_json('results.json', orient='records')

to_csv(): Masalah Indeks

Secara default, to_csv() menulis indeks baris sebagai kolom pertama, sehingga menghasilkan kolom unnamed: 0 saat berkas dibaca kembali. Teruskan index=False untuk menghilangkan indeks—hampir selalu merupakan pilihan yang tepat, kecuali indeks itu sendiri adalah data yang bermakna, seperti tanggal. Selalu tentukan index=False kecuali Anda memiliki alasan khusus untuk menyertakan indeks.

import pandas as pd

df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

# Include index (default -- creates 'Unnamed: 0' when re-read)
df.to_csv('with_index.csv')

# Exclude index (recommended)
df.to_csv('clean.csv', index=False)

Mengontrol Pembatas dan Pengodean

Teruskan sep= untuk menulis berkas yang dipisahkan tab atau titik koma. Gunakan encoding= untuk menentukan UTF-8 atau kumpulan karakter lain—hal yang penting jika nilai kolom berisi karakter non-ASCII seperti aksen atau karakter Tionghoa. encoding='utf-8-sig' menambahkan BOM (tanda urutan byte) agar kompatibel dengan Excel di Windows.

import pandas as pd

df = pd.DataFrame({'name': ['Müller', 'Tanaka'], 'val': [1, 2]})
# Tab-separated, UTF-8
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)

# Excel-compatible UTF-8 with BOM
df.to_csv('for_excel.csv', encoding='utf-8-sig', index=False)

Mengontrol Pemformatan Float

Secara default, Pandas menulis float dengan presisi penuh. Gunakan float_format='%.2f' untuk membatasi hingga 2 angka desimal—hal yang penting untuk data keuangan karena angka desimal tambahan tampak keliru bagi pembaca. Teruskan na_rep='NULL' atau na_rep='' untuk mengatur cara nilai NaN ditulis dalam berkas keluaran.

import pandas as pd
import numpy as np

df = pd.DataFrame({'price': [9.99, np.nan, 14.123456],
                   'qty': [1, 2, 3]})
df.to_csv('prices.csv',
          index=False,
          float_format='%.2f',
          na_rep='N/A')

to_excel(): Menulis Lembar

df.to_excel('file.xlsx', sheet_name='Data', index=False) menulis DataFrame ke buku kerja Excel. Seperti to_csv(), tetapkan index=False kecuali indeks bermakna. Parameter startrow= dan startcol= memungkinkan Anda menempatkan tabel di dalam lembar—berguna untuk menambahkan baris judul di atas data.

import pandas as pd

df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
df.to_excel('report.xlsx',
            sheet_name='Sales',
            index=False,
            startrow=1)  # leave row 0 for a title

Menulis Beberapa Lembar dengan ExcelWriter

Untuk menulis beberapa DataFrames ke lembar yang berbeda dalam buku kerja yang sama, gunakan pd.ExcelWriter sebagai pengelola konteks. Panggil df.to_excel(writer, sheet_name='Name') untuk setiap DataFrame di dalam blok with. Buku kerja diselesaikan dan disimpan saat konteks keluar. Cara ini menghindari pembuatan beberapa berkas terpisah untuk tabel yang saling berkaitan.

import pandas as pd

df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 4]})

with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

to_json(): Mengekspor JSON

df.to_json() menserialisasikan DataFrame menjadi JSON. Parameter orient= mencerminkan read_json: gunakan 'records' untuk daftar dict baris (paling mudah dioperasikan bersama), 'columns' untuk dict larik kolom, atau 'index' untuk dict dengan kunci berupa label baris. Teruskan indent=2 untuk pemformatan yang mudah dibaca manusia.

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
print(df.to_json(orient='records', indent=2))
# [
#   {"name": "A", "score": 90},
#   {"name": "B", "score": 75}
# ]

Menambahkan ke Berkas yang Sudah Ada

Untuk menambahkan baris ke CSV yang sudah ada tanpa menimpanya, buka berkas dalam mode penambahan menggunakan mode='a' dan tetapkan header=False agar baris header tidak digandakan. Untuk Excel, gunakan ExcelWriter dengan mode='a'. Untuk alur pemrosesan besar yang dialirkan, tambahkan data per bagian dan tulis header hanya pada bagian pertama.

import pandas as pd

df_new = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
# Append to existing file, skip writing header
df_new.to_csv('existing.csv',
              mode='a',
              header=False,
              index=False)

Memilih Kolom Sebelum Ekspor

Praktik yang baik sebelum mengekspor adalah memilih hanya kolom yang diperlukan penerima dan mengurutkan baris dalam urutan yang logis. Ini membuat berkas keluaran lebih rapi dan mencegah kebocoran kolom internal secara tidak sengaja, seperti ID internal, fitur yang dikodekan, atau penanda debug. Gunakan pemilihan dengan tanda kurung siku dan sort_values() dalam ekspresi alur pemrosesan yang sama sebelum menulis.

import pandas as pd

df = pd.DataFrame({'id': [3,1,2],
                   'name': ['C','A','B'],
                   '_internal': [9,7,8]})

(df[['id', 'name']]
   .sort_values('id')
   .to_csv('export.csv', index=False))

Memverifikasi Berkas yang Ditulis

Setelah menulis, selalu baca kembali berkas dan verifikasi: periksa shape, nama kolom, serta beberapa nilai secara acak. Untuk alur pemrosesan CI, bandingkan checksum. Untuk ekspor keuangan yang penting, pastikan total agregat sesuai. Langkah ini mendeteksi masalah pengodean, kehilangan presisi float, dan masalah indeks sebelum berkas diterima oleh pengguna hilir.

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.to_csv('/tmp/check.csv', index=False)

df_check = pd.read_csv('/tmp/check.csv')
assert df_check.shape == df.shape, 'Row/column count mismatch'
assert list(df_check.columns) == list(df.columns)
print('Export verified OK')

Parquet: Alternatif Data yang Lebih Baik

Untuk dataset analitis berukuran besar, pertimbangkan format Parquet sebagai pengganti CSV. Parquet menyimpan data dalam format kolom, mendukung kompresi, mempertahankan dtype secara tepat, dan membaca data 10–100 kali lebih cepat untuk kueri analitis. Tulis dengan df.to_parquet('data.parquet') dan baca dengan pd.read_parquet('data.parquet'). Format ini memerlukan pyarrow atau fastparquet yang sudah terpasang.

import pandas as pd

df = pd.DataFrame({'a': range(1000000), 'b': range(1000000)})
df.to_parquet('data.parquet', index=False)

df2 = pd.read_parquet('data.parquet')
print(df2.dtypes)  # dtypes preserved exactly

Pemeriksaan Cepat

Uji pemahaman Anda tentang penulisan DataFrames ke file dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa: to_csv() dan to_excel() mengekspor DataFrames dan secara bawaan keduanya menyertakan indeks — selalu tetapkan index=False agar hasilnya bersih, ExcelWriter memungkinkan penulisan beberapa DataFrames ke lembar terpisah dalam satu buku kerja, dan Parquet merupakan alternatif yang lebih cepat serta lebih hemat ruang daripada CSV untuk dataset analitis berukuran besar. Selanjutnya, kita akan memuat file CSV jarak jauh dari URL dan mengurai string CSV di memori dengan io.StringIO.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis DataFrames ke File” gratis?

Ya — teks lengkap “Menulis DataFrames ke File” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menulis DataFrames ke File”?

Ekspor DataFrame yang telah dibersihkan ke CSV dan Excel dengan to_csv dan to_excel, sambil mengatur indeks dan format float Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Menulis DataFrames ke File” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membaca File CSV
  2. Membaca File Excel dan JSON
  3. Menulis DataFrames ke File
  4. Membaca dari URL dan StringIO
← Kembali ke Pandas & NumPy Academy