Cara Efektif Menggunakan Pandas GroupBy

Cara Efektif Menggunakan Pandas GroupBy

Node Sumber: 1941381

Pandas adalah pustaka sumber terbuka yang kuat dan banyak digunakan untuk manipulasi dan analisis data menggunakan Python. Salah satu fitur utamanya adalah kemampuan untuk mengelompokkan data menggunakan fungsi groupby dengan membagi DataFrame menjadi grup berdasarkan satu atau beberapa kolom dan kemudian menerapkan berbagai fungsi agregasi ke masing-masing kolom.

 

Cara Efektif Menggunakan Pandas GroupBy
Gambar dari Unsplash
 

Grafik groupby fungsi sangat kuat, karena memungkinkan Anda meringkas dan menganalisis kumpulan data besar dengan cepat. Misalnya, Anda dapat mengelompokkan kumpulan data berdasarkan kolom tertentu dan menghitung rata-rata, jumlah, atau jumlah kolom yang tersisa untuk setiap grup. Anda juga dapat mengelompokkan berdasarkan beberapa kolom untuk mendapatkan pemahaman yang lebih terperinci tentang data Anda. Selain itu, ini memungkinkan Anda untuk menerapkan fungsi agregasi khusus, yang dapat menjadi alat yang sangat ampuh untuk tugas analisis data yang kompleks.

Dalam tutorial ini, Anda akan mempelajari cara menggunakan fungsi groupby di Pandas untuk mengelompokkan tipe data yang berbeda dan melakukan operasi agregasi yang berbeda. Di akhir tutorial ini, Anda akan dapat menggunakan fungsi ini untuk menganalisis dan meringkas data dengan berbagai cara.

Konsep diinternalisasi ketika dipraktikkan dengan baik dan inilah yang akan kita lakukan selanjutnya, yaitu mencoba langsung dengan fungsi grup Pandas. Disarankan untuk menggunakan a Notebook Jupyter untuk tutorial ini karena Anda dapat melihat hasilnya di setiap langkah.

Hasilkan Data Sampel

Impor pustaka berikut:

  • Pandas: Untuk membuat bingkai data dan menerapkan grup berdasarkan
  • Acak – Untuk menghasilkan data acak
  • Pprint – Untuk mencetak kamus
import pandas as pd
import random
import pprint

 

Selanjutnya, kita akan menginisialisasi dataframe kosong dan mengisi nilai untuk setiap kolom seperti gambar di bawah ini:

df = pd.DataFrame()
names = [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard",
] major = [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology",
] yr_adm = random.sample(list(range(2018, 2023)) * 100, 15)
marks = random.sample(range(40, 101), 15)
num_add_sbj = random.sample(list(range(2)) * 100, 15) df["St_Name"] = names
df["Major"] = random.sample(major * 100, 15)
df["yr_adm"] = yr_adm
df["Marks"] = marks
df["num_add_sbj"] = num_add_sbj
df.head()

 

Kiat bonus – cara yang lebih bersih untuk melakukan tugas yang sama adalah dengan membuat kamus semua variabel dan nilai, lalu mengubahnya menjadi kerangka data.

student_dict = { "St_Name": [ "Sankepally", "Astitva", "Shagun", "SURAJ", "Amit", "RITAM", "Rishav", "Chandan", "Diganta", "Abhishek", "Arpit", "Salman", "Anup", "Santosh", "Richard", ], "Major": random.sample( [ "Electrical Engineering", "Mechanical Engineering", "Electronic Engineering", "Computer Engineering", "Artificial Intelligence", "Biotechnology", ] * 100, 15, ), "Year_adm": random.sample(list(range(2018, 2023)) * 100, 15), "Marks": random.sample(range(40, 101), 15), "num_add_sbj": random.sample(list(range(2)) * 100, 15),
}
df = pd.DataFrame(student_dict)
df.head()

 

Kerangka data terlihat seperti yang ditunjukkan di bawah ini. Saat menjalankan kode ini, beberapa nilai tidak akan cocok karena kami menggunakan sampel acak.

 

Cara Efektif Menggunakan Pandas GroupBy

Membuat Grup

Mari kelompokkan data berdasarkan subjek "Major" dan terapkan filter grup untuk melihat berapa banyak record yang termasuk dalam grup ini.

groups = df.groupby('Major')
groups.get_group('Electrical Engineering')

 

Jadi, empat orang mahasiswa jurusan Teknik Elektro.

 

Cara Efektif Menggunakan Pandas GroupBy
 

Anda juga dapat mengelompokkan lebih dari satu kolom (Major dan num_add_sbj dalam kasus ini). 

groups = df.groupby(['Major', 'num_add_sbj'])

 

Perhatikan bahwa semua fungsi agregat yang dapat diterapkan ke grup dengan satu kolom dapat diterapkan ke grup dengan beberapa kolom. Untuk tutorial selanjutnya, mari fokus pada berbagai jenis agregasi menggunakan satu kolom sebagai contoh.

Mari buat grup menggunakan groupby pada kolom "Major".

groups = df.groupby('Major')

Menerapkan Fungsi Langsung

Katakanlah Anda ingin menemukan nilai rata-rata di setiap Jurusan. Apa yang akan kamu lakukan? 

  • Pilih kolom Tanda
  • Terapkan fungsi rata-rata
  • Terapkan fungsi bulat untuk membulatkan tanda ke dua tempat desimal (opsional)
groups['Marks'].mean().round(2)

 

Major
Artificial Intelligence 63.6
Computer Engineering 45.5
Electrical Engineering 71.0
Electronic Engineering 92.0
Mechanical Engineering 64.5
Name: Marks, dtype: float64

 

Agregat

Cara lain untuk mencapai hasil yang sama adalah dengan menggunakan fungsi agregat seperti yang ditunjukkan di bawah ini:

groups['Marks'].aggregate('mean').round(2)

 

Anda juga dapat menerapkan banyak agregasi ke grup dengan meneruskan fungsi sebagai daftar string.

groups['Marks'].aggregate(['mean', 'median', 'std']).round(2)

 

Cara Efektif Menggunakan Pandas GroupBy
 

Tetapi bagaimana jika Anda perlu menerapkan fungsi yang berbeda ke kolom yang berbeda. Jangan khawatir. Anda juga dapat melakukannya dengan meneruskan pasangan {column: function}.

groups.aggregate({'Year_adm': 'median', 'Marks': 'mean'})

 

Cara Efektif Menggunakan Pandas GroupBy

Transformasi

Anda mungkin perlu melakukan transformasi khusus ke kolom tertentu yang dapat dicapai dengan mudah menggunakan groupby(). Mari kita tentukan skalar standar yang serupa dengan yang tersedia di modul preprocessing sklearn. Anda dapat mengubah semua kolom dengan memanggil metode transformasi dan meneruskan fungsi khusus.

def standard_scalar(x): return (x - x.mean())/x.std()
groups.transform(standard_scalar)

 

Cara Efektif Menggunakan Pandas GroupBy
 

Perhatikan bahwa "NaN" mewakili grup dengan standar deviasi nol.

Filter

Anda mungkin ingin memeriksa “Major” mana yang kinerjanya buruk, misalnya “Nilai” siswa rata-rata kurang dari 60. Ini mengharuskan Anda untuk menerapkan metode filter ke grup dengan fungsi di dalamnya. Kode di bawah ini menggunakan a fungsi lambda untuk mencapai hasil yang disaring.

groups.filter(lambda x: x['Marks'].mean() 60)

 

Cara Efektif Menggunakan Pandas GroupBy

Pertama

Ini memberi Anda instance pertama yang diurutkan berdasarkan indeks.

groups.first()

 

Cara Efektif Menggunakan Pandas GroupBy

Menggambarkan

Metode "jelaskan" mengembalikan statistik dasar seperti hitungan, rata-rata, std, min, maks, dll. untuk kolom yang diberikan.

groups['Marks'].describe()

 

Cara Efektif Menggunakan Pandas GroupBy

Ukuran

Ukuran, seperti namanya, mengembalikan ukuran setiap grup dalam hal jumlah rekaman.

groups.size()

 

Major
Artificial Intelligence 5
Computer Engineering 2
Electrical Engineering 4
Electronic Engineering 2
Mechanical Engineering 2
dtype: int64

Hitung dan Nunique

"Count" mengembalikan semua nilai sedangkan "Nunique" hanya mengembalikan nilai unik dalam grup itu.

groups.count()

 

Cara Efektif Menggunakan Pandas GroupBy

 

groups.nunique()

 

Cara Efektif Menggunakan Pandas GroupBy

Rename

Anda juga dapat mengganti nama kolom agregat sesuai preferensi Anda.

groups.aggregate("median").rename( columns={ "yr_adm": "median year of admission", "num_add_sbj": "median additional subject count", }
)

 

Cara Efektif Menggunakan Pandas GroupBy
 

  • Perjelas tujuan grup dengan: Apakah Anda mencoba mengelompokkan data berdasarkan satu kolom untuk mendapatkan rata-rata kolom lain? Atau apakah Anda mencoba mengelompokkan data berdasarkan beberapa kolom untuk mendapatkan jumlah baris di setiap grup?
  • Memahami pengindeksan bingkai data: Fungsi groupby menggunakan indeks untuk mengelompokkan data. Jika Anda ingin mengelompokkan data berdasarkan kolom, pastikan kolom tersebut disetel sebagai indeks atau Anda dapat menggunakan .set_index()
  • Gunakan fungsi agregat yang sesuai: Dapat digunakan dengan berbagai fungsi agregasi seperti mean(), sum(), count(), min(), max()
  • Gunakan parameter as_index: Saat disetel ke False, parameter ini memberi tahu panda untuk menggunakan kolom yang dikelompokkan sebagai kolom biasa, bukan indeks.

Anda juga dapat menggunakan groupby() bersamaan dengan fungsi panda lainnya seperti pivot_table(), crosstab(), dan cut() untuk mengekstrak lebih banyak wawasan dari data Anda.

Fungsi groupby adalah alat yang ampuh untuk analisis dan manipulasi data karena memungkinkan Anda mengelompokkan baris data berdasarkan satu atau beberapa kolom, lalu melakukan penghitungan agregat pada grup. Tutorial menunjukkan berbagai cara untuk menggunakan fungsi groupby dengan bantuan contoh kode. Semoga ini memberi Anda pemahaman tentang berbagai opsi yang menyertainya dan juga bagaimana mereka membantu dalam analisis data.

 
 
Vidhi Batuk adalah ahli strategi AI dan pemimpin transformasi digital yang bekerja di persimpangan produk, sains, dan teknik untuk membangun sistem pembelajaran mesin yang dapat diskalakan. Dia adalah pemimpin inovasi pemenang penghargaan, penulis, dan pembicara internasional. Dia sedang dalam misi untuk mendemokratisasi pembelajaran mesin dan memecahkan jargon agar semua orang menjadi bagian dari transformasi ini.
 

Stempel Waktu:

Lebih dari KDnugget