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.