Pengenalan library Panda pada python

Panda adalah kumpulan program (Library) yang digunakan untuk menganalisa data yang umumnya dalam jumlah besar(big data). Jumlah besar ini artinya jumlah data itu bisa berkisar ratusan ribu bahkan jutaan baris. Tujuan menganalisa untuk mengetahui arah tren dan perubahan dalam bisnis (forecasting). Hal ini tidak bisa dilakukan dengan program spreadsheet misalnya excel atau google sheet.
Daftar Topik Utama

pengertian library panda pada python

  • Pandas adalah library yang berjalan di atas numpy
  • jadi urutan layernya python , numpy, pandas
  • Panda menyediakan 2 data struktur yaitu
    • Series
      • satu dimensi data
    • DataFrame
      • Dua Dimensi Data
  • Mengapa saat ini belajar Panda

    • dengan program-program yang ada bisa digunakan
      • menganalisa data dengan cepat (fast analysis)
    • memiliki fungsi menampilkan data dalam format
      • yang mudah dibaca (visualize features)
    • bisa mengambil data dari berbagai macam sources
      • (penting khususnya membaca database / excel)
  • library untuk membaca data excel openpyxl dan bottleneck

  • beberapa bagian yang akan dibahas:

    • Series
    • DataFrames
    • Missing Data
    • GroupBy
    • Merging
    • Joining
    • Concatenating
    • Operations
    • Data Input dan Output

cara instlasi library panda library pada python

  !pip install panda # install panda
  !pip install openpyxl # program untuk baca xlsx
  !pip install bottleneck

1. Import Library panda

import numpy as np
import pandas as pd

2. membaca file excel dengan nama daftar-uang-saku.xlsx

  • sheet yang dibaca adalah Sheet1
df = pd.read_excel('daftar-uang-saku.xlsx',sheet_name='Sheet1')
df

3. Memahami dataframe panda yang akan kita gunakan

3.1 df.info()

  • menampilkan secara detail kolom dan dimensi data
  • ini lebih recommended dibandingkan dtypes dan shape
df.info()

3.2 df.dtypes

  • menampilkan nama kolom dan tipe datanya
df.dtypes

3.3 df.shape

  • menampilkan dimensi data
df.shape

3.4 df.head()

  • menampilkan 5 baris paling atas
df.head()

3.5 df.tail()

  • menampilkan 5 baris paling bawah
df.tail()

3.6 df.describe()

  • describe adalah perintah summary
  • kesimpulan gunakan
  • df.info(), df.head() dan df.describe()
# untuk menampilkan rata-rata, tertinggi dari semua kolom
# yang bertipe angka
df.describe()

4. select

  • mengambil sebagian data
df['Nama'] # mengambil Nama
df[['Nama','Kota']] # menampilkan kolom Nama dan Kota

4.1 df['nama kolom']

  • mengambil kolom tertentu
  • yang penting perhatikan huruf besar dan kecilnya
  • termasuk juga bila ada spasi
  • karena harus persis
df['Nama'] # mengambil Nama

df[['Nama','Kota']] # mengambil kolom nama dan kota

4.2 loc

  • menampilkan record dengan berdasarkan label
  • tetapi karena pada dataframe yang kita gunakan ini tidak
  • ada label maka nomor index yang secara otomatis
  • bisa digunakan
  • jadi misalnya data ada label misalnya nama orang ani, budi, charlie
  • maka bisa menggunakan df.loc['ani']
df.loc[0] # ingat di python urutan data dimulai dari lokasi 0

4.3 memilih mulai dari label 0 sampai dengan 2

df.loc[0:2]

4.4 menampilkan record 0 sampai dengan 5

# dengan kolom Nama dan Uang Saku
df.loc[0:5, ['Nama','Uang Saku']]

4.5 iloc (integer location)

  • saran sebaiknya gunakan loc
  • karena lebih mudah dipahami
  • menampilkan data berdasarkan urutan integer
  • bukan berdasarkan label dan nama kolom
  • : semua baris
  • 1:3 kolom 1 sampai 3
df.iloc[:, 1:3]

5. Sorting

  • mengurutkan data berdasarkan kolom tertentu
df.sort_values('Jenis Kelamin')

5.1 descending

df.sort_values('Jenis Kelamin', ascending=False)

5.2 mengurutkan dengan 2 kolom

  • berikut adalah contoh untuk sort dengan 2 kolom
  • jadi primary key = Jenis Kelamin, Secondary Key = Uang Saku
  • artinya bila nilai jenis kelami sama baru uang saku yang diurutkan
  • karena inputnya 2, maka untuk ascending inputnya juga 2
df.sort_values(by=['Jenis Kelamin', 'Uang Saku'], ascending=[True, False])

5.3 sort dengan inplace

  • perintah sort_values bila tanpa perintah inplace adalah
  • data ditampilkan di layar 1x dalam posisi urut
  • arti dari perintah inplace=True
  • isi dari variabel df akan benar-benar diubah urutannya
df.sort_values('Jenis Kelamin', inplace=True)
df

5.4 sort - reset_index

  • bila sebelumnya data diurutkan dengan perintah inplace=True
  • maka untuk mengembalikan kembali dapat menggunakan
  • perintah reset_index()
df.reset_index()
df

6. Filter Data

6.1 melakukan filter data dan

  • kondisi dimasukkan ke dalam suatu variabel
  • step 1: membuat kondisi dimana uang saku harus >= 5000
  • kondisi dimasukkan ke dalam variabel b5000
b5000 = df['Uang Saku'] >= 5000
b5000
  • step 2 memasukkan variabel kondisi ke dataframe
  • perhatikan hasilnya data yang ditampilkan
  • uang sakunya lebih dari 5000
  • pada bagian ini kita tidak perlu menulis lagi kondisinya
  • cukup masukkan nama variabelnya
df[b5000]
  • step 3 penulisan step 1 dan 2 dapat digabung
df[df['Uang Saku']>= 5000] 

6.2 Filter data dengan 2 kondisi

  • digabung dengan perintah & (and) atau | (or)
  • menampilkan data orang yang uang saku diatas 5000
  • dan Kota nya Jakarta
  • kedua syarat harus memenuhi (menggunakan operator & And)
syarat1 = df['Uang Saku'] > 5000
syarat2 = df['Kota'] == 'Jakarta'
df[syarat1 & syarat2]

6.3 Filter data dengan kondisi or

  • menampilkan data orang yang uang saku diatas 5000
  • atau Kota nya Jakarta
  • kedua syarat salah satu memenuhi (menggunakan operator | or)
  • hasil pasti sama atau lebih banyak karena boleh salah satu syarat
  • memenuhi
syarat1 = df['Uang Saku'] > 5000
syarat2 = df['Kota'] == 'Jakarta'
df[syarat1 | syarat2]

6.4 Filter kolom bertipe tanggal

  • untuk data tanggal filter data menggunakan format sbb:
df[df['Tanggal Lahir'] > '2002-12-31'] 

6.5 filter dengan bulan tertentu

  • difilter yang bulannya adalah 3
df[df['Tanggal Lahir'].dt.month == 3]

6.6 menggunakan is in ?

  • Filter kolom berdasarkan set data
  • penggunaan fungsi isin agar filter
  • tidak terlalu panjang dalam menulis data
df[df['Kota'].isin(['Jakarta', 'Bandung'])]

6.7 Filter dengan regex

df[df['Nama'].str.contains('Bud*',regex=True)]

7. groupby dan sum

  • mengelompokkan data berdasarkan kolom tertentu
  • banyak digunakan dalam bisnis
group_jk = df.groupby('Jenis Kelamin')
group_jk['Uang Saku'].mean()

8. pivot table

  • adalah melakukan pengelompokan data dan menjumlah
  • pada contoh dibawah ini
  • columns = kolom yang dikelompokkan (Jenis Kelamin)
  • values = kolom yang berisi data angka (Uang saku)
  • aggfunc = sum (bila data sama-sama laki-laki / perempuan total uang sakunya)
table = pd.pivot_table(df, columns='Jenis Kelamin', values='Uang Saku', aggfunc='sum')
table

pivot = pd.pivot_table(df, values='Uang Saku', 
                           index=['Kota'], 
                           columns=['Jenis Kelamin'], 
                           aggfunc='sum')
pivot

8.1 untuk memformat angka ribuan tipe data integer

pivot.style.format('{:,}')

pd.options.display.float_format = '{:,}'.format

8.2 perintah plot untuk membuat grafik

  • bar = grafik batang vertikal
  • barh = grafik batang horisontal
  • figsize = dimensi besar (horizontal, vertikal)
  • title = judul
  • bila ingin disimpan arahkan mouse ke atas grafik
  • tekan tombol icon disk
pivot = pd.pivot_table(df, values='Uang Saku', 
                                index=['Kota'], 
                                columns=['Jenis Kelamin'], 
                                aggfunc='sum').plot.bar(figsize=(9,6),
                                                          title='Jumlah Uang Saku')

8.3 menambahkan total dengan perintah margins

  • margins=True artinya diberi tambahan total
  • margins_name='Total' artinya judul yang diberikan
  • akan ditambahkan total baris dan total kolom
pivot = pd.pivot_table(df, values='Uang Saku', 
                           index=['Kota'], 
                           columns=['Jenis Kelamin'], 
                           aggfunc='sum',
                           margins=True, 
                           margins_name='Total')
pivot

9. menambah kolom baru

  • membuat kolom baru
  • dimana kolom baru hasil perhitungan
  • dari kolom yang ada
df['Total'] = df['Uang Saku'] + df['Bonus'] 
df

10. Menghapus kolom

df.drop('Total', axis=1, inplace=True)
df
  • menghapus series 'NEW' tapi harus disertai param axis=1
  • axis=1 menunjuk yang dihapus adalah kolom
  • inplace=True untuk memastikan benar-benar dihapus
  • jadi bila kita mengetik df di cell lain
  • kolom Total sudah tidak ada lagi *
  • menghapus baris sesuai dengan nomor indexnya
  • contoh dibawah ini yang dihapus baris 10
  • karena itu axis=0
  • perhatikan hasilnya data baris ke 10 (kimi) tidak ada
df.drop(10, axis=0) # dihapus hanya di cell ini 

11 menyimpan hasil ke excel

  • df.to_excel(nama file lengkap dengan xlsx nya)
df.to_excel('data_hasil.xlsx')

12 menyimpan hasil ke csv

  • df.to_csv('data_hasil.csv')
df.to_csv('data_hasil.csv')