Bagaimana cara mengulang kerangka data panda dengan python?

Perilaku iterasi dasar pada objek Panda tergantung pada jenisnya. Saat melakukan iterasi pada suatu Seri, ini dianggap seperti array, dan iterasi dasar menghasilkan nilai. Struktur data lainnya, seperti DataFrame dan Panel, mengikuti konvensi seperti dict untuk mengulangi kunci objek

Singkatnya, iterasi dasar (untuk i dalam objek) menghasilkan −

  • Seri − nilai

  • DataFrame − label kolom

  • Panel − label item

Iterasi DataFrame

Iterasi DataFrame memberikan nama kolom. Mari kita perhatikan contoh berikut untuk memahami hal yang sama

import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': np.linspace(0,stop=N-1,num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Low','Medium','High'],N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() }) for col in df: print col

Outputnya adalah sebagai berikut −

A C D x y _

Untuk mengulangi baris DataFrame, kita dapat menggunakan fungsi berikut −

  • iteritems() − untuk mengulangi pasangan (kunci,nilai).

  • iterrows() − mengulangi baris sebagai pasangan (indeks, seri).

  • itertuples() − mengulangi baris sebagai namedtuples

iteritems()

Ulangi setiap kolom sebagai kunci, pasangan nilai dengan label sebagai kunci dan nilai kolom sebagai objek Seri

import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns=['col1','col2','col3']) for key,value in df.iteritems(): print key,value

Outputnya adalah sebagai berikut −

col1 0 0.802390 1 0.324060 2 0.256811 3 0.839186 Name: col1, dtype: float64 col2 0 1.624313 1 -1.033582 2 1.796663 3 1.856277 Name: col2, dtype: float64 col3 0 -0.022142 1 -0.230820 2 1.160691 3 -0.830279 Name: col3, dtype: float64

Perhatikan, setiap kolom diulang secara terpisah sebagai pasangan nilai kunci dalam sebuah Seri

iterrows()

iterrows() mengembalikan iterator yang menghasilkan setiap nilai indeks bersama dengan rangkaian yang berisi data di setiap baris

import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row_index,row in df.iterrows(): print row_index,row _

Outputnya adalah sebagai berikut −

0 col1 1.529759 col2 0.762811 col3 -0.634691 Name: 0, dtype: float64 1 col1 -0.944087 col2 1.420919 col3 -0.507895 Name: 1, dtype: float64 2 col1 -0.077287 col2 -0.858556 col3 -0.663385 Name: 2, dtype: float64 3 col1 -1.638578 col2 0.059866 col3 0.493482 Name: 3, dtype: float64

Catatan - Karena iterrows() mengulangi baris, itu tidak mempertahankan tipe data di seluruh baris. 0,1,2 adalah indeks baris dan col1,col2,col3 adalah indeks kolom

itertuples()

metode itertuples() akan mengembalikan iterator yang menghasilkan tuple bernama untuk setiap baris dalam DataFrame. Elemen pertama tuple akan menjadi nilai indeks baris yang sesuai, sedangkan nilai sisanya adalah nilai baris

import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row in df.itertuples(): print row _

Outputnya adalah sebagai berikut −

Pandas(Index=0, col1=1.5297586201375899, col2=0.76281127433814944, col3=- 0.6346908238310438) Pandas(Index=1, col1=-0.94408735763808649, col2=1.4209186418359423, col3=- 0.50789517967096232) Pandas(Index=2, col1=-0.07728664756791935, col2=-0.85855574139699076, col3=- 0.6633852507207626) Pandas(Index=3, col1=0.65734942534106289, col2=-0.95057710432604969, col3=0.80344487462316527)

Catatan - Jangan mencoba memodifikasi objek apa pun saat melakukan iterasi. Iterasi dimaksudkan untuk membaca dan iterator mengembalikan salinan objek asli (tampilan), sehingga perubahan tidak akan tercermin pada objek asli

Catatan. Dokumen Pandas menyatakan bahwa “Anda tidak boleh memodifikasi sesuatu yang Anda ulangi. Ini tidak dijamin untuk bekerja dalam semua kasus. Bergantung pada tipe datanya, iterator mengembalikan salinan dan bukan tampilan, dan menulis ke sana tidak akan berpengaruh. ”

2. Menggunakan Data Frame. itertuples() untuk Iterate Over Rows

Pandas 0 20000 Spark 1 25000 PySpark 2 26000 Hadoop 3 22000 Python 4 24000 Pandas 5 21000 Oracle 6 22000 Java _3 adalah metode yang paling sering digunakan untuk mengulang baris karena mengembalikan semua elemen DataFrame sebagai iterator yang berisi tuple untuk setiap baris. # Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) _3 lebih cepat dibandingkan dengan # Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) 2 dan mempertahankan tipe data

Di bawah ini adalah sintaks dari # Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) _3

#Syntax DataFrame.itertuples() DataFrame.itertuples(index=True, name='Pandas')
  • 0 20000 Spark 1 25000 PySpark 2 26000 Hadoop 3 22000 Python 4 24000 Pandas 5 21000 Oracle 6 22000 Java 8 – Default ke 'Benar'. Mengembalikan DataFrame Index sebagai elemen pertama dalam sebuah tuple. Menyetelnya ke False, tidak mengembalikan Index
  • 0 20000 Spark 1 25000 PySpark 2 26000 Hadoop 3 22000 Python 4 24000 Pandas 5 21000 Oracle 6 22000 Java _9 – Default ke 'Panda'. Anda dapat memberikan nama khusus untuk tuple yang dikembalikan

Contoh di bawah ini mengulang semua elemen dalam sebuah tuple dan mendapatkan nilai dari setiap kolom dengan menggunakan # Row contains the column name and data row = next(df.iterrows())[1] print("Data For First Row :") print(row) 0

# Iterate all rows using DataFrame.itertuples() for row in df.itertuples(index = True): print (getattr(row,'Index'),getattr(row, "Fee"), getattr(row, "Courses"))

Hasil di bawah output

0 20000 Spark 1 25000 PySpark 2 26000 Hadoop 3 22000 Python 4 24000 Pandas 5 21000 Oracle 6 22000 Java _

Mari berikan nama khusus ke tuple

# Display one row from iterator row = next(df.itertuples(index = True,name='Tution')) print(row)

Hasil di bawah output

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _0

Jika Anda menyetel parameter indeks ke # Row contains the column name and data row = next(df.iterrows())[1] print("Data For First Row :") print(row) 1, ini akan menghapus indeks sebagai elemen pertama tuple

4. Bingkai Data. apply() ke Iterasi

Anda juga dapat menggunakan metode # Row contains the column name and data row = next(df.iterrows())[1] print("Data For First Row :") print(row) _2 dari DataFrame untuk mengulang baris dengan menggunakan fungsi lambda. Untuk detail lebih lanjut, lihat DataFrame. menerapkan()

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _1

Contoh

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _2

Hasil di bawah output

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _3

5. Iterasi menggunakan for dan DataFrame. indeks

Anda juga dapat mengulang baris dengan menggunakan for loop. # Row contains the column name and data row = next(df.iterrows())[1] print("Data For First Row :") print(row) 3 mengembalikan nilai baris pertama dari kolom # Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) 7

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _4

Hasil di bawah output

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _5

6. Menggunakan untuk dan DataFrame. lokasi

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _6

Menghasilkan output yang sama seperti di atas

7. Menggunakan For dan DataFrame. iloc

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _7

Hasil di bawah output

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _8

8. Menggunakan Data Frame. items() untuk Iterate Over Columns

Bingkai Data. items() digunakan untuk mengulang kolom (kolom demi kolom) panda DataFrame. Ini mengembalikan tuple (nama kolom, Seri) dengan nama dan konten sebagai Seri

Nilai pertama dalam tupel yang dikembalikan berisi nama label kolom dan yang kedua berisi konten/data DataFrame sebagai rangkaian

Courses Fee Duration 0 Spark 20000 30day 1 PySpark 25000 40days 2 Hadoop 26000 35days 3 Python 22000 40days` 4 pandas 24000 60days 5 Oracle 21000 50days 6 Java 22000 55days _9

Hasil di bawah output

# Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) _0

9. Performa Pengulangan DataFrame

Iterasi DataFrame tidak disarankan atau disarankan untuk digunakan karena kinerjanya akan sangat buruk saat melakukan iterasi pada kumpulan data besar. Pastikan Anda menggunakan ini hanya ketika Anda kehabisan semua opsi lainnya. Sebelum menggunakan contoh yang disebutkan dalam artikel ini, periksa apakah Anda dapat menggunakan salah satu dari 1) Vektorisasi, 2) Rutinitas Cython, 3) Daftar Pemahaman (vanilla  # Row contains the column name and data row = next(df.iterrows())[1] print("Data For First Row :") print(row) 5 loop)

Performa Baris Iterasi Pandas

10. Contoh Lengkap panda Iterate over Rows

# Iterate all rows using DataFrame.iterrows() for index, row in df.iterrows(): print (index,row["Fee"], row["Courses"]) _1

Kesimpulan

DataFrame menyediakan beberapa metode untuk mengulangi baris (loop demi baris) dan mengakses kolom/sel. Tetapi tidak disarankan untuk mengulang baris secara manual karena menurunkan kinerja aplikasi saat digunakan pada kumpulan data besar. Setiap contoh yang dijelaskan dalam artikel ini berperilaku berbeda, jadi bergantung pada kasus penggunaan Anda, gunakan yang sesuai dengan kebutuhan Anda

Bagaimana cara mengulang melalui panda DataFrame dengan Python?

Untuk mengulang baris, kami menerapkan fungsi itertuples() fungsi ini mengembalikan tuple untuk setiap baris dalam DataFrame. Elemen pertama tuple akan menjadi nilai indeks baris yang sesuai, sedangkan nilai sisanya adalah nilai baris.

Bisakah kita mengulangi panda DataFrame?

DataFrame. metode iterrows() digunakan untuk mengulangi baris DataFrame sebagai pasangan (indeks, Seri) . Perhatikan bahwa metode ini tidak mempertahankan dtypes lintas baris karena metode ini akan mengubah setiap baris menjadi Seri.

Bagaimana cara mengulangi seluruh DataFrame dengan Python?

Itertuples() adalah fungsi bawaan Panda untuk melakukan iterasi melalui bingkai data Anda. Itertuples() membuat jumlah panggilan fungsi yang relatif lebih sedikit daripada iterrows() dan membawa overhead yang jauh lebih sedikit. Itertuples() melakukan iterasi melalui bingkai data dengan mengonversi setiap baris data sebagai daftar tupel.

Bagaimana Anda mengulangi tindakan dalam DataFrame panda?

iterrows() Metode pertama untuk mengulang DataFrame adalah dengan menggunakan Pandas. iterrows() , yang mengulang DataFrame menggunakan pasangan baris indeks

Postingan terbaru

LIHAT SEMUA