You are currently viewing Pandas Library

Pandas Library

Artikel ini membahas standar penggunaan library pandas pada python yang sering saya gunakan dalam melakukan pembersihan maupun penyortiran data, isi artikel akan ditambah sesuai kebutuhan.

Pandas merupakan salah satu library wajib yang harus dikuasai oleh pengguna python. Library ini dapat membantu kita dalam membaca dan memproses data dari berbagai file tabel seperti xls, csv, xlsx, dataframe, dll. Cara mengimport pandas sebagai berikut:

import pandas as pd

Berikut ini saya menggenerate dataframe sederhana sebagai ujicoba:

import pandas as pd

data = {
    "Name": ["Alice", "Bob", "Charlie", "David", "Eva"],
    "Age": [25, 30, 35, 40, 28],
    "City": ["New York", "London", "Paris", "Berlin", "Tokyo"],
    "Salary": [50000, 60000, 75000, 80000, 62000]
}

df = pd.DataFrame(data)
print(df)

# hasil yang didapatkan :
      Name  Age      City  Salary
0    Alice   25  New York   50000
1      Bob   30    London   60000
2  Charlie   35     Paris   75000
3    David   40    Berlin   80000
4      Eva   28     Tokyo   62000
df.info() : membaca info dataframe yang meliputi nama kolom, banyaknya data non-null, tipe data, dan info-info lainnya dari kolom tersebut. Saya menggunakan ini untuk mengecek tipe data (Dtype) dari tiap-tiap kolom, jika misalnya: Age dtype-nya object, maka ada salah satu record yang bukan angka, maka kita harus proses dulu misalnya dihapus agar tidak mengganggu proses lain.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   Name    5 non-null      object
 1   Age     5 non-null      int64 
 2   City    5 non-null      object
 3   Salary  5 non-null      int64 
dtypes: int64(2), object(2)
memory usage: 292.0+ bytes
df.describe() : untuk menampilkan nilai count, mean, std, min, percentile dari kolom yang bertipe numerik (pastikan tidak ada record yang NaN (not a number) pada kolom)
	Age	Salary
count	5.00000	        5.000000
mean	31.60000	65400.000000
std	5.94138	        12074.767078
min	25.00000	50000.000000
25%	28.00000	60000.000000
50%	30.00000	62000.000000
75%	35.00000	75000.000000
max	40.00000	80000.000000
df.columns : untuk menampilkan seluruh kolom pada dataframe
Index(['Name', 'Age', 'City', 'Salary'], dtype='object')

Jika ingin mendapatkan salah satu kolom dapat menggunakan bracket [<index_column>] atau jika semuanya dapat di loop, contoh:

df.columns[0]
#hasilnya 'Name'

df.columns[1]
#hasilnya 'Age'

for col in columns:
   print(col)
#hasilnya
Name
Age
City
Salary
df[[col_names]] : submatriks dengan menggunakan nama kolom.

df[['Name', 'Age']]

#hasilnya:
	Name	Age
0	Alice	25
1	Bob	30
2	Charlie	35
3	David	40
4	Eva	28
df[<col_name>] : mengambil data series (kolom), kita dapat melakukan filter sekaligus dengan menggunakan operasi logika (==, >, >=, <, <=, !=).
df['Name']

#hasilnya:
0      Alice
1        Bob
2    Charlie
3      David
4        Eva
Name: Name, dtype: object

df['Age']>34

#hasilnya
0    False
1    False
2     True
3     True
4    False
Name: Age, dtype: bool

#hasil akan menampilkan nilai boolean, dimana True artinya seluruh baris yang sesuai dengan kategori 'Age' lebih besar dari 34, sedangkan false sebaliknya.

Kita dapat menggabungkan beberapa data series yang akan difilter, dengan memasukan masing-masing kategori dengan tanda kurung.

(df['Age']>34) & (df['Name']=='David')

#hasilnya:
0    False
1    False
2    False
3     True
4    False
df.iloc[: , :] : slicing matriks, ini sangat sering saya gunakan untuk mengambil sub-matriks dengan memainkan nomor indeksnya.
df.iloc[:]
df.iloc[:,:]

# [<baris>,<kolom>] , tanda ':' (titik dua) artinya baca seluruh baris atau kolom
#hasilnya:
	Name	Age	City	 Salary
0	Alice	25	New York 50000
1	Bob	30	London	 60000
2	Charlie	35	Paris	 75000
3	David	40	Berlin	 80000
4	Eva	28	Tokyo	 62000

df.iloc[:3,:]

#baca baris dengan index 0 hingga 2 (nilai 3 tidak ikut ditampilkan), sedangkan kolom baca semua
#hasilnya:
	Name	Age	City	 Salary
0	Alice	25	New York 50000
1	Bob	30	London	 60000
2	Charlie	35	Paris	 75000

df.iloc[3]
df.iloc[3,:]

#baca hanya baris dengan indeks 3
#hasilnya:
Name       David
Age           40
City      Berlin
Salary     80000
Name: 3, dtype: object

df.iloc[3:,:]

#baca mulai baris dengan indeks 3 hingga selesai, sedangkan kolom baca semua
#hasilnya:
	Name	Age	City	Salary
3	David	40	Berlin	80000
4	Eva	28	Tokyo	62000

df.iloc[:,:2]

#baca semua baris, namun kolom hanya baca mulai dari 0 hingga 1
#hasilnya:
	Name	Age
0	Alice	25
1	Bob	30
2	Charlie	35
3	David	40
4	Eva	28
df.loc[] : fungsi seperti iloc, namun kita dapat menggunakan label (nama kolom atau baris) sebagai pengganti angkat indeks, menurut saya kelebihan dari loc, kita bisa sekalian memfilter baris berdasarkan kondisi.
df.loc[2,['Name', 'Age']]

#hasilnya:
Name    Charlie
Age          35
Name: 2, dtype: object

df.loc[2:,['Name', 'Age']]

#hasilnya:
	Name	Age
2	Charlie	35
3	David	40
4	Eva	28

df.loc[df['Age']>=35]

#memfilter seluruh baris dimana, kolom 'Age' >=35
#hasilnya:
	Name	Age	City	Salary
2	Charlie	35	Paris	75000
3	David	40	Berlin	80000
df.isna() : fungsi untuk mengecek setiap data apakah mengandung nilai NA (null, atau missing value) atau tidak.
import pandas as pd
tabel = pd.DataFrame({'No':[1,2,3,4,5],'Nama':['Andi', None, 'Citra', 'Dewi', 'Erni'], 'Umur':[25,None,15,17,28]}, )
tabel

#output pandas.core.frame.DataFrame
	No	Nama	Umur
0	1	Andi	25.0
1	2	None	NaN
2	3	Citra	15.0
3	4	Dewi	17.0
4	5	Erni	28.0

tabel.isna()
#output pandas.core.frame.DataFrame
	No	Nama	Umur
0	False	False	False
1	False	True	True
2	False	False	False
3	False	False	False
4	False	False	False

#catatan : terlihat bahwa nilai True artinya data kosong None, namun perlu diingat empty string '' tidak termasuk kedalam None 

tabel[tabel.isna().any(axis=1)]

#output pandas.core.frame.DataFrame
	No	Nama	Umur
1	2	None	NaN

#catatan: mencetak row yang memiliki setidaknya 1 data yang memiliki nilai True
df.notna() : fungsi ini kebalikan dari df.isna()

import pandas as pd
tabel = pd.DataFrame({'No':[1,2,3,4,5],'Nama':['Andi', None, 'Citra', 'Dewi', 'Erni'], 'Umur':[25,None,15,17,28]}, )
tabel.notna()

#output pandas.core.frame.DataFrame
	No	Nama	Umur
0	True	True	True
1	True	False	False
2	True	True	True
3	True	True	True
4	True	True	True

tabel[tabel.notna().all(axis=1)]

#output pandas.core.frame.DataFrame
	No	Nama	Umur
0	1	Andi	25.0
2	3	Citra	15.0
3	4	Dewi	17.0
4	5	Erni	28.0

#catatan: hanya mencetak row yang semua datanya bernilai True