I/O Data¶
Pandas menyediakan berbagai fungsi untuk membaca dan menulis data dari berbagai format file.
CSV Files¶
Membaca CSV¶
import pandas as pd
# Baca CSV dasar
df = pd.read_csv('data.csv')
# Dengan parameter
df = pd.read_csv('data.csv',
sep=',', # Separator
header=0, # Baris header (0 = pertama)
index_col=0, # Kolom sebagai index
usecols=['A', 'B'], # Kolom yang dibaca
dtype={'A': int}, # Tipe data
na_values=['NA', '-'], # Nilai NA custom
nrows=100, # Jumlah baris
skiprows=1, # Skip baris awal
encoding='utf-8') # Encoding
Excel Files¶
Membaca Excel¶
import pandas as pd
# Baca Excel
df = pd.read_excel('data.xlsx')
# Baca sheet tertentu
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# Baca multiple sheets
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
# dfs adalah dictionary
# Baca semua sheets
dfs = pd.read_excel('data.xlsx', sheet_name=None)
JSON Files¶
Membaca JSON¶
import pandas as pd
# Baca JSON
df = pd.read_json('data.json')
# Dari JSON string
json_str = '[{"nama": "Ahmad", "nilai": 85}, {"nama": "Budi", "nilai": 90}]'
df = pd.read_json(json_str)
# Orientasi berbeda
df = pd.read_json('data.json', orient='records') # List of dicts
df = pd.read_json('data.json', orient='columns') # Dict of columns
df = pd.read_json('data.json', orient='index') # Dict of rows
SQL Database¶
Membaca dari SQL¶
import pandas as pd
import sqlite3
# Koneksi ke database
conn = sqlite3.connect('database.db')
# Baca tabel
df = pd.read_sql('SELECT * FROM mahasiswa', conn)
# Query dengan parameter
df = pd.read_sql(
'SELECT * FROM mahasiswa WHERE jurusan = ?',
conn,
params=['TI']
)
# Baca seluruh tabel
df = pd.read_sql_table('mahasiswa', conn)
conn.close()
HTML Tables¶
Membaca HTML¶
import pandas as pd
# Baca tabel dari HTML (return list of DataFrames)
tables = pd.read_html('https://example.com/table.html')
df = tables[0] # Tabel pertama
# Dari file lokal
tables = pd.read_html('data.html')
# Dengan matching
tables = pd.read_html('page.html', match='Nama') # Cari tabel dengan kata "Nama"
Pickle (Python Object)¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi'],
'nilai': [85, 90]
})
# Simpan ke pickle
df.to_pickle('data.pkl')
# Baca dari pickle
df_loaded = pd.read_pickle('data.pkl')
Catatan
Pickle menyimpan objek Python secara binary. Ini lebih cepat untuk read/write tapi tidak portable antar bahasa pemrograman.
Parquet (Columnar Format)¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi'],
'nilai': [85, 90]
})
# Simpan ke parquet (perlu pyarrow atau fastparquet)
df.to_parquet('data.parquet', engine='pyarrow')
# Baca dari parquet
df_loaded = pd.read_parquet('data.parquet')
Parquet sangat efisien untuk data besar dan mendukung kompresi.
Feather Format¶
import pandas as pd
df = pd.DataFrame({
'nama': ['Ahmad', 'Budi'],
'nilai': [85, 90]
})
# Simpan ke feather
df.to_feather('data.feather')
# Baca dari feather
df_loaded = pd.read_feather('data.feather')
Feather sangat cepat untuk read/write dan interoperabel dengan R.
Clipboard¶
import pandas as pd
# Baca dari clipboard (copy dari Excel)
df = pd.read_clipboard()
# Tulis ke clipboard
df.to_clipboard(index=False)
Membaca Data Besar¶
Chunking¶
import pandas as pd
# Baca file besar dalam chunks
chunks = pd.read_csv('large_file.csv', chunksize=10000)
# Proses setiap chunk
for chunk in chunks:
# Proses chunk
process(chunk)
# Atau kombinasikan
result = pd.concat([process(chunk) for chunk in chunks])
Optimasi Memory¶
import pandas as pd
# Baca dengan tipe data optimal
df = pd.read_csv('data.csv', dtype={
'id': 'int32', # Lebih kecil dari int64
'kategori': 'category', # Efisien untuk nilai berulang
'aktif': 'bool'
})
# Konversi setelah baca
df['kategori'] = df['kategori'].astype('category')
Contoh Praktis¶
Pipeline I/O¶
import pandas as pd
def load_and_process(filepath):
"""Load data, process, dan return DataFrame bersih."""
# Baca file
df = pd.read_csv(filepath, encoding='utf-8')
# Bersihkan nama kolom
df.columns = df.columns.str.lower().str.replace(' ', '_')
# Handle missing values
df = df.dropna(subset=['id'])
# Konversi tipe
df['tanggal'] = pd.to_datetime(df['tanggal'])
return df
def save_results(df, output_path):
"""Save DataFrame ke berbagai format."""
# CSV untuk sharing
df.to_csv(f'{output_path}.csv', index=False)
# Parquet untuk storage efisien
df.to_parquet(f'{output_path}.parquet')
# Excel untuk non-technical users
df.to_excel(f'{output_path}.xlsx', index=False)
# Penggunaan
df = load_and_process('raw_data.csv')
df_processed = df.groupby('kategori').sum()
save_results(df_processed, 'hasil_analisis')
Membaca dari URL¶
import pandas as pd
# CSV dari URL
url = 'https://example.com/data.csv'
df = pd.read_csv(url)
# JSON dari API
api_url = 'https://api.example.com/data'
df = pd.read_json(api_url)
Latihan¶
Baca file CSV dengan encoding berbeda dan handling missing values
Export DataFrame ke multiple sheets dalam satu file Excel
Baca data dari SQLite database dan join dengan CSV
Implementasikan fungsi yang membaca format otomatis berdasarkan ekstensi file