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

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

Mengakses LimeSurvey API dengan Python Citric

30/07/2024

Kemarin kita telah mencoba menggunakan library limepy untuk mendapatkan data response survey. Sepengetahuan saya setelah mencobanya, limepy mempunyai method-method terbatas. Tidak ada cara bagaimana mengakses LimeSurvey API menggunakan library ini. Kelihatannya memang tidak ada. Dia hanya memanfaatkan sedikit LimeSurveyAPI untuk medukung fungsi-fungsi dia sendiri.

Tapi bukan Python namanya kalau berhenti disitu. Python itu surganya library. Kita mendapatkan library untuk memaksimalkan penggunaan LimeSurvey API: citric. Library ini bisa mengakses seluruh fungsi dalam Limesurvey. Nampaknya, ini mirip library limer  pada R.

Ok langsung saja …

Install Library Citric

Okey, cukup dengan pip install citric

Contoh menampilkan semua List Survey

from citric import Client

client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol",
    "myusername",
    "mypassword"
)

for survey in client.list_surveys():
    print(survey["surveyls_title"])

Contoh mengambil struktur pertanyaan menggunakan list_question

from citric import Client

# Connect to your LimeSurvey instance
client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol", 
    "myusername", 
    "mypassword"
)

# Choose a survey ID 
survey_id = 452848 

# List questions from the chosen survey
questions = client.list_questions(survey_id)

# Print the questions
for question in questions:
    print(f"Question ID: {question['qid']}, Question Text: {question['question']}")

Contoh mengambil data dalam format CSV

from citric import Client

client = Client(
    "https://mylimesite.limequery.com/admin/remotecontrol", 
    "myusername", 
    "mypassword"
)

survey_id = 452848  # Replace with your survey ID

export_response = client.save_responses(
    filename="responses.csv",
    survey_id=survey_id,
    file_format="csv",
    language=None,  # None will use the default language
    completion_status="all",  # all, incomplete, complete
    heading_type="code",  # code, abbreviated, full
    response_type="long",  # short, long
    from_response_id=None,  # None will export all responses
    to_response_id=None  # None will export all responses
)

print("Responses have been exported and saved to responses.csv")

Untuk dokumentasi citric, silahkan akses dimari …

Oke sedemikian dulu, nanti kita lanjutkan dengan kasus-kasus yang lebih implementatif. Enjoy …

Posted in: Python Tagged: limesurvey, python

Merge Beberapa File Markdown ke Satu File

22/12/2023 / Leave a Comment

Saya mempunyai beberapa file markdown yang ingin saya satukan ke dalam satu file. Berikut skripnya:

1
2
3
4
5
6
import glob
read_files = glob.glob("*.md")
with open("result.md", "wb") as outfile:
    for f in read_files:
        with open(f, "rb") as infile:
            outfile.write(infile.read())

import glob read_files = glob.glob("*.md") with open("result.md", "wb") as outfile: for f in read_files: with open(f, "rb") as infile: outfile.write(infile.read())

Skrip Python ini menggunakan modul glob untuk mencari file-file dengan ekstensi .md dalam direktori kerja saat ini. Setelah itu, skrip membuka file dengan nama “result.txt” untuk menulis (mode “wb” atau write binary).

Selanjutnya, skrip menggunakan loop for untuk membaca setiap file yang telah ditemukan oleh glob dan menggabungkannya ke dalam file “result.md”. Ini dilakukan dengan membuka setiap file yang ditemukan dalam mode baca binary (“rb”) dan menuliskan isinya ke dalam file “result.md” menggunakan metode write() pada objek file keluaran.

Mari kita bahas baris per baris:

  1. import glob: Mengimpor modul glob yang menyediakan fungsi untuk mencocokkan pola dan mencari file dalam direktori.
  2. read_files = glob.glob("*.md"): Menggunakan fungsi glob.glob() untuk mencocokkan semua file dengan ekstensi .md dalam direktori kerja saat ini. Hasilnya disimpan dalam variabel read_files, yang berisi daftar nama file yang sesuai.
  3. with open("result.md", "wb") as outfile:: Membuka file dengan nama “result.md” dalam mode write binary (“wb”). Ini digunakan untuk menulis data dalam mode biner.
  4. for f in read_files:: Memulai loop for untuk setiap file yang ditemukan.
  5. with open(f, "rb") as infile:: Membuka setiap file dalam mode read binary (“rb”). File ini akan dibaca.
  6. outfile.write(infile.read()): Membaca seluruh konten dari file yang dibuka (infile.read()) dan menulisnya ke dalam file “result.md” yang juga telah dibuka sebelumnya (outfile.write()).
  7. Karena digunakan mode binary (“wb” dan “rb”), ini cocok untuk menangani file teks atau file biner.

Dengan demikian, skrip ini menggabungkan isi semua file Markdown dengan ekstensi “.md” dalam direktori kerja ke dalam satu file yang disebut “result.md”.

Posted in: Data Science Tagged: python
1 2 Next »

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

Kategori

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

Tulisan terbaru

  • Tailscale, VPN Modern09/05/2025
  • Tailscale08/05/2025
  • Scrapping Text menggunakan DiDOM di PHP05/05/2025
  • Hardisk Penuh :(26/04/2025
  • Memperbaiki Mouse Bejat 226/04/2025

cakedy.penamedia.com

  • Stuck
  • Masalah Masing-Masing
  • Kenaikan Emas yang Gila-gilaan
  • Bos Kecil
  • Sekolah vs Realitas

Copyright © 2025 Catatan Cak Edy.

Me WordPress Theme by themehall.com