Analisis Keberjalanan Acara Internal di Data Science Indonesia

Faisal Anshory
Data Science Indonesia
7 min readDec 3, 2023

Pendahuluan

Acara DSI MeetUp

Dalam artikel ini, saya akan membahas proses analisis dalam evaluasi kegiatan acara internal yang sudah dilakukan oleh Data Science Indonesia. Acara internal yang akan dianalisis meliputi kegiatan DSI Meetup yang diselenggarakan oleh People Engagement dan Melek for Member oleh Knowledge Management. Proses dari analisis keberjalanan acara internal ini terbagi menjadi 4, yaitu:

  1. Perencanaan
  2. Pembuatan Formulir dan Pengumpulan Data
  3. Analisis Data
  4. Rekomendasi

A. Perencanaan

Proses ini meliputi pembuatan timeline untuk projek, pembagian tugas, wawancara dengan departemen terkait, dan pengembangan pertanyaan untuk formulir. Pertanyaan di formulir untuk responden berdasarkan metrik yang sudah disepakati oleh tim riset dan departemen terkait saat proses wawancara. Tim kemudian mengevaluasi hasil wawancara dan mengkonfirmasi kembali terkait hal-hal yang akan dimasukkan ke formulir. Adapun informasi yang akan dtanyakan meliputi:

Tabel Data yang Dikumpulkan

B. Pembuatan Formulir dan Pengumpulan Data

Proses ini menggunakan formulir yang dibuat di GoogleForms dan data yang dikumpulkan akan disimpan dalam GoogleSheets. Formulir ini disebarluaskan setelah acara terkait selesai sebagai salah satu proses absensi seusai mengikuti kegiatan. Pada beberapa sesi acara, departemen terkait memerlukan pertanyaan pada isi konten pertanyaan yang ada di formulir sehingga satu acara dapat terdiri dari lebih satu formulir. Proses penggabungan data responden dilakukan dengan menggunakan formula spreadsheet untuk disimpan dalam salah satu master spreadsheet.

Master spreadsheet setidaknya terdiri dari 2 sheets. Sheet pertama yaitu untuk melist spreadsheet yang akan digabungkan, link yang merefer ke spreadsheet tersebut, rentang kolom yang akan diimport, dan contoh salah satu kolom yang akan diimport. Pada bagian kolom F, salah satu cell kolom diimport dengan tujuan untuk mengetahui apabila ada spreadsheet yang memiliki formula atau link yang salah.

Tabel list link response formulir evaluasi

Kolom E merupakan gabungan dar isi cell dii kolom C dan D dengan formula =”’”&C2&”’!”&D2 , sedangkan pada kolom F, formula yang digunakan adalah =importrange(B2,”’”&C2&”’!A2") untuk melakukan import dari salah satu cell spreadsheet target yaitu A2. Apabila link url yang digunakan salah, maka akan memberikan error pada gambar dan kita menjadi tahu apa yang harus diperbaiki.

Contoh error formula

Sheet ke dua akan terdiri dari response untuk setiap spreadsheet target, formula yang digunakan adalah =ArrayFormula(unique({importrange(‘Sumber Sheet’!B2,’Sumber Sheet’!E2);importrange(‘Sumber Sheet’!B3,’Sumber Sheet’!E3);importrange(‘Sumber Sheet’!B4,’Sumber Sheet’!E4);importrange(‘Sumber Sheet’!B5,’Sumber Sheet’!E5)})). Jumlah formula import range adalah sebanyak jumlah spreadsheet yang diimport, formula unique bertujuan untuk menghilangkan baris yang kosong karena pada kolom ‘Range’ di sheet 1 tidak didefinisikan maksimal baris yang dimasukkan serta menghindari duplikasi judul kolom, dan ArrayFormula untuk menjalankan formula untuk setiap cell yang ada di range

Output dari formula

C. Analisis Data

Proses ini akan terbagi menjadi 2 tahapan, yaitu Data Cleaning dan Exploration serta Visualisasi. Bagian data cleaning dan exploration akan menggunakan program Google Sheets, Python, serta Deepnote, sedangkan visualisasi akan dilakukan menggunakan Google Looker Studio.

Proses Data Cleaning

Proses data cleaning diwali dengan memastikan bahwa informasi yang ada di master spreadsheet konsisten dari tipe data dan penulisan untuk kolom yang berasal dari pilihan ganda. Hal ini dapat dilakukan dengan melakuan pivot data ataupun menggunakan formula =UNIQUE(rentang kolom) untuk mengetahui nilai unik dari kolom.

Tipe pertanyaan di formulir yang sudah disiapkan sebelumnya terdiri dari pilihan ganda, angka, rating, dan teks (dapat dilihat di bagian perencanaan). Untuk respons dari pilihan ganda, angka, dan rating dapat diperiksa konsistensinya dengan cara pivot table/unique value dan tidak memerlukan preprocess lebih lanjut. Tetapi, respons untuk jawaban dari pertanyaan yang bertipe teks akan dilakukan preprocess untuk mencari tahu kata kunci kata yang sering muncul.

Aplikasi DeepNote

Proses data reprocess untuk respons teks akan dilakukan dengan deepnote. Untuk yang belum tau, deepnote adalah notebook kolaboratif berbasis cloud. Bentuk dari deepnote kurang lebih seperti Google Collab namun dengan fitur pendukung yang lebih banyak, seperti kolaborasi penulisan kode, koneksi ke beragam database, dan scheduling notebook yang bisa diakses secara terbatas untuk pengguna gratisnya.

Program yang digunakan untuk preprocess adalah Python. Secara garis besar, tahapan preprocess yang dilakukan meliputi

  1. Membaca data dari google sheet

Deepnote dapat membaca data kita dari Google Drive, tetapi apabila kita ingin melakukan modifikasi dataataupun menyimpan file baru di google drive maka program perlu membaca data json yang sebelumnya sudah diambil di Google Drive API (https://www.youtube.com/watch?v=BBgrgA96n-Q).

import gspread
## Read file and open gsheet
gc = gspread.service_account(filename="json file untuk akses Google Drive")
sh = gc.open('Master Feedback')
ws1 = sh.worksheet("Feedback")
df = pd.DataFrame(ws1.get_all_records())

2. Menghapus white space.

Karakter dari whitespace yang akan dihapus akan meliputi spasi, tab, serta line break (\n)

def replace_white_space(text):
return " ".join(text.split())

3. Menghapus stopword

Stopword adalah kata-kata umum yang sering muncul dan sering diabaikanuntuk kebutuhan analisis teks atau pemprosesan natural languange. Contoh kata-katanya yaitu “dan”, “di”, “yang”, “ke” dan sebagainya. Kata-kata stopword yang akan dihapus berdasarkan library nltk.

import nltk
nltk.download('stopwords')
STOPWORDS = set(stopwords.words('indonesian'))
def remove_stopwords(text):
return " ".join([word for word in str(text).split() if word not in STOPWORDS])

4. Menghapus tanda baca

Tanda baca adalah simbol atau karakter yang digunakan sebagai petunjuk cara membaca teks, contohnya koma(,), titik(.), dan tanda tanya (?). List untuk tanda baca tersebut akan diambil dari library string.

PUNCT_TO_REMOVE = string.punctuation
def remove_punctuation(text):
return text.translate(str.maketrans(' ', ' ', PUNCT_TO_REMOVE))

5. Mengubah singkatan tertentu menjadi kalimat penuh

# Dictionary of word replacements
replacement_dict = {
"da": "data analyst",
"de": "data engineer",
}
def replace_words(text, replacement_dict):
words = text.split()
replaced_words = [replacement_dict.get(word, word) for word in words]
replaced_text = ' '.join(replaced_words)
return replaced_text

6. Mengambil kata kunci dari kalimat

Proses pengambilan kata kunci akan menggunakan TfidfVectorizer. TF-IDF (Term Frequency-Inverse Document Frequency) adalah metode yang digunakan dalam pemrosesan teks untuk mengekstrak kata-kata kunci atau fitur penting dari teks.

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(ngram_range=(1, 2))
tfidf_matrix = tfidf_vectorizer.fit_transform(list(df_topik["topik_clean"]))
feature_names = tfidf_vectorizer.get_feature_names_out()
tfidf_array = tfidf_matrix.toarray()
num_keywords = 3 # Number of keywords to extract from each sentence
keywords_per_sentence = []
for tfidf_scores in tfidf_array:
top_indices = tfidf_scores.argsort()[-num_keywords:][::-1]
# print(top_indices)
if(max(tfidf_scores) ==1):
top_keywords = [[feature_names[i] for i in list(top_indices)][0]]
else:
top_keywords = [feature_names[i] for i in top_indices]
keywords_per_sentence.append(top_keywords)

7. Transformasi data

Output dari program untuk mengambil kata kunci dari kalimat berbentuk nested list [[‘a’],[‘b]] yang jumlahnya sesuai jumlah baris response yang dibaca, sehingga perlu mengubah bentuk nested list menjadi list biasa.

keywords_list = [['keywords']] + [[item] for sublist in keywords_per_sentence for item in sublist]

8. Menyimpan data ke google sheet kembali

List kata kunci yang sudah disimpan di variabel keyword_list akan ditambahkan ke dalam spreadsheet di worksheet dengan nama “Keywords”

ws4 = sh.worksheet("Keywords")
ws4.update(keywords_list)

Proses data preprocess ini dilakukan terhadap 2 jenis pertanyaan yaitu respons untuk pertanyaan saran topik dan masukan untuk acara.

Proses Visualisasi

Proses visualisasi akan dilakukan dengan Google Looker dengan menghubungan dashboard ke data google sheet yang sudah di cleaning dan preprocess. Perencanaan terkait informasi dan bentuk visual yang akan disajikan di dashboard dirancang terlebih dahulu.

Tabel Rencana Visualisasi

Dari rancangan dashboard yang sudah dibuat, dilakukan proses pembuatan dashboard tahapan awal untuk memastikan bahwa sumber data dan tipe chart yang ingin dibua sesuai dan memungkinkan untuk dibuat.

Mockup dashboard

Penyesuaian terhadap grafik dan serta tipe data kemudan dilakukan apabila ditemukan masalah ketidaksesuaian. Apabila sudah tidak ditemukan masalah, proses mempercantik dashboard dapat dilakukan agar lebih enak untuk dibaca dan dipahami oleh pengguna.

Hasil Visualisasi Dashboard

Proses evaluasi kemudian dilakukan secara berkelanjutan sesuai dengan saran dan masukan dari pengguna yaitu departemen terkait yang melakukan kegiatan pelatihan di DSI.

Apa yang Bisa Dipelajari dari Proses yang Dilakukan?

Proses internal research dapat memberikan banyak wawasan dan pembelajaran bagi semua orang, bukan hanya mereka yang terlibat dalam pengembangan acara. Melalui proses standarisasi, evaluasi, dan analisis data, kita dapat memahami apa yang membuat suatu acara sukses dan bagaimana kita dapat meningkatkannya. Dengan lebih banyak informasi seperti ini yang dibagikan dengan publik, kita semua dapat menjadi lebih cerdas dan terlibat dalam pengembangan acara yang lebih baik.

Special Thanks:

  • Tim Data Science Indonesia, terutama departemen People Engagement dan Knowledge Management
  • Novia Permatasari dan Muhammad Pasya Fitra sebagai tim Riset Internal Member dan mas Ignatius Sandyawan

--

--