Melanjutkan Pelajaran Python sebelumnya, kali ini akan focus dengan pengolahan data menggunakan library Pandas.
Apa itu Pandas ?
pandas adalah paket Python yang menyediakan struktur data cepat, fleksibel, dan ekspresif yang dirancang untuk membuat pekerjaan dengan data “relasional” atau “berlabel” menjadi mudah dan intuitif. Ini bertujuan untuk menjadi landasan dasar tingkat tinggi untuk melakukan analisis data dunia nyata dan praktis dengan Python.
jadi untuk memanipulasi dataset di Python bisa menggunakan Pandas.
di artikel kali ini saya mulai dengan prepare data dahulu, yaitu proses installasi pandas dan numpy, kemudian meng-import library tersebut ke python.
!pip install numpy
!pip install pandas
import numpy as np # useful for many scientific computing in Python
import pandas as pd # primary data structure library
dan dengan code dibawah ini saya meng-import data excel ke dalam dataframe.
URL = 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/Canada.xlsx'
#siapkan df_can
df_can = pd.read_excel(
URL,
sheet_name='Canada by Citizenship',
skiprows=range(20),
skipfooter=2)
print('Data downloaded and read into a dataframe!')
#simpan dlm df_clean
df_clean = df_can.drop(columns = ['AREA','Type','Coverage'])
df_clean = df_clean.rename(columns={'OdName':'Country', 'AreaName':'Continent', 'RegName':'Region'})
df_clean = df_clean.rename(columns={'REG':'Region Number', 'DEV':'Development Number'})
df_clean = df_clean.set_index('Country')
sampai disini dataframe df_can dan df_clean sudah terbentuk dan data sudah tersimpan disana.
Berikutnya kita masuk ke soal Minitask…lets do it. !
Mini Task:
We can easily add more countries to line plot to make meaningful comparisons immigration from different countries.
A. Question: Let’s compare the number of immigrants from India and China from 1980 to 2013.
Langkah 1: Dapatkan kumpulan data untuk China dan India, dan tampilkan kerangka data.
# useful for plotting later on
tahun = list(map(str, range(1980, 2014)))
tahun
df_CI = df_clean.loc[['India','China'],tahun]
df_CI
dengan code diatas akan menampilkan data :
Langkah 2: Plot grafik. Kami akan secara eksplisit menentukan plot garis dengan meneruskan parameter
kind
keplot()
Kelihatannya tidak benar…
Ingatlah bahwa pandas memplot indeks pada sumbu x dan kolom sebagai garis individual pada sumbu y. Karena df_CI
adalah kerangka data dengan Country
sebagai indeks dan tahun
sebagai kolom, pertama-tama kita harus mengubah kerangka data menggunakan metode transpose()
untuk menukar baris dan kolom.
pandas akan secara otomatis membuat grafik kedua negara pada grafik yang sama. Lanjutkan dan plot kerangka data baru yang dialihkan. Pastikan untuk menambahkan judul ke plot dan beri label kapak.
import matplotlib.pyplot as plt
df_CI.index = df_CI.index.map(int) # let's change the index values of df_CI to type integer for plotting
df_CI.plot(kind='line')
plt.title('Immigrants from China and India')
plt.ylabel('Number of Immigrants')
plt.xlabel('Years')
plt.show()
Dari plot diatas terlihat China dan India memiliki trend imigrasi yang serupa selama bertahun-tahun.
B. Question: Compare the trend of top 5 countries that contributed the most to immigration to Canada.
untuk jawaban kali ini kita menggunakan library dari matplotlib. bisa terlihat di code dibawah ini :
### type your answer here
#Step 1: Get the dataset. Recall that we created a Total column that calculates cumulative immigration by country.
#We will sort on this column to get our top 5 countries using pandas sort_values() method.
import matplotlib.pyplot as plt
#MyCode
df_can1 = df_can
df_can1.columns = list(map(str, df_can1.columns)) #convert dulu df_can1 colomnya jadi string.
year1 = list(map(str, range(1980, 2014))) # buat list tahun tipe string.
#Create new column 'Total'
df_can1['Total'] = df_can1[year1].sum(axis=1) #axis=1 jumlahkan horizontal, klo axis=0 jumlahkan vertikal.
##sort.
inplace = True # paramemter saves the changes to the original df_can dataframe
df_can1.sort_values(by='Total', ascending=False, axis=0, inplace=True)
# get the top 5 entries
df_top5 = df_can1.head(5)
df_top5 = df_top5.rename(columns={'OdName':'Country'}) #rename jadi country
df_top5 = df_top5.set_index('Country') #data country di set index.
#drop kolom tidak dipakai
df_top5 = df_top5.drop(columns = ['Type','Coverage','AREA', 'AreaName', 'REG', 'RegName', 'DEV', 'DevName'])
# transpose the dataframe
df_top5 = df_top5[years].transpose()
#Step 2: Plot the dataframe. To make the plot more readeable, we will change the size using the `figsize` parameter.
df_top5.index = df_top5.index.map(int) # let's change the index values of df_top5 to type integer for plotting
df_top5.plot(kind='line', figsize=(14, 8)) # pass a tuple (x, y) size
plt.title('Immigration Trend of Top 5 Countries')
plt.ylabel('Number of Immigrants')
plt.xlabel('Years')
plt.show()
hasil code tersebut menghasilkan chart seperti dibawah ini :
sekian untuk minitask kali ini….semoga bermanfaat.
Lanjut ke Python Aplication for Data Analysis
Kembali ke Introduction to Python