Pertanyaan yang sangat umum dalam konteks panda adalah apakah Anda benar-benar dapat membuat DataFrame kosong dan kemudian mengisinya secara iteratif dengan menambahkan -katakanlah- satu baris pada satu waktu. Namun, pendekatan ini cenderung tidak efisien dan harus dihindari dengan cara apa pun
Pada artikel hari ini kita akan membahas pendekatan alternatif yang akan memberi Anda hasil yang sama tetapi jauh lebih efisien daripada membuat DataFrame kosong dan kemudian menggunakan loop untuk menambahkan baris di dalamnya
Apa yang harus dihindari
Tentu saja, sebenarnya mungkin untuk membuat DataFrame panda kosong dan kemudian menambahkan baris secara iteratif. Pendekatan ini khususnya akan terlihat seperti di bawah ini
import numpy as npimport pandas as pd
from numpy.random import randint# Make sure results are reproducible
np.random.seed(10)# Instantiate an empty pandas DF
df = pd.DataFrame(columns=['colA', 'colB', 'colC'])# Fill in the dataframe using random integers
for i in range(7):
df.loc[i] = [i] + list(randint(100, size=2))print(df)
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11
Meskipun pendekatan di atas akan melakukan trik, itu harus dihindari karena sangat tidak efisien dan pasti ada pendekatan yang jauh lebih efisien daripada membuat DataFrame kosong dan kemudian membangunnya menggunakan loop iteratif
Pendekatan yang lebih buruk, adalah penggunaan metode append() atau concat() di dalam loop
Perlu dicatat bahwa concat()_ (dan oleh karena itu append()) membuat salinan lengkap dari data, dan bahwa terus-menerus menggunakan kembali fungsi ini dapat menghasilkan peningkatan kinerja yang signifikan. Jika Anda perlu menggunakan operasi pada beberapa kumpulan data, gunakan pemahaman daftar
— dokumen panda
Menggunakan daftar sebagai gantinya
Alih-alih menambahkan baris secara iteratif menggunakan properti loc[] atau metode append/concat, Anda sebenarnya dapat menambahkan data ke dalam daftar dan akhirnya membuat instance DataFrame panda baru langsung dari daftar yang telah dibuat sebelumnya. Ini bahkan disebutkan dalam dokumentasi resmi panda
import numpy as npMenambahkan baris secara iteratif ke DataFrame bisa lebih intensif secara komputasi daripada satu gabungan. Solusi yang lebih baik adalah dengan menambahkan baris tersebut ke daftar dan kemudian menggabungkan daftar tersebut dengan DataFrame asli sekaligus
— dokumen panda
import pandas as pd
from numpy.random import randint# Make sure results are reproducible
np.random.seed(10)data = []
for i in range(7):
data.append([i] + list(randint(100, size=2))df = pd.DataFrame(data, columns=['colA', 'colB', 'colC'])print(df)
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11_
Bekerja dengan daftar (baik menambahkan atau menghapus elemen) jauh lebih efisien dan Anda harus selalu memilih pendekatan ini ketika menambahkan baris secara iteratif ke panda DataFrames
Pikiran Akhir
Pada artikel hari ini, kami membahas mengapa penting untuk menghindari pembuatan DataFrames panda kosong dan mengisinya secara iteratif karena ini akan memengaruhi kinerja secara signifikan
Sebagai gantinya, kami menjelajahi cara membangun konstruksi seperti itu secara iteratif menggunakan daftar dan akhirnya membuat DataFrames panda baru dari daftar yang dibuat
Jadilah anggota dan baca setiap cerita di Medium. Biaya keanggotaan Anda secara langsung mendukung saya dan penulis lain yang Anda baca. Anda juga akan mendapatkan akses penuh ke setiap cerita di Medium
Pada artikel ini kita akan membahas berbagai cara untuk membuat DataFrame kosong dan kemudian mengisi data di dalamnya nanti dengan menambahkan baris atau kolom
Misalkan kita ingin membuat DataFrame kosong terlebih dahulu dan kemudian menambahkan data ke dalamnya pada tahap selanjutnya. Mari kita lihat bagaimana melakukannya,
Impor modul panda python seperti ini,
Buat DataFrame kosong dengan hanya nama kolom tetapi tidak ada baris
Misalkan kita tahu nama kolom DataFrame kita tetapi kita tidak memiliki data apa pun saat ini. Jadi kita akan membuat DataFrame kosong hanya dengan nama kolom seperti ini,
Konten dari DataFrame kosong yang dibuat adalah,
Columns: [User_ID, UserName, Action] Index: []_
Bagaimana cara kerjanya?
Kelas Dataframe menyediakan konstruktor untuk membuat objek Dataframe dengan meneruskan nama kolom, nama indeks & data dalam argumen seperti ini,
Untuk membuat objek bingkai data kosong, kami hanya memberikan argumen kolom dan untuk indeks & argumen default data akan digunakan
Tambahkan baris ke DataFrame kosong
Karena kami telah membuat DataFrame kosong, jadi mari kita lihat cara menambahkan baris ke dalamnya,
Keluaran
User_ID UserName Action 0 23 Riti Login 1 24 Aadi Logout 2 25 Jack Login
Tiga baris ditambahkan ke DataFrame
Buat DataFrame kosong lengkap tanpa nama kolom atau indeks apa pun
Kita dapat membuat kerangka data kosong lengkap hanya dengan memanggil konstruktor kelas Dataframe tanpa argumen seperti ini,
Karena kami belum memberikan argumen apa pun, maka nilai default dari semua argumen adalah Tidak ada dan itu akan membuat kerangka data kosong dfObj. Isinya adalah sebagai berikut,
Columns: [] Index: [] _
Sekarang mari kita lihat cara menambahkan kolom dengan data ke Dataframe kosong ini,
Menambahkan kolom ke DataFrame kosong
# Append columns to the Empty DataFrame dfObj['UserName'] = ['Riti', 'Aadi', 'Jack'] dfObj['Name'] = ['Riti', 'Aadi', 'Jack'] dfObj['Name'] = ['Riti', 'Aadi', 'Jack'] print("Dataframe Contents ", dfObj, sep='\n')Keluaran
Dataframe Contens UserName Name 0 Riti Riti 1 Aadi Aadi 2 Jack Jack
Buat Bingkai Data kosong dengan nama kolom dan indeks baris tetapi tanpa data
Mungkin dalam beberapa kasus kita mengetahui nama kolom & indeks baris di awal tetapi kita belum memiliki data. Jadi kita akan membuat DataFrame kosong dan menambahkan data ke dalamnya pada tahap selanjutnya seperti ini,
Di sini kami meneruskan argumen kolom dan indeks ke konstruktor Dataframe tetapi tanpa argumen data. Jadi, ini akan membuat kerangka data kosong dengan semua data sebagai NaN
# Creating an empty Dataframe with column names only dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action']) print("Empty Dataframe ", dfObj, sep='\n')1
Tambahkan baris ke bingkai data kosong pada indeks yang ada
# Creating an empty Dataframe with column names only dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action']) print("Empty Dataframe ", dfObj, sep='\n')2keluaran
# Creating an empty Dataframe with column names only dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action']) print("Empty Dataframe ", dfObj, sep='\n')_3
Contoh lengkapnya adalah sebagai berikut
# Creating an empty Dataframe with column names only dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action']) print("Empty Dataframe ", dfObj, sep='\n')_4
Keluaran
# Creating an empty Dataframe with column names only dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action']) print("Empty Dataframe ", dfObj, sep='\n')5
Iklan
Terima kasih sudah membaca