Catatan Cak Edy

Life and Technology

  • About
  • Kebijakan Privasi
  • Kontak
  • Referensi

Python

Cara Gampang Memulai Belajar Pemrograman Python

16/08/2024

Ini adalah ilmu paling penting dalam menguasai bahasa pemrograman Python. Setup Python. Kalau sudah bisa setup Python, maka kamu sudah menguasai separuh dari bahasa ini.  Separuh lagi, tinggal suruh ChatGPT. Sungguh!

Kawan saya Trigus Dodik Susilo  hanya saya ajari menginstall Python, sekarang sudah bisa menggunakan bahasa ini untuk berbagai keperluan. Ajaib.

Baik kita mulai …

Instalasi Python

Jika kamu pengguna Windows 10, mungkin 11 juga yang disana sudah ada toko aplikasi (Microsoft Store), install menggunakan toko aplikasi itu.  Lebih mudah dan aplikasi langsung bisa dipanggil melalui Terminal.

Pertama Buka Micrrosoft Store dan cari: Python. Pilih versi yang kamu kehendaki. Adapun saya akan memilih yang versi yang baru 3.12 saja.

Begitu doang. Gempil hihihi….

Sekarang kta buka Terminal. Kalau kamu belum punya, kamu bisa install Windows Terminal melalui Microsoft Store, dengan cara yang sama seperti diatas.

Lalu kita cek apakah Python sudah terinstall:

Membuat Program Python

Cara membuat program Python bisa menggunakan berbagai cara. Yg lebih enak sih menggunakan VSCode. Tapi kalau nggak ada text editor apa saja bisa, seperti Notepad++ yang ringan, atau bahkan Notepad betulan.

Coba buka notepad dan ketikkan

print("Halo Dunia!")

dan simpan dengan nama hello.py

Sekarang, buka terminal dan ketikkan: python hello.py

Sampai disini kamu sudah menguasai Python !!!

Studi Kasus

Saya mempunyai sebuah fille Excel yang didalamnya ada kolom
Nomor, Nama, Alamat, Telp, Kota.

Saya ingin memecahnya menjadi satu file excel setiap kota, bagaimana caranya?

Solusi: caranya tanya ChatGPT!
“Saya mempunyai sebuah file Excel dalam folder D:/Python yang didalamnya ada kolom Nomor, Nama, Alamat, Telp, Kota. Pecah file tersebut menjadi beberapa file excel berdasarkan kot. Buatkan dalam bahasa Python”

Dan jawabannya adalah:

Untuk membagi file Excel menjadi beberapa file berdasarkan kolom “Kota” menggunakan Python, kamu bisa menggunakan pustaka pandas. Berikut adalah langkah-langkah dan contoh kode untuk melakukannya:

  1. Install pustaka yang diperlukan: Pastikan kamu telah menginstal pandas dan openpyxl. Jika belum, kamu bisa menginstalnya dengan pip:
    pip install pandas openpyxl
    
  2. Tulis kode Python: Berikut adalah contoh kode untuk membaca file Excel dari folder D:/Python, memecahnya berdasarkan kolom “Kota”, dan menyimpannya sebagai file Excel terpisah:
import pandas as pd
import os

# Path ke file Excel yang ingin dibaca
input_file = 'D:/Python/your_file.xlsx'

# Path folder untuk menyimpan file Excel yang dipecah
output_folder = 'D:/Python/Output'

# Membaca file Excel
df = pd.read_excel(input_file)

# Memeriksa apakah folder output ada, jika tidak, buat folder tersebut
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Mengelompokkan data berdasarkan kolom 'Kota'
grouped = df.groupby('Kota')

# Menyimpan setiap grup sebagai file Excel terpisah
for kota, group in grouped:
    # Membuat nama file berdasarkan nama kota
    output_file = os.path.join(output_folder, f'{kota}.xlsx')
    # Menyimpan grup ke file Excel
    group.to_excel(output_file, index=False)

print("File Excel telah dipisahkan berdasarkan kota dan disimpan di folder Output.")

Penjelasan:

  • import pandas as pd: Mengimpor pustaka pandas untuk manipulasi data.
  • input_file: Path ke file Excel yang akan dipecah.
  • output_folder: Folder tempat menyimpan file hasil pecahan.
  • pd.read_excel(input_file): Membaca file Excel ke dalam DataFrame df.
  • os.makedirs(output_folder): Membuat folder output jika belum ada.
  • df.groupby('Kota'): Mengelompokkan data berdasarkan kolom “Kota”.
  • group.to_excel(output_file, index=False): Menyimpan setiap grup ke file Excel terpisah.

Sesuaikan nama file your_file.xlsx dengan nama file Excel yang kamu miliki. Kode ini akan menghasilkan file-file Excel baru di dalam folder Output yang dinamai sesuai dengan nilai yang ada di kolom “Kota”.

Nah kalau kamu ingin mendalani kosepnya silahkan belajar di banyak sumber yang ada di internet ini, yang salah satunya ada di https://www.w3schools.com/python/default.asp

Ok gampang kan?

Posted in: Programing, Python Tagged: python

Python: Menyatukan Isi File Excel dengan Pola Nama Tertentu

09/08/2024

Saya mempunyai file excel dengan nama-nama yang mempunyai pola. Ya, sebenarnya itu adalah hasil generasi dari data yang ada dalam database.

batch_1_01_PELAYANAN_Perusahaan_A.xlsx
batch_1_01_PENYULUHAN_Perusahaan_A.xlsx
batch_1_01_PELAYANAN_Perusahaan_B.xlsx
batch_1_01_PENYULUHAN_Perusahaan_B.xlsx
batch_1_01_PELAYANAN_Perusahaan_C.xlsx
dst.

Saya ingin menyatukan isi file-file dalam PELAYANAN batch 1 ke dalam satu file Excel. Tentu syaratnya susunan kolom harus sama.

Karena saya ingin menyatukan file Excel, maka saya membutuhkan library openpyxl pada Python:
pip install openpyxl

Selanjutnya buat skrip seperti ini:

import os
import re
import pandas as pd

# Folder tempat file disimpan
folder_path = 'kelompok_data4'  # Ganti dengan path ke folder Anda

# Regex untuk mencocokkan nama file
pattern = r'batch_1.*PENYULUHAN.*\.xlsx$'

# List untuk menyimpan DataFrame dari setiap file yang cocok
dataframes = []

# Loop melalui file dalam folder
for file_name in os.listdir(folder_path):
    if re.match(pattern, file_name):
        file_path = os.path.join(folder_path, file_name)
        df = pd.read_excel(file_path, engine='openpyxl')
        dataframes.append(df)

# Menggabungkan semua DataFrame menjadi satu
if dataframes:
    combined_df = pd.concat(dataframes, ignore_index=True)
    
    # Menyimpan hasil gabungan ke file baru
    output_file = os.path.join(folder_path, 'combined_penyuluhan_batch_1.xlsx')
    combined_df.to_excel(output_file, index=False, engine='openpyxl')
    print(f"File gabungan telah disimpan sebagai {output_file}")
else:
    print("Tidak ada file yang cocok ditemukan.")

Penjelasan:

  • folder_path: Ganti dengan path ke folder tempat file Anda berada.
  • pattern: Regex r'batch_1.*PELAYANAN.*\.xlsx$' mencocokkan file yang mengandung “batch_1”, “PELAYANAN”, dan berakhir dengan .xlsx.
  • os.listdir(folder_path): Mengambil daftar file dalam folder.
  • re.match(pattern, file_name): Mencocokkan setiap nama file dengan pola regex.
  • matched_files: Menyimpan file yang cocok dengan pola regex.
  • print(file): Menampilkan nama file yang cocok.
Posted in: Data Science, Programing, Python Tagged: excel, file, python

Mengambil Data Participants dengan python Citric

06/08/2024

Saya belum ada waktu menerangkan panjang lebar.
Saya menggunakan bantuan dokumentasi dan jsoneditoronline buat membantu ekstraksi json.
Sementara skrip ini dulu aja buat catatan:

from citric import Client
import pandas as pd

survey_id = 452848
client = Client(
    'http://limesurvey6.test/index.php/admin/remotecontrol',
    'admin',
    'password'
)

participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= False, conditions=None)

print(participants)

Hasilnya sbb:

Namun apabila kita ingin mengambil attributes lain, caranya sbb:

participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= ["completed", "usesleft", "attribute_1"], conditions=None)

Dan hasilnya sbb:

Sekarang tinggal ekstrak pilih attribute yang mana.

Berikut jika kita ingin memasukkannya ke DataFrame:

from citric import Client
import pandas as pd

# Connect to your LimeSurvey instance
survey_id = 452848
client = Client(
    "http://limesurvey6.test/admin/remotecontrol",
     'admin', 
     'password'
)
participants = client.list_participants(survey_id, start=0, limit=5, unused=True, attributes= ["completed", "usesleft", "attribute_1"], conditions=None)

# karena participant mengandung sub array, maka kita harus emmbuatnya ke dalam array 2 2 dimensi agar bisa dimasukkan ke DataFrame
res = []
for field in participants:
        res.append({'tid':field['tid'],
           'attribute_1':field['attribute_1'],
           'firstname':field['participant_info']['firstname']
           })

df = pd.DataFrame(res)

# setelah itu bisa di print di export ke excel maupun ke sqlite
print(df)

Menurut saya method ini kurang asik. Mestinya ada cara ambil all fields in participants. Atau apa saya yang kurang ngerti caranya?

Posted in: Programing, Python Tagged: citric, limesurvey

Konversi Excel ke SQLite

06/08/2024

Mengapa kita perlu melakukan konversi dari Excel ke SQLite, ya karena SQLite bisa diQuery. Untuk mengolah data kalau sy lebih enak menggunakan SQLite, terutama kalau data sudah besar atau diatas 100.000 record.

Untuk melakukan konversi yang paling penting adalah pemahaman tentang raw data (data sumber). Bagi pengguna excel yang tidak memahami database sama sekali, biasanya judul kolom ditulis dengan banyak keterangan. Kalau perlu ada kolom dan subkolom. Judul kolom pada data hanya perlu satu kolom dengan isi yang ringkas. Raw data hanya perlu baris kolom saja.

Semula saya akan menggunakan cara excel saya save as ke csv, lalu ke sqlite. Nyatanya ketika saya menyimpan dari excel ke csv ada banyak auto correct yang membuat data menjadi tidak seperti yang saya inginkan. Misalnya 088 secara otomatis dikonversi ke 88. Akhirnya ya mending dari excel langsung konversi ke sqlite.

Saya tahu, ini program yang sederhana, namun menurut saya ini akan sangat penting. karena progarm sederhana saya minta bantuan chatGPT aja.

Untuk mengonversi data dari file Excel (xlsx) ke SQLite dalam Python, Anda bisa menggunakan pustaka pandas untuk membaca file Excel dan kemudian menyimpan data ke database SQLite. Berikut adalah langkah-langkah yang dapat Anda ikuti:

  1. Mengimpor Pustaka yang Diperlukan
  2. Membaca File Excel dengan Pandas
  3. Membuat Koneksi ke Database SQLite
  4. Menyimpan Data ke Database SQLite

Berikut adalah contoh kode lengkap yang melakukan konversi dari file Excel ke SQLite:

import pandas as pd
import sqlite3

# Langkah 1: Membaca file Excel
file_path = 'path_to_your_file.xlsx'
df = pd.read_excel(file_path, sheet_name='Sheet1')  # Ganti 'Sheet1' dengan nama sheet yang ingin Anda baca

# Langkah 2: Membuat koneksi ke database SQLite
db_file = 'output_database.sqlite3'
conn = sqlite3.connect(db_file)

# Langkah 3: Menyimpan data ke tabel SQLite
table_name = 'your_table_name'  # Ganti dengan nama tabel yang Anda inginkan
df.to_sql(table_name, conn, if_exists='replace', index=False)

# Langkah 4: Menutup koneksi
conn.close()

print(f"Data dari {file_path} telah berhasil disimpan ke {db_file} di tabel {table_name}.")

Penjelasan:

  1. Mengimpor Pustaka yang Diperlukan:
    • pandas: Digunakan untuk membaca file Excel dan menangani data dalam bentuk DataFrame.
    • sqlite3: Digunakan untuk berinteraksi dengan database SQLite.
  2. Membaca File Excel:
    • pd.read_excel(file_path, sheet_name='Sheet1'): Membaca data dari file Excel dan menyimpannya dalam DataFrame df. Anda dapat mengganti 'Sheet1' dengan nama sheet yang ingin Anda baca.
  3. Membuat Koneksi ke Database SQLite:
    • sqlite3.connect(db_file): Membuat koneksi ke file database SQLite. Jika file tidak ada, maka file akan dibuat.
  4. Menyimpan Data ke Database SQLite:
    • df.to_sql(table_name, conn, if_exists='replace', index=False): Menyimpan DataFrame df ke tabel SQLite dengan nama table_name. Jika tabel sudah ada, maka akan diganti (replace).
  5. Menutup Koneksi:
    • conn.close(): Menutup koneksi ke database SQLite.

Dengan langkah-langkah ini, Anda dapat dengan mudah mengonversi data dari file Excel ke database SQLite menggunakan Python.

Posted in: Programing, Python Tagged: sqlite excel python

Data Preparation: Konversi Limesurvey Data dan Pertanyaan ke SQLite dengan Python Citric

04/08/2024

Ini adalah skrip untuk mengambil data hasil survey dan pertanyaan dan mengkonversinya ke dalam sqlite dengan harapan data akan lebih mudah diolah kembali. SQLite sengaja saya pilih agar data bisa diolah langsung dengan SQL dan apabila perlu, hasil olahan bisa disimpan dalam view. Atau, jika menginginkan diolah menggunakan dataframe maka data yang ada dalam sqlite bisa di load dengan mudah.

Hasil dari skrip Python ini adalah

  1. Data pertanyaan yang lengkap berupa kode pertanyaan, pertanyaan, dan kode field dalam database. Lengkap.
  2. Data hasil survey dengan long answer dengan nama field kode pertanyaan. Tapi kamu bisa mengubahnya sendiri jika menginginkan hal yang berbeda.

Saya mengunakan Library Citric pada python dengan dokumentasi disini dan Chat GPT untuk merapikan skripnya.

Ok silahkan …

"""
Script created by Edy Santoso ([email protected])
Created on: 2024-08-02
"""

from citric import Client
import io
import pandas as pd
import sqlite3
import datetime
import re

def remove_tags(raw_html):
    """Remove HTML tags from a string"""
    cleantext = re.sub(re.compile('<.*?>'), '', raw_html)
    return cleantext

# Get the current time for unique database file naming
current_time = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
db_file = f"{current_time}_survey.sqlite3"
conn = sqlite3.connect(db_file)

# Replace with your survey ID
survey_id = 868964

# Initialize the LimeSurvey client
client = Client(
    'http://limesurvey6.test/index.php/admin/remotecontrol',
    'admin',
    'adminpassword'
)

# Get field map for the survey
fieldsmap = client.get_fieldmap(survey_id)

qs = []
for key, field in fieldsmap.items():
    code = ""
    
    # Build the code from title, aid, and scale_id
    if field['title'] != '':
        code += field['title']
    if field['aid'] != '':
        code += f"[{field['aid']}]"
    
    scale_id = field.get('scale_id')
    if scale_id is not None:
        code += f"[{scale_id}]"
    
    # Get subquestion if it exists
    subquestion = field.get('subquestion')
    if subquestion is not None:
        subquestion = f"[{subquestion}]"
    else:
        subquestion = ""

    # Append the field data to the list
    qs.append([
        field['gid'],
        field['qid'],
        field['fieldname'],
        field['type'],
        code, 
        field['group_name'], 
        remove_tags(field['question']),
        subquestion
    ])

# Create DataFrame from the list of field data
df = pd.DataFrame(qs, columns=['gid', 'qid', 'field_name', 'type', 'code', 'group_name', 'question', 'subquestion'])

print('wait...')

# Insert DataFrame into SQLite database
questions_table = 'questions'
df.to_sql(questions_table, conn, if_exists='replace', index=False)
print(f"{questions_table} table created")

# Export responses from LimeSurvey and load into DataFrame
responses_table = 'responses'
with io.BytesIO() as file:
    # heading_type (str | citric.enums.HeadingType) – Use response codes, long or abbreviated titles.
    # response_type (str | citric.enums.ResponseType) – Export long or short text responses.
    # completion_status (str | citric.enums.SurveyCompletionStatus) – Incomplete, complete or all.
    file.write(client.export_responses(survey_id, file_format="csv", heading_type='code', response_type='long'))
    file.seek(0)
    responses_df = pd.read_csv(
        file,
        delimiter=";",
        parse_dates=["datestamp", "startdate", "submitdate"],
        index_col="id",
    )

# Insert responses DataFrame into SQLite database
responses_df.to_sql(responses_table, conn, if_exists='replace', index=False)
print(f"{responses_table} table created")

print('Done!')

Berikut penjelasan dari data diatas:

  1. Import Libraries: Mengimpor pustaka yang diperlukan.
  2. Define remove_tags Function: Mendefinisikan fungsi untuk menghapus tag HTML dari string.
  3. Current Time for Unique DB File Name: Mendapatkan waktu saat ini untuk membuat nama file database yang unik. Ini dilakukan agar nama database yang terbentuk berawalan waktu, dan tidak menimpa hasil generasi sebelumnya.
  4. Database Connection: Membuat koneksi ke file SQLite baru.
  5. Survey ID: Menetapkan ID survei (dapat diganti dengan ID yang diperlukan).
  6. Initialize LimeSurvey Client: Menginisialisasi klien LimeSurvey dengan URL dan kredensial yang diperlukan. Atau dengan kata mudahnya, koneksi ke LimeSurvey API.
  7. Get Field Map: Mengambil “fields map”
  8. Build Question Data: Mengiterasi melalui “field map” untuk membangun data pertanyaan dan menambahkannya ke dalam daftar.
  9. Create DataFrame: Membuat DataFrame dari daftar data pertanyaan.
  10. Insert Questions DataFrame into SQLite: Memasukkan DataFrame pertanyaan ke dalam tabel SQLite.
  11. Export Responses and Load into DataFrame: Mengekspor respons dari LimeSurvey dan memuatnya ke dalam DataFrame.
  12. Insert Responses DataFrame into SQLite: Memasukkan DataFrame respons ke dalam tabel SQLite.
  13. Done: Mencetak pesan selesai.

Dengan format data seperti ini analisa data akan lebih mudah dilakukan,

Posted in: Data Science, Database, Programing, Python Tagged: lymesurvey, python, sqlite
« Previous 1 2 3 Next »

Donasi. Jika kamu terbantu dengan blog ini dan ingin berdonasi, silahkan berdonasi melalui link ini: Donasi

Kategori

  • Aplikasi (14)
  • Aplikasi Server (11)
  • Catatan (22)
  • Cerita Inspiratif (4)
  • Data Science (26)
  • Database (5)
  • Hardware (2)
  • Internet of Thing (6)
  • JavaScript (2)
  • Management (5)
  • Media (4)
  • Pendidikan (8)
  • PHP (13)
  • Programing (22)
  • Python (14)
  • Scientech (1)
  • Server (11)
  • Teknologi (50)
  • Uncategorized (60)
  • Utility (1)

Tulisan terbaru

  • Membuat TailScale Sendiri26/05/2025
  • Laravel vs CodeIgniter26/05/2025
  • NextCloud vs OwnCloud22/05/2025
  • Blockchain20/05/2025
  • OpenResty Suck!18/05/2025

cakedy.penamedia.com

  • Ketika Uang di Rekeningmu Setipis Tisu
  • Etos Kerja
  • Fokus ke Diri Sendiri
  • Blogging Tiap Hari?
  • Hasil

Copyright © 2025 Catatan Cak Edy.

Me WordPress Theme by themehall.com