Python

Tutorial Pembuatan Word Cloud dengan Python (Part 2)

Hai hai sobat Exsight, melanjutkan artikel dari sebelumnya terkait Word Cloud dalam Text Analysis #1, pada artikel ini kita akan melakukan tutorial pembuatan Word Cloud dengan Software Python. Yuk simak artikel ini dengan seksama yaa!

Tutorial Python Word Cloud

Studi Kasus

Pembuatan word cloud dalam hal ini bertujuan untuk merangkum informasi, melakukan identifikasi kata kunci, serta visualisasi data teks berdasarkan suatu studi kasus. Adapun studi kasus yang kita gunakan yaitu terkait artikel berjudul “Polusi Udara di Jakarta Makin Parah, BMKG Akhirnya Buka Suara” yang didapatkan dari situs www.cnbcindonesia.com.

word cloud

Load Library Python

Tahapan paling awal sebelum running syntax di Python yaitu melakukan load library . Apabila kamu masih belum memiliki library untuk pembuatan Word Cloud , maka dapat menginstall terlebih dahulu dengan cara

pip install (nama library nya)

Adapun Library Python yang digunakan untuk pembuatan Word Cloud yaitu

pip install newspaper3k
from newspaper import Article
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import numpy as np
import matplotlib.pyplot as plt
import PIL.Image

Scrapping Data

Setelah load library Python, tahapan berikutnya yaitu melakukan scrapping data. Scrapping data adalah proses pengambilan dan pengumpulan informasi berupa data text dari berbagai sumber di internet secara otomatis menggunakan program syntax Python, dalam hal ini kita akan melakukan scrapping data untuk artikel berjudul “Polusi Udara di Jakarta Makin Parah, BMKG Akhirnya Buka Suara” yang didapatkan dari situs www.cnbcindonesia.com. Syntax Python yang digunakan adalah sebagai berikut.

#Menambahkan tautan/link berita untuk di scraping
article = Article('https://www.cnbcindonesia.com/news/20230816114723-4-463466/polusi-udara-di-jakarta-makin-parah-bmkg-akhirnya-buka-suara')

#Melakukan parsing
article.download()
article.parse()

Membuat Word Cloud

Langkah berikutnya, setelah melakukan scrapping data, kita dapat membuat visualisasi Word Cloud dengan syntax sebagai berikut.

wc = WordCloud(background_color="white", max_words=2000,
          stopwords=["di","dari","karena","yang","itu","pada","dan"], max_font_size=256,
          random_state=42, width=500, height=500)
wc.generate(article.text)
plt.imshow(wc, interpolation="bilinear")
plt.axis('off')
plt.show()
word cloud
Gambar 1. Hasil Visualisasi Word Cloud

Berdasarkan Gambar 1. diketahui bahwa kata kunci dari artikel yang paling sering digunakan, ditandai dengan kata-kata dengan ukuran huruf yang cukup besar dan menonjol seperti “Jakarta”, “polusi”, “udara”, “musim”, “hujan”, “kemarau”, “Indonesia”, “tidak” dan sebagainya.

Membuat Word Cloud dengan Masking

Apabila kita perhatikan pada Gambar 1, Word Cloud yang dihasilkan berbentuk kotak. Namun, kita juga bisa loh memodifikasi hasil Word Cloud menjadi berbagai bentuk yang lebih menarik yaitu dengan cara Masking Word Cloud.

Mula-mula diawali dengan kita mencari bentuk Word Cloud yang akan dibuat. Untuk artikel ini, kita akan membuat Word Cloud seperti logo comment, dimana untuk sumber gambar dapat dilihat pada https://www.kaggle.com/datasets/aashita/masks?select=comment.png.

word cloud
Gambar 2. Tampilan Website Kaggle untuk Sumber

Berdasarkan Gambar 2., pada bagian data explorer kita download gambar “comment.png”. Setelah itu kita buat Syntax Masking Word Cloud sebagai berikut.

python_mask=np.array(PIL.Image.open("comment.png"))
wc2 = WordCloud(background_color="white", max_words=2000,
               stopwords=["di","dari","karena","yang","itu","pada","dan"],mask=python_mask)
wc2.generate(article.text)
plt.imshow(wc2)
plt.axis('off')
plt.show()
word cloud
Gambar 3. Hasil Visualisasi Masking Word Cloud

Maka didapatkan hasil masking word cloud seperti yang dapat dilihat pada Gambar 3, di mana diketahui bahwa kata kunci dari artikel yang paling sering digunakan, ditandai dengan kata-kata dengan ukuran huruf yang cukup besar dan menonjol yaitu “Jakarta”, “musim”, “tidak”,”polusi”, “udara”, “hujan”, “Indonesia” dan sebagainya.

Referensi

https://www.cnbcindonesia.com/news/20230816114723-4-463466/polusi-udara-di-jakarta-makin-parah-bmkg-akhirnya-buka-suara

Witten, I. H., & Frank, E. (2005). Data Mining: Practical machine learning tools and techniques with Java implementations.

Kuo, F. E., & Sullivan, W. C. (2001). Aggression and violence in the inner city: Effects of environment via mental fatigue.

Sekian penjelasan terkait Tutorial Pembuatan Word Cloud dengan Python. Jika masih ada yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Penanganan Missing Value pada Data dengan Python (Part 2)

Halo Sobat Exsight! Pada artikel sebelumnya telah dibahas tentang apa itu  Missing Value pada Data Statistik. Selanjutnya pada artikel ini akan dibahas terkait tutorial Penanganan Missing Value pada Data dengan Python.

Dimana untuk tutorial kali ini akan berfokus pada penanganan Missing Value dengan cara penghapusan baris data missing maupun dengan cara imputasi nilai berdasarkan mean, median, dan modus. Yuk langsung saja simak tutorialnya dengan seksama yaa!

Tutorial Python

Studi Kasus

Studi kasus yang akan kita gunakan dalam hal ini menggunakan data Melbourne Housing Snapshot yang didapatkan dari situs Kaggle. Data terdiri atas 21 variabel dan 13. 580 observasi.

missing value

Load Library Python

Tahapan paling awal sebelum running syntax di Python yaitu melakukan load library . Apabila kamu masih belum memiliki library untuk penanganan missing value , maka dapat menginstall terlebih dahulu dengan cara

pip install (nama library nya)

Adapun beberapa library yang digunakan terdiri atas:

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

Load Data

Setelah melakukan load data di Python. Data yang diinput diberi nama sebagai data yang berasal dari file Melbourne Housing. Perlu diperhatikan untuk jenis file data yang diinput dalam format CSV, hal ini dengan tujuan untuk mempermudah pengguna. Syntax yang digunakan adalah sebagai berikut

data = pd.read_csv('Melbourne Housing.csv')
data
missing value
Gambar 1. Data Melbourne Housing

Pengecekan Adanya Missing Value

Mula-mula kita perlu memastikan missing value pada data terdapat pada variabel apa saja

#Jumlah Missing Value pada Tiap Variabel
np.sum(data.isnull())
missing value
Gambar 2. Jumlah Missing Value Tiap Variabel

Berdasarkan hasil output pada Gambar 2. diketahui bahwa variabel-variabel yang terdapat missing value yaitu variabel Car, BuildingArea, YearBuilt, dan CouncilArea.

Cek Persentase Missing Value

Tahapan berikutnya kita perlu melakukan cek persentase missing value. Apabila missing value pada suatu variabel kurang dari 20% maka dilakukan penghapusan baris data, namun jika missing value lebih dari 20% maka dilakukan imputasi nilai.

null_percentage = missing_cols/13580*100
print(null_percentage.sort_values())
missing value
Gambar 3. Persentase Missing Value Tiap Variabel

Gambar 3. menunjukkan hasil bahwa variabel Car dan variabel CouncilArea memiliki missing value kurang dari 20%, maka dari itu dilakukan penghapusan baris yang missing pada kedua variabel tersebut.

Penanganan Missing Value dengan Penghapusan

data.dropna(subset=['Car', 'CouncilArea'], axis=0)
missing value
Gambar 4. Data Setelah Penanganan Missing Value dengan Penghapusan

Gambar 4. menunjukkan bahwa setelah dilakukan penghapusan baris yang missing pada variabel Car dan variabel CouncilArea, data yang semula terdiri atas 13.580 baris menjadi 12.211 baris.

Pengecekan Outlier

Tahapan berikutnya kita akan melakukan penanganan missing value dengan imputasi pada variabel YearBuilt dan variabel BuildingArea. Apabila kita perhatikan variabel YearBuilt dan variabel BuildingArea merupakan variabel numerik, sehingga jenis imputasi yang mungkin yaitu imputasi mean atau imputasi median.

Penggunaan imputasi mean dan imputasi median tergantung pada ada atau tidaknya outlier. Jika terdapat outlier pada suatu variabel maka jenis imputasi yang tepat digunakan yaitu imputasi median. Maka dari itu dilakukan pengecekan outlier menggunakan Boxplot sebagai berikut.

sns.boxplot(x=data['BuildingArea'])
sns.boxplot(x=data['YearBuilt'])
missing value
Gambar 5. Boxplot Variabel BuildingArea dan YearBuilt

Berdasarkan Gambar 5. diketahui bahwa terdapat outlier pada variabel BuildingArea dan variabel Built, sehingga jenis imputasi yang tepat digunakan yaitu imputasi median.

Penanganan Missing Value dengan Imputasi Median

Perhitungan nilai median dilakukan dengan syntax sebagai berikut

#Menghitung Nilai Median Variabel BuidingArea dan YearBuilt
med_BuildingArea = data['BuildingArea'].median()
med_YearBuilt = data['YearBuilt'].median()

Nilai median untuk variabel BuildingArea yaitu sebesar 124 sedangkan median untuk variabel YearBuilt yaitu sebesar 1970. Selanjutnya kita lakukan imputasi missing value berdasarkan median dari variabel BuidingArea dan YearBuilt.

data['BuildingArea'].fillna(med_BuildingArea, inplace=True)
data['YearBuilt'].fillna(med_YearBuilt, inplace=True)

Tahapan terakhir, kita lakukan kembali pengecekan missing value pada data

np.sum(data.isnull())
missing value
Gambar 6. Pengecekan Ulang Missing Value

Berdasarkan Gambar 6. dapat kita simpulkan bahwa sudah tidak ada lagi missing value pada data Melbourne Housing.

Referensi

Fadillah, I. (2019). Perbandingan Metode Hot-Deck Imputation dan Mettode KNNI dalam Mengatasi Missing Values. Prosiding Seminar Nasional Official Statistics.

Little, R. J. A., & Rubin, D. B. (2019). Statistical Analysis with Missing Data (3rd ed.). Hoboken, NJ: Wiley.

Sudirman. (2012). Analisis Perbandingan Metode Imputasi Missing Values Global dan Concept Method pada Data Supervised. Jurnal Ilmiah FIFO Volume IV, No. 2.

Sampai disini dulu penjelasan terkait Penanganan Missing Value pada Data dengan Python. Apabila masih terdapat hal-hal yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Penentuan Distribusi Data dengan Python

Saat melakukan analisis data, kira-kira apa yang ada di benak Sobat Exsight terkait distribusi data?
Distribusi data merupakan suatu aspek penting yang dapat mempengaruhi hasil analisis data. Namun bagaimana cara kita memastikan bahwa distribusi data yang kita gunakan telah tepat atau belum?

Nah pada artikel ini, kita akan membahas lebih lanjut terkait Penentuan Jenis Distribusi Data, adapun aplikasi yang digunakan pada tutorial kali ini yaitu Python. Yuk simak artikel ini dengan seksama yaa!

Distribusi Data

Secara definisi distribusi data adalah suatu cara yang menggambarkan frekuensi munculnya nilai-nilai tertentu dalam kumpulan data serta menggambarkan sebaran nilai-nilai dalam kumpulan data. Visualisasi distribusi data dapat dilakukan dengan berbagai grafik seperti histogram, boxplot, atau density plot.

Pemahaman terkait jenis distribusi data sangatlah penting, dikarenakan pemilihan yang tepat akan mempengaruhi hasil analisis yang diperoleh. Misalnya, jika data diambil dari distribusi normal, maka hasil analisis yang menggunakan distribusi normal akan lebih akurat dan dapat diandalkan. Sebaliknya, jika distribusi data yang digunakan salah, hasil analisis dapat menjadi tidak akurat atau bahkan menyesatkan.

Tutorial Python

Studi Kasus

Data yang akan kita gunakan pada tutorial kali ini yaitu data Fastfood Nutrition , yang didapatkan dari situs Kaggle
* Data terdiri atas 17 variabel dan 516 observasi.

Distribusi Data

Berdasarkan 17 variabel yang tersedia, selanjutnya dilakukan data cleaning dengan hanya mengambil 6 variabel saja yang menjadi fokus dalam penentuan jenis distribusi yaitu:
Variabel calories, total_fat, cholestrol, sodium, total_carb, dan sugar

Load Library Python

Tahapan paling awal sebelum running syntax di Python yaitu melakukan load library. Apabila kamu masih belum memiliki library untuk penentuan jenis distribusi, maka dapat menginstall terlebih dahulu dengan cara

pip install (nama library nya)

Adapun beberapa library yang digunakan terdiri atas:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats
from scipy.stats import kstest
from fitter import Fitter, get_common_distributions, get_distributions

Load Data

Tahapan selanjutnya yaitu melakukan load data di Python. Data yang diinput diberi nama sebagai data yang berasal dari file Fastfood Nutrition. Perlu diperhatikan untuk jenis file data yang diinput dalam format CSV, hal ini dengan tujuan untuk mempermudah pengguna. Syntax yang digunakan adalah sebagai berikut

#Import Data
dataset =pd.read_csv("Fastfood Nutrition.csv")
dataset
Distribusi Data

Visualisasi Histogram

Penentuan jenis distribusi data dapat dilakukan secara visual berdasarkan grafik Histogram sebaagai berikut.

dataset.hist(bins=30, figsize=(12,12), density=True)
plt.show()
Distribusi Data

Berdasarkan visualisasi histogram terlihat bahwa untuk seluruh variabel histogram tidak berbentuk seperti lonceng, sehingga secara visual dapat dikatakan data tidak berdistribusi Normal.

Uji Kolmogorov-Smirnov

Pengidentifikasian distribusi data secara visual, seringkali terdapat subjektifitas antara satu peneliti dengan peneliti lainnya. Sehingga untuk lebih memastikan lagi, maka diperlukan pengujian, dalam hal ini pengujian yang digunakan adalah uji Kolmogorov-Smirnov. Hipotesis yang digunakan untuk pengujian ini adalah sebagai berikut.

H0 : Data Berdistribusi Normal
H1 : Data Tidak Berdistribusi Normal

Apabila dari pengujian Kolmogorov-Smirnov, p-value bernilai lebih dari 0,5 maka diambil keputusan Terima H0 artinya data berdistribusi normal.

# Uji Kolmogorov-Smirnov (kstest)
ks_calories = kstest(dataset['calories'], 'norm')
ks_total_fat = kstest(dataset['total_fat'], 'norm')
ks_cholesterol = kstest(dataset['cholesterol'], 'norm') 
ks_sodium = kstest(dataset['sodium'], 'norm')
ks_total_carb= kstest(dataset['total_carb'], 'norm')
ks_sugar = kstest(dataset['sugar'], 'norm')

print(ks_calories)
print(ks_total_fat)
print(ks_cholesterol)
print(ks_sodium)
print(ks_total_carb)
print(ks_sugar)
Distribusi Data

Berdasarkan hasil pengujian Kolmogorov-Smirnov, p-value untuk variabel calories, total_fat, cholesterol, sodium, total_carb, dan sugar bernilai kurang dari 0.05 maka diambil keputusan TOLAK H0 artinya data TIDAK BERDISTRIBUSI NORMAL

Jenis-Jenis Distribusi

Tahapan selanjutnya, dikarenakan variabel-variabel tidak ada yang berdistribusi Normal, maka dilanjutkan pengidentifikasian dengan jenis-jenis distribusi lainnya. Adapun jenis distribusi yang akan menjadi acuan adalah sebagai berikut.

#Beberapa Distribusi yang umum Digunakan
get_common_distributions()

Identifikasi Distribusi

Berdasarkan jenis-jenis distribusi yang telah dipaparkan sebelumnya, selanjutnya dilakukan pengidentifikasi jenis distribusi masing-masing variabel.

Variabel Calories

#Visualisasi Data Untuk Setiap Distribusi (Ditampilkan 5 Terbaik)
fage = Fitter(dataset['calories'],
           distributions=get_common_distributions())
fage.fit()
fage.summary()

Secara Visualisasi terlihat bahwa kurva dari distribusi Rayleight paling pas dalam menyesuaikan bentuk data dari variabel Calories. Namun hal tersebut masih perlu dipastikan lagi berdasarkan perhitungan nilai Sum Square Error.

#Menentukan Distribusi Terbaik berdasarkan Sum square Error Terkecil
fcalories.get_best(method = 'sumsquare_error')

Berdasarkan nilai Sum Square Error terkecil, didapatkan hasil bahwa untuk variabel Calories paling sesuai berdistribusi Rayleight, dengan nilai parameter lokasi yaitu 38,498 dan parameter skala yaitu 401,302. Selanjutnya dapat ditampilkan visualisasi untuk variabel Calories dengan kurva distribusi Rayleight yaitu sebagai berikut.

#Visualisasi Variabel Calories dengan Distribusi Rayleigh
fcalories_rayleigh= Fitter(dataset['calories'],
           distributions='rayleigh')
fcalories_rayleigh.fit()
fcalories_rayleigh.summary()
Distribusi Data

Variabel-Variabel Lainnya

Selanjutnya dengan menggunakan cara yang sama seperti sebelumnya, maka dapat ditentukan distribusi dari variabel-variabel lainnya adalah sebagai berikut.

Referensi

https://medium.com/the-researchers-guide/finding-the-best-distribution-that-fits-your-data-using-pythons-fitter-library-319a5a0972e9

https://www.datainsightonline.com/post/how-to-find-the-distribution-that-fits-your-data-best

Sekian penjelasan terkait Penentuan Jenis Distribusi Data dengan Python. Jika masih terdapat hal-hal yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Klik Daftar Isi Disini