Grouping Data Menggunakan Pandas

Melanjutkan dari modul sebelumnya, Data yang digunakan adalah https://www.kaggle.com/c/rossmann-store-sales/data

Pada modul ini kita akan mempelajari grouping data. Pertama import library dan load data.

import pandas as pd

df = pd.read_csv("train.csv", low_memory=False, parse_dates=["Date"])

Untuk melakukan grouping gunakan fungsi groupby. Dokumentasi lengkap bisa lihat di https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html

Contoh kita akan melakukan group berdasarkan Store dan disimpan ke dataframe baru.

dfstore = df.groupby("Store")

Kita juga bisa melakukan grouping lebih dari 1 column. Gunakan parameter as_index=False agar index tidak berdasarkan column grouping, namun akan dibuat index baru oleh pandas.

dfStoreDOW = df.groupby(["Store", "DayOfWeek"], as_index=False)

Kita juga melakukan grouping dengan menggunakan fungsi cut. Pada code dibawah, kita akan melakukan grouping sales.

Grouping akan berdasarkan range sales yang ditentukan oleh parameter bins.

bins = [0, 2000, 4000, 6000, 8000, 10000, 50000]
cuts = pd.cut(df.Sales, bins, include_lowest=True)
df["SalesGroup"] = cuts
df.head()

Setelah dataframe terbentuk, sangat flexible untuk menampilkan data. Contohnya, kita bisa menampilkan jumlah penjualan masing-masing store dalam salesgroup tiap harinya.

df.groupby(["Store", "SalesGroup"]).DayOfWeek.value_counts()
Store  SalesGroup          DayOfWeek
1      (-0.001, 2000.0]    7            134
                           4             11
                           1              6
                           5              6
                           3              3
                                       ... 
1115   (10000.0, 50000.0]  5              7
                           2              2
                           4              2
                           6              2
                           3              1
Name: DayOfWeek, Length: 33024, dtype: int64

Anda juga bisa melihat data diatas menjadi column dengan fungsi unstack(). Gunakan parameter fill_value=0 untuk replace data NaN.

df.groupby(["Store", "SalesGroup"]).DayOfWeek.value_counts().unstack(fill_value=0)

Silakan bereksperimen dalam menggunakan fungsi gropby dan cut dengan menggunakan ide dasar diatas.

Sharing is caring:

Leave a Comment