Forensic Analytics dengan Pandas – Periodic Graph

Kode Lima Detik

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

pd.options.display.float_format = '{:,}'.format

df = pd.read_excel('Chapter4_Figure4pt4_DataOnly.xlsx')
df['month'] = pd.DatetimeIndex(df['Date']).month

df2 = df.groupby('month', as_index=False)['Amount'].sum()
df2['AmountM'] = df2['Amount']/1000000
df2['monthname'] = df2['month'].apply(lambda x: calendar.month_abbr[x])

a4_dims = (11.7, 8.27)
plt.figure(figsize=a4_dims)

sns.set_style("whitegrid")

ax = sns.barplot(x='monthname', y='AmountM', data=df2)
ax.set(xlabel='Month', ylabel='Monthly Total ($ millions)')
plt.show()

Pengantar

Sama seperti data histogram, periodic graph menyediakan visualisasi yang membantu kita lebih memahami data yang kita miliki. Seperti tulisan terdahulu, data yang digunakan adalah data pembayaran tagihan dari buku Forensic Analytics-nya Pak Nigrini. Data dapat diunduh di sini.


Periodic Graph

Tujuan

The Periodic Graph of the Payments Data pada Chapter 4, Figure 4.3. Dari grafik di bawah ini, dibuat pada Excel.

Menjadi seperti ini, menggunakan pandas, matplotlib dan seaborn.

Membuat grafik seperti ini sama mudahnya di Excel maupun di Pandas (Python). Saat menggunakan Excel, kita dapat terlebih dahulu membuat Pivot Table, kemudian itu kita jadikan acuan saat membuat grafik.

Urgensi

Menggunakan periodic graph kita mendapatkan informasi berperspektif waktu. Transaksi keuangan umumnya meningkat saat akhir tahun sehingga grafik di atas sebenarnya cukup “aneh” karena transaksi pada Desember tidak menjadi yang tertinggi, atau setidaknya tertinggi kedua. Jenis “keanehan” seperti itulah yang dapat kita tangkap menggunakan periodic graph.

Bila kita memiliki data dalam kurun waktu yang lebih panjang, misal alih-alih hanya data setahun, kita punya data 3 tahun terakhir, kita dapat menyandingkan data bulan masing-masing tahun untuk mendapatkan tren selama tahun-tahun tersebut.


Langkah Kerja

Data akan dikelompokkan dalam periode bulanan. Data yang kita gunakan adalah data satu tahun, sehingga tidak perlu difilter tahunnya.

Kode

Mengimpor library dan data yang diperlukan.

import calendar
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

pd.options.display.float_format = '{:,}'.format

df = pd.read_excel('Chapter4_Figure4pt4_DataOnly.xlsx')

Menambahkan kolom month yang berisi bulan transaksi, berguna saat mengelompokkan data.

df['month'] = pd.DatetimeIndex(df['Date']).month

Buat dataframe kedua yang berisi hasil pengelompokkan berdasarkan bulan. Dari masing-masing kelompok, jumlahkan (sum) kolom Amount. Kemudian tambahkan kolom AmountM, yaitu nilai penjumlahan sebelum kolom Amount dibagi dengan satu juta, ini murni hanya untuk kenyamanan membaca grafik saja. Selain itu tambahkan kolom monthname, juga hanya untuk kenyamanan membaca grafik sehingga dapat dilewatkan jika merasa tidak perlu.

df2 = df.groupby('month', as_index=False)['Amount'].sum()
df2['AmountM'] = df2['Amount']/1000000
df2['monthname'] = df2['month'].apply(lambda x: calendar.month_abbr[x])

Tampilkan plot.

sns.barplot(x='month', y='Amount', data=df2)

Jika kita menggunakan kolom Amount maka grafik akan menggunakan nilai 0 sampai 7 dan keterangan 1e7. Bulan ditampilkan dalam angka karena menggunakan kolom month. Untuk tampilan yang lebih “menyenangkan” kita gunakan kolom AmountM dan monthname, dan sedikit memformat grafik.

a4_dims = (11.7, 8.27)
plt.figure(figsize=a4_dims)

sns.set_style("whitegrid")

ax = sns.barplot(x='monthname', y='AmountM', data=df2)
ax.set(xlabel='Month', ylabel='Monthly Total ($ millions)')
plt.show()

Selanjutnya

Bila pembaca adalah auditor (audit keuangan) yang sedang menentukan sampel, bulan-bulan dengan transaksi tinggi tentu lebih diprioritaskan. Sebaliknya jika tema pemeriksaan adalah kinerja, bisa jadi bulan Mei adalah yang paling menarik.

Menggunakan grafik, keputusan di atas bisa segera diambil, bahkan sesingkat waktu untuk mencerna grafik transaksi tersebut.

Menggunakan data, profesional scepticism kita menjadi lebih terpercaya.


Cover Image by Calua from Pixabay

Leave a Reply

Your email address will not be published.