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)

Bagaimana cara mengulang kerangka data panda dengan python?
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