Cara menggunakan for loop csv python

Salah satu kasus yang sering dihadapi seorang Data Scientist adalah diberikan dataset yang stukturnya tidak cocok dengan kebutuhan untuk membuat Machine Learning Model. Sehingga perlu adanya penanganan manual yang termasuk dalam tahap pre-processing data.

Pada artikel ini kita akan membahas bagaimana mengenerate file CSV berdasarkan kategori dengan Python menggunakan library Pandas, OS, dan NumPy.

Untuk lebih memperjelas pembahasan akan diberikan sebuah studi kasus, yaitu sebuah dataset dengan struktur folder file sebagai berikut:

Cara menggunakan for loop csv python
Struktur Folder File Dataset

Dataset tersebut terdiri dari 3 folder program studi, yaitu Teknik Informatika, Teknik Kimia, dan Teknik Mesin.

Di dalam masing-masing folder, terdapat sebuah file dataset ‘DaftarNilaiSemuaMatakuliah.csv’ yang berisi nilai mahasiswa dengan berbagai feature (contoh: TahunMasuk, Semester, Nilai, StatusStudi dll.), seperti pada gambar di bawah ini.

Cara menggunakan for loop csv python
Isi Folder

Cara menggunakan for loop csv python
Struktur Dataset

Apabila Anda ingin mendapatkannya, file dataset tersebut bisa diunduh di link berikut:

Download Dataset

Selanjutnya akan dibuat dataset baru per mata kuliah untuk setiap program studi dan di dalam dataset tersebut ditambahkan satu kolom baru yaitu skala nilai huruf dari A s/d E.

Untuk melakukan hal tersebut, paling tidak ada 3 langkah utama yang perlu direncanakan, yaitu:

  • Pertama, bagaimana menangani dataset menjadi dataset per “MataKuliah”,
  • Kedua, bagaimana membuat kolom “SkalaNilai” huruf berdasarkan data dari kolom “Nilai”,
  • Ketiga, bagaimana membuat code untuk melakukan loop dari langkah 1 dan 2 yang nantinya secara otomatis akan memproses file dataset untuk setiap program studi

Daftar Isi

Import file CSV ke Dataset

Dalam rangka membuat dataset per mata kuliah. Langkah pertama adalah mengambil dataset awal dengan code sebagai berikut:

import pandas as pd
df = pd.read_csv('D:/Latihan/ProgramStudi/Teknik Mesin/DaftarNilaiSemuaMataKuliah.csv')

Path file csv diasumsikan diletakkan dalam direktori D:/Latihan

Dalam code di atas digunakan Pandas library untuk membaca data file CSV . Untuk percobaan pertama digunakan dataset program studi Teknik Mesin.

Generate Kolom Baru dan Input Data ke CSV Dataset

Selanjutnya adalah membuat kolom “SkalaNilai” yang berisi (‘A’,’B’,’C’,’D’,’E’) dari kolom nilai yang isinya (0,…,100). Caranya adalah seperti dibawah ini:

import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)

Perhatikan kode di atas! Pada kode tersebut dibuat conditional statement yang berisi batasan-batasan tiap kategori nilai dalam variabel conditions. Misalkan dalam hal ini ketentuan skala nilai hurufnya adalah sbb:

  • Jika 0 < NIlai < 20, maka SkalaNilai = ‘E’
  • Jika 20 <= Nilai < 40, maka SkalaNilai = ‘D’
  • Jika 40 <= Nilai < 60, maka SkalaNilai = ‘C’
  • Jika 60 <= Nilai < 80, maka SkalaNilai = ‘B’
  • Jika 80 <= Nilai, maka SkalaNilai = ‘A’

Kemudian dibuat list yang berisi skala nilai dalam variabel

import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)
0. Lalu dibuat kolom baru yang isinya menggunakan NumPy library untuk input datadi tiap baris berdasarkan kolom “Nilai” di baris tersebut.

Looping Generate Dataset Baru

Selanjutnya adalah bagaimana membuat loop untuk melakukan 2 langkah di atas di semua folder program studi. Yang perlu diketahui sebelum itu adalah apa saja yang perlu dilakukan dalam looping. Pertama adalah membuat folder baru di dalam folder program studi yaitu folder “PerMataKuliah”. Caranya adalah sebagai berikut:

import os
newpath = 'D:/Latihan/ProgramStudi/Teknik Mesin/PerMataKuliah'
os.makedirs(newpath)

Kemudian untuk membuat dataset baru yang isinya hanya satu kategori mata kuliah, misalnya ‘Termodinamika’. Caranya adalah sebagai berikut:

df_course = df.loc[(df['MataKuliah']=='Termodinamika')]
df_course.to_csv('D:/Latihan/ProgramStudi/Teknik Mesin/PerMataKuliah/Termodinamika.csv')

Dengan code ini, akan tercipta dataset mata kuliah “Termodinamika” dalam folder “PerMataKuliah” yang sudah dibuat sebelumnya di dalam folder “Teknik Mesin”.

Setelah terbentuk code untuk melakukan tugas, selanjutnya adalah membuat looping. Ide di atas digeneralisir untuk setiap mata kuliah. Sehubungan dengan akan dibuatnya loop di tiap kategori di kolom “ProgramStudi” dan “MataKuliah”, maka perlu dibuat variabel yang berisi list kategori dari kolom “ProgramStudi” dan “MataKuliah” .

Pertama, folder “Program Studi” perlu dikonversi menjadi list daftar nama program studi. Itu bisa dilakukan dengan OS library sebagai berikut:

import os
folder_list = os.listdir('D:/Latihan/ProgramStudi/')

Code tersebut akan menghasilkan list folder program studi sebagai berikut:

['Teknik Informatika','Teknik Kimia','Teknik Mesin']

Selanjutnya dibuat list mata kuliah dari dataset. Caranya adalah sebagai berikut:

index_list = df['MataKuliah'].value_counts().index.tolist()

Jika code tersebut di-run di dataset “Teknik Mesin”, maka akan menghasilkan list folder program studi sebagai berikut:

['Termodinamika','MekanikaFluida','GetaranMekanis']

Kemudian susunan utuh code untuk membuat dataset per mata kuliah di setiap program studi dan membuat kolom “SkalaNilai” adalah sebagai berikut:

import pandas as pd
import os
import numpy as np

folder_list = os.listdir('D:/Latihan/ProgramStudi/')

for i in folder_list:
    df = pd.read_csv('D:/Latihan/ProgramStudi/'+i+'/DaftarNilaiSemuaMataKuliah.csv')
    
    conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    choices = ['E','D','C','B','A']
    df['SkalaNilai'] = np.select(conditions, choices)
    
    index_list = df['MataKuliah'].value_counts().index.tolist()
    
    newpath = 'D:/Latihan/ProgramStudi/'+i+'/PerMataKuliah'
    os.makedirs(newpath)
    
    for j in index_list:
        df_course = df.loc[(df['MataKuliah']==j)]
        df_course.to_csv('D:/Latihan/ProgramStudi/'+i+'/PerMataKuliah/'+j+'.csv')

Tambahan yang diberikan di code akhir ini hanyalah memasukkan looping. Dari code diatas, looping yang pertama di line ke-7 dengan menggunakan variabel

import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)
1 yang telah dibuat sebelumnya. Looping melakukan tugas di tiap nama program studi yang dilambangkan dalam variabel
import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)
2.

Looping yang kedua adalah di line ke-24. Di line ke-24 dilakukan looping per mata kuliah dengan code yang sama seperti yang sudah dibuat sebelumnya. Ini dilakukan dengan list yang sudah di buat di variabel

import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)
3. Nama mata kuliah dilambangkan dengan variabel
import numpy as np
conditions = [
    (df['Nilai']<20),
    (df['Nilai']>=20) & (df['Nilai']<40),
    (df['Nilai']>=40) & (df['Nilai']<60),
    (df['Nilai']>=60) & (df['Nilai']<80),
    (df['Nilai']>=80)]
    
    # list skala nilai
    choices = ['E','D','C','B','A']

    # proses mapping kondisi dg skala nilai
    df['SkalaNilai'] = np.select(conditions, choices)
4.

Dengan code diatas maka akan menghasilkan data seperti tampilan di bawah ini:

Cara menggunakan for loop csv python
File Dataset Per Matakuliah Per Prodi

Cara menggunakan for loop csv python
Struktur Dataset Output dengan Tambahan Kolom SkalaNilai

Secara lengkap, file hasil pengolahan di atas dapat diunduh di bawah ini.

Download Hasil

Demikian tutorial generate CSV berdasarkan kategori dengan Python menggunakan Pandas, OS, dan NumPy library. Semoga bermanfaat.

Apa itu CSV dalam python?

Format CSV (Comma Separated Values) adalah format impor dan ekspor data yang paling umum digunakan untuk data spreadsheet dan database.

Bagaimana cara membuka file CSV?

Jika file adalah file . csv, Excel secara otomatis membuka file teks dan menampilkan data di buku kerja baru. Catatan: Saat Excel membuka file . csv, file tersebut menggunakan pengaturan format data default saat ini untuk menginterpretasikan cara mengimpor setiap kolom data.

Bagaimana cara membuat file CSV?

Jika Anda menggunakan Google Spreadsheets, opsi yang perlu dipilih adalah “File > Download as”. Pilih “CSV” dari menu drop-down “Save as type”. Tikkan nama berkas CSV, kemudian pilih “Save”. Sekarang Anda sudah membuat berkas CSV, dan koma secara otomatis akan ditambahkan ke berkas untuk memisahkan setiap kolom.

Apa itu delimiter pada python?

delimiter adalah simbol delimiter yang digunakan pada CSV; quotechar adalah tanda kutip yang akan digunakan untuk data yang mengandung koma; pada contoh di atas, kita menggunakan petik ganda; quoting adalah metode tanda petik yang digunakan.