Top 10 orang yang sering DM kamu di instagram šŸ§

14 March 2020 / Article / Satrio

tweet1

Semua bermula ketika saya lagi bersih-bersih file dan folder di laptop saya. Saya nemu folder arsip data akun instagram saya yang sudah saya download sejak tahun 2018. Di dalamnya ada file messages.json yang membuat saya penasaran pengin baca. File messages.json ini isinya data Direct Messages akun instagram kita. Isinya lengkap mulai dari siapa, teks pesan, gambar/gif yang dikirim, dan lainnya. Karena iseng, akhirnya saya penasaran pengin ngulik data isi DM ini šŸ§.

Lihat isi data dalam file

Sebelum saya memilih mau saya apakan data ini, saya cari tahu dulu data ini isinya seperti apa. Karena saya lumayan jago urusan data analisis pake Python, jadi saya pilih pake jupyter notebook sebagai tool buat ngulik.

import pandas as pd dm = pd.read_json('messages.json') #menyeleksi hanya bagian isi dm hasil = [] for pesan in dm['conversation']: for item in pesan[1:]: hasil.append(item) isi_dm = pd.Dataframe(hasil) #print dataframe isi dm isi_dm.head()

Setelah disajikan dalam bentuk dataframe, baru kelihatan kalau datanya punya 20 kolom. Tiap-tiap kolom ini berisi instansi informasi yang terkandung dalam isi DM. Dari 20 instansi yang ada saya hanya akan mengambil 3 instansi saja, yaitu created_at, sender, dan text.

df = isi_dm.copy() #menghapus kolom yang tidak digunakan df.drop( [ 'action', 'animated_media_images', 'heart', 'is_random', 'likes', 'link', 'media', 'media_owner', 'media_share_caption', 'media_share_url', 'media_url', 'mentioned_username', 'profile_share_name', 'profile_share_username', 'story_share', 'user', 'video_call_action', ], (axis = 1), (inplace = True) ) #print hasil top 10 orang yang sering DM kita df.group('sender')['text'].count().sort_values(ascending=False).head(10)

Hasil yang didapatkan sebagai berikut:

the result DM hasilnya bikin saya kaget karena muncul akun yang tidak saya antisipasi šŸ˜…šŸ˜…

Peringkat pertama adalah dari akun saya sendiri.

Kok bisa gitu? šŸ¤”

Dataframe yang saya bentuk sengaja menggabungkan seluruh percakapan dari semua orang menjadi satu.

Struktur data asli dari file messages.json seperti ini:

{} ā””ā”€ā”€ {1} | ā”œā”€ā”€ participants | | ā”œā”€ā”€ {temen_saya} | | ā””ā”€ā”€ {saya} | | | ā””ā”€ā”€ conversation | ā”œā”€ā”€ {isi_DM_1} | ā”œā”€ā”€ {isi_DM_2} | ā”œā”€ā”€ {isi_DM_3} | ā”œā”€ā”€ {...} | ā”œā”€ā”€ {2} ā”œā”€ā”€ {...}

Saya ubah menjadi seperti ini:

{} ā”œā”€ā”€ {isi_DM_1} ā”œā”€ā”€ {isi_DM_2} ā”œā”€ā”€ {isi_DM_3} ā”œā”€ā”€ {isi_DM_4} ā”œā”€ā”€ {isi_DM_5} ā”œā”€ā”€ {isi_DM...}

Setelah {isi_DM} digabung menjadi satu thread, otomatis informasi sender (yang ada di dalam {isi_DM}) paling banyak adalah dari si pemilik akun.

Text Processing

the result DM with text processing

Hal menarik lain yang sebenarnya bisa diulik dari data ini adalah memetakan kata yang sering muncul. Pada gambar di atas, kata yang sering muncul adalah :( yang dikirimkan oleh akun strbyj yaitu saya sendiri (ckckck macam sadboy saja šŸ˜„šŸ˜„). Tetapi untuk melakukan pemetaan dengan lebih akurat perlu dilakukan tahapan tambahan yaitu text cleaning. Sayangnya saya belum menemukan modul python text cleaning untuk Bahasa Indonesia.

<br> <br>

Everyone join the party šŸŽ‰šŸ’ƒšŸ¼

Kembali ke gambar tweet saya di atas, setelah saya membagikan tweet tersebut, beberapa senior dan teman saya menjadi penasaran untuk mencoba mengulik arsip data akun instagram mereka masing-masing.

image tweet 2 image tweet 2 image tweet 2