Membuat Fungsi di SQLite Studio

Kadangkala kita mempunyai  kepentingan untuk membuat fungsi di SQLite yang belum pernah ada di fungsi builtin, dan kita terpaksa membuat sendiri.

Ada dua macam fungsi disitu yaitu fungsi skalar dan aggregate, namun disini saya akan membuat fungsi skalarnya saja, jika kita membutuhkan agregasi, ya kita bungkus aja dengan fungsi agregasi builtin-nya.

Sebagai contoh saya mempunyai tabel yang ada nilai rekomendasinya 0 – 10. Dan akan saya buatkan fungsi untuk mengetahui status NPSnya .

Menggunakan Perintah SQL

Misalnya kita membuat fungsi yang namanya fnps menggunakan SQL sbb:

Menggunakan Javascript

Satunya lagi menggunakan Javascript sbb:

Implementasi Fungsi

Maka fungsi-fungsi itu bisa kita gunakan sebagai berikut:

atau jika kita terapkan bersama fungsi agregasi bisa seperti ini

Menggunakan SQL untuk fungsi dalam batasan tertentu mungkin lebih simpel, namun untuk mekanisme yang lebih rumit mungkin perlu menggunakan Javascript sebagai bahasa fungsi  karena Javascript lebih banyak fiturnya.

Okey, enjoy SQL

Scrapping Halaman Web

Berikut ini cara melakukan web scrapping dengan Python

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://satudata.nganu.id/dataset/63/2021/data-masjid"

# Mengambil konten halaman menggunakan requests
response = requests.get(url)

if response.status_code == 200:
    # Membuat objek BeautifulSoup untuk melakukan parsing HTML
    soup = BeautifulSoup(response.text, 'html.parser')

    # Mengidentifikasi elemen HTML yang berisi data yang diinginkan
    # Misalnya, jika data terletak dalam elemen tabel <table>
    table = soup.find('table')

    # Membaca tabel HTML ke dalam DataFrame menggunakan pandas
    data = pd.read_html(str(table))[0]

    # Menampilkan DataFrame
    print(data)

else:
    print(f"Failed to retrieve the page. Status code: {response.status_code}")

Jika terdiri dari banyak halaman bisa menggunakan cara seperti ini, walaupun anda perlu melakukan penyesuaian

import requests
from bs4 import BeautifulSoup
import pandas as pd

def scrape_data(url):
    # List untuk menyimpan DataFrames dari setiap halaman
    all_dataframes = []

    while True:
        # Mengambil konten halaman menggunakan requests
        response = requests.get(url)

        if response.status_code == 200:
            # Membuat objek BeautifulSoup untuk melakukan parsing HTML
            soup = BeautifulSoup(response.text, 'html.parser')

            # Mengidentifikasi elemen HTML yang berisi data yang diinginkan
            # Misalnya, jika data terletak dalam elemen tabel <table>
            table = soup.find('table')

            # Membaca tabel HTML ke dalam DataFrame menggunakan pandas
            data = pd.read_html(str(table))[0]

            # Menambahkan DataFrame ke list
            all_dataframes.append(data)

            # Mencari URL halaman berikutnya (jika ada)
            next_page = soup.find('li', class_='page-item next')
            if next_page:
                # Mendapatkan URL dari atribut 'href'
                url = next_page.find('a')['href']
            else:
                # Keluar dari loop jika tidak ada halaman berikutnya
                break

        else:
            print(f"Failed to retrieve the page. Status code: {response.status_code}")
            break

    # Menggabungkan semua DataFrames menjadi satu
    result_df = pd.concat(all_dataframes, ignore_index=True)

    return result_df

# Gantilah 'https://satudata.nganu.id/dataset/63/2021/data-masjid' dengan URL yang sesuai
url_to_scrape = 'https://satudata.nganu.id/dataset/63/2021/data-masjid'
result_dataframe = scrape_data(url_to_scrape)

# Menampilkan DataFrame hasil
print(result_dataframe)
result_dataframe.to_csv('data-masjid.csv')

Jika kamu tidak bisa emnembusnya gunakan firewall ini https://www.blackbox.ai/

Exstract Table di Pdf dengan Python Camelot

Berikut untuk ekstraksi data dari table pdf ke csv

1
2
3
4
5
6
import camelot
file_path = "durenan-malasan-8.pdf"
pdf_archive = camelot.read_pdf(file_path, pages="1", flavor="stream")
for page, pdf_table in enumerate(pdf_archive):           
    # print(pdf_archive[page].df)
    pdf_archive[page].to_csv('test.csv')

Untuk informasi lebih lanjut silahkan mengunuungi situsnya di dini.

Studi Kasus SQL ke DF

Ini hanya sebuah studi kasus latihan agar terbiasa menggunakan Data Frame. Kalau saya pribadi lebih menyukai SQL dibanding Data Frame karena kemudahannya. Pada Data Frame terlalu banyak model yang membuat pemula mudah lupa atau bingung.

1
2
3
4
5
SELECT Produk_Kategori, Jenis_Kelamin,   COUNT(ID) AS Jumlah
    FROM retail
    WHERE Usia >= 17 AND Kepuasan > 2
    GROUP BY Produk_Kategori, Jenis_Kelamin
    ORDER BY Produk_Kategori DESC, Jenis_Kelamin ASC

dan berikut data framenya

1
2
3
4
5
6
7
8
9
10
import pandas as pd
# Membaca data dari file CSV
df = pd.read_csv(data_csv)
# Melakukan filter berdasarkan kondisi Usia >= 17 dan Kepuasan > 2
df = df[(df['Usia'] >= 17) & (df['Kepuasan'] > 2)]
# Melakukan group by dan menghitung jumlah ID untuk setiap Produk_Kategori dan Jenis_Kelamin
result_df = df.groupby(['Produk_Kategori', 'Jenis_Kelamin']).agg(Jumlah=('ID', 'count')).reset_index()
# Mengurutkan berdasarkan Produk_Kategori secara descending dan Jenis_Kelamin secara ascending
result_df = result_df.sort_values(by=['Produk_Kategori', 'Jenis_Kelamin'], ascending=[False, True])
print(result_df)