Nama : Atsilah Mumtazah Nainggolan NIM : J0303202167 Kelas : TPL A2 Quiz: Python for Data Analysts Selamat Anda sudah menyelesaikan materi Python for Data Analysts! Kami akan melakukan penilaian berupa kuis untuk menguji materi yang sudah dipelajari. Silakan jawab pertanyaan berikut dan kumpulkan jawaban Anda sesuai dengan ketentuan. In [3]: import pandas as pd Data Pre-Processing Pada kuis ini kita akan menggunakan Companies dataset. Anda dapat menggunakan data dalam ekstensi csv file yang tersimpan dalam companies.csv file. Companies dataset merupakan sebagian contoh dari data CRM (customer relationship management) yang mengandung beberapa variable sebagai berikut : ID : identifier unique dari nama cutomer Customer Name : nama customer (nama company) Consulting Sales : harga untuk service konsultasi Software Sales : harga untuk service software Forecasted Growth : presentase pertumbuhan company dalam kurun waktu tertentu Returns : dana yang kembali (Returns) dalam kurun waktu tertentu Month : bulan berdirinya company Day : tanggal berdirinya company Year : tahun berdirinya company Location : lokasi company Account : jenis customer company In [4]: clients = pd.read_csv("data/companies.csv", index_col=0) clients.head() Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group IDR7125000 IDR5500000 30.00% IDR1,500,000 1 10 2017 Jakarta Enterprise 82391 Li and Partners IDR420000 IDR820000 10.00% IDR400,000 6 15 2016 Jakarta Startup 18374 PT. Kreasi Metrik Solusi 0 IDR550403 25.00% 0 3 29 2012 Surabaya Enterprise IDR850000 IDR395500 4.00% 0 7 17 2017 Jakarta Startup Out[4]: ID 57531 PT. Algoritma Data Indonesia 19002 Palembang Konsultansi IDR2115000 0 -15.00% 0 2 24 2018 Bandung Startup Apabila Anda perhatikan, dataset clients memiliki format yang sedikit berbeda dengan dataset yang sudah kita gunakan pada materi. Kolom Returns memiliki karakter koma ( , ) sebagai pemisah satuan ribuan dan simbol mata uang ( IDR ) pada valuenya. Mari kita tinjau lebih jauh tipe data pada variabel clients : In [5]: clients.dtypes Out[5]: Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account dtype: object object object object object object int64 int64 int64 object object Pada hasil tersebut di atas, dapat diketahui bahwa beberapa variable tidak tersimpan pada format tipe data yang tepat. Dapatkah Anda mengubah tipe data beberapa variable tersebut menjadi bentuk tipe data yang tepat? In [6]: clients = pd.DataFrame(clients) clients Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group IDR7125000 IDR5500000 30.00% IDR1,500,000 1 10 2017 Jakarta Enterprise 82391 Li and Partners IDR420000 IDR820000 10.00% IDR400,000 6 15 2016 Jakarta Startup 18374 PT. Kreasi Metrik Solusi 0 IDR550403 25.00% 0 3 29 2012 Surabaya Enterprise 57531 PT. Algoritma Data Indonesia IDR850000 IDR395500 4.00% 0 7 17 2017 Jakarta Startup 19002 Palembang Konsultansi IDR2115000 0 -15.00% 0 2 24 2018 Bandung Startup 31142 PT. Surya Citra Manajemen IDR960000 IDR503000 19.00% 0 1 19 2019 Jakarta Enterprise Out[6]: ID In [7]: clients.dtypes Out[7]: Customer Name object Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account dtype: object object object object object int64 int64 int64 object object In [8]: ## Your Code Below: clients['Account'] = clients['Account'].astype('category') In [9]: clients.dtypes Out[9]: Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account dtype: object object object object object object int64 int64 int64 object category Apabila Anda sudah mencoba mengubah tipe data menggunakan method .astype() , maka Anda akan mendapatkan pesan error ketika mengubah tipe data pada kolom Consulting Sales dan Software Sales . Hal ini dikarenakan komputasi dan pengubahan tipe data numerik pada python tidak dapat dilakukan ketika terdapat karakter tertentu dalam data. Oleh karena itu, perlu dilakukan penghapusan karakter IDR yang terdapat pada kedua kolom tersebut. Penghapusan karakter dapat menggunakan builtin method pada pandas yaitu str.replace() . Berikut adalah contoh penggunaannya: In [10]: clients['Consulting Sales'].str.replace('IDR','') Out[10]: ID 30940 7125000 82391 420000 18374 0 57531 850000 19002 2115000 31142 960000 Name: Consulting Sales, dtype: object Untuk mengaplikasikannya pada beberapa kolom dapat menggunakan method apply dengan lambda sebagai berikut : In [11]: clients[['Consulting Sales','Software Sales','Returns']] =\ clients[['Consulting Sales','Software Sales','Returns']].apply(lambda x: x.str.replace(' In [12]: clients.head() Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group 7125000 5500000 30.00% 1,500,000 1 10 2017 Jakarta Enterprise 82391 Li and Partners 420000 820000 10.00% 400,000 6 15 2016 Jakarta Startup Out[12]: ID 18374 PT. Kreasi Metrik Solusi 0 550403 25.00% 0 3 29 2012 Surabaya Enterprise 57531 PT. Algoritma Data Indonesia 850000 395500 4.00% 0 7 17 2017 Jakarta Startup 19002 Palembang Konsultansi 2115000 0 -15.00% 0 2 24 2018 Bandung Startup Lengkapi kode program di bawah ini untuk menghilangkan tanda koma ( , ) pada kolom Returns ! In [13]: ## Fill in the blank (___): clients['Returns'] = clients['Returns'].str.replace(',','') In [14]: clients.head() Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group 7125000 5500000 30.00% 1500000 1 10 2017 Jakarta Enterprise 82391 Li and Partners 420000 820000 10.00% 400000 6 15 2016 Jakarta Startup 18374 PT. Kreasi Metrik Solusi 0 550403 25.00% 0 3 29 2012 Surabaya Enterprise 57531 PT. Algoritma Data Indonesia 850000 395500 4.00% 0 7 17 2017 Jakarta Startup 19002 Palembang Konsultansi 2115000 0 -15.00% 0 2 24 2018 Bandung Startup Out[14]: ID In [15]: clients['Consulting Sales'] = clients['Consulting Sales'].astype('int64') In [16]: clients['Software Sales'] = clients['Software Sales'].astype('int64') In [17]: clients['Returns'] = clients['Returns'].astype('int64') In [18]: clients.dtypes Out[18]: Customer Name Consulting Sales Software Sales Forecasted Growth Returns Month Day Year Location Account dtype: object Data Analisis object int64 int64 object int64 int64 int64 int64 object category Sebagai seorang Data Analyst, Anda diminta untuk mendapatkan total penjualan secara keseluruhan dengan mengakumulasikan nilai Consulting Sales dan Software Sales dari setiap perusahaan. Buatlah kolom baru bernama Total Sales yang menyimpan total dari kedua nilai tersebut. 1. Berapa total ( sum ) keseluruhan dari Total Sales ? Tips: Gunakan method .sum() pada kolom untuk mengakumulasi nilai totalnya! [ ] 11,470,000 [x] 19,238,903 [ ] 7,768,903 In [19]: ## Your Code Below: total_sales = clients['Consulting Sales'].sum() + clients['Software Sales'].sum() In [20]: total_sales Out[20]: 19238903 Berdasarkan total penjualan yang diperoleh setiap tahunnya, Anda sedang berokus untuk menganalisa penjualan dari masing-masing client pada tahun 2017 silam. Oleh karena itu, saat ini Anda akan fokus pada perusahaan yang menjadi client pada tahun 2017. Lakukanlah subseting untuk mendapatkan informasi data penjualan yang terjadi pada tahun 2017. Gunakanlah metode subseting yang sudah Anda pelajari. 1. Perusahaan manakah yang mendapatkan Total Sales terbesar di tahun 2017? [x] New Media Group [ ] PT. Algoritma Data Indonesia [ ] Palembang Konsultansi In [79]: penjualan_2017 = clients.loc[(clients.Year == 2017), ['Customer Name', 'Year', 'Total Sa penjualan_2017 Customer Name Year Total Sales 30940 New Media Group 2017 12625000 57531 PT. Algoritma Data Indonesia 2017 1245500 Out[79]: ID In [80]: penjualan_2017.describe(exclude='number') Customer Name Out[80]: count 2 unique 2 top New Media Group freq 1 In [71]: ## Your Code Below: clients_cn = clients.loc[:, 'Customer Name':'Total Sales'] In [69]: clients_cn Customer Name Consulting Sales Software Sales Total Sales 30940 New Media Group 7125000 5500000 12625000 82391 Li and Partners 420000 820000 1240000 18374 PT. Kreasi Metrik Solusi 0 550403 550403 57531 PT. Algoritma Data Indonesia 850000 395500 1245500 19002 Palembang Konsultansi 2115000 0 2115000 31142 PT. Surya Citra Manajemen 960000 503000 1463000 Out[69]: ID In [70]: clients_cn.describe(exclude='number') Customer Name Out[70]: count 6 unique 6 top New Media Group freq 1 Setelah itu, kita akan kembali fokus menggunakan seluruh data yang ada. Menggunakan seluruh data yang ada, ternyata perusahaan ingin melakukan campaign terhadap perusahaan yang memiliki nilai penjualan lebih dari 1,500,000 IDR. Silahkan gunakan subsetting kembali untuk mengetahui perusahaan yang memiliki penjualan lebih dari 1,500,000 IDR. Ternyata ada dua perusahaan yang nilai penjualannya melebihi 1,500,000 IDR pada data tersebut. 1. Perusahaan mana saja yang memiliki penjualan lebih dari 1,500,000 IDR? [ ] Palembang Konsultansi & PT. Surya Citra Manajemen [ ] PT. Surya Citra Manajemen & New Media Group [x] Palembang Konsultansi & New Media Group In [67]: clients Customer Name Consulting Sales Software Sales Total Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group 7125000 5500000 12625000 30.00% 1500000 1 10 2017 Jakarta Enterprise 82391 Li and Partners 420000 820000 1240000 10.00% 400000 6 15 2016 Jakarta Startup 18374 PT. Kreasi Metrik Solusi 0 550403 550403 25.00% 0 3 29 2012 Surabaya Enterprise 850000 395500 1245500 4.00% 0 7 17 2017 Jakarta Startup Out[67]: ID 57531 PT. Algoritma Data Indonesia 19002 Palembang Konsultansi 2115000 0 2115000 -15.00% 0 2 24 2018 Bandung Startup 31142 PT. Surya Citra Manajemen 960000 503000 1463000 19.00% 0 1 19 2019 Jakarta Enterprise In [64]: clients.insert(3, column="Total Sales", value=(clients['Consulting Sales']+clients['Softw In [65]: clients Customer Name Consulting Sales Software Sales Total Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group 7125000 5500000 12625000 30.00% 1500000 1 10 2017 Jakarta Enterprise 82391 Li and Partners 420000 820000 1240000 10.00% 400000 6 15 2016 Jakarta Startup 18374 PT. Kreasi Metrik Solusi 0 550403 550403 25.00% 0 3 29 2012 Surabaya Enterprise 57531 PT. Algoritma Data Indonesia 850000 395500 1245500 4.00% 0 7 17 2017 Jakarta Startup 19002 Palembang Konsultansi 2115000 0 2115000 -15.00% 0 2 24 2018 Bandung Startup 31142 PT. Surya Citra Manajemen 960000 503000 1463000 19.00% 0 1 19 2019 Jakarta Enterprise Out[65]: ID In [66]: ## Your Code Below: clients.loc[clients["Total Sales"]>1500000] Customer Name Consulting Sales Software Sales Total Sales Forecasted Growth Returns Month Day Year Location Account 30940 New Media Group 7125000 5500000 12625000 30.00% 1500000 1 10 2017 Jakarta Enterprise 19002 Palembang Konsultansi 2115000 0 2115000 -15.00% 0 2 24 2018 Bandung Startup Out[66]: ID Sebagai seorang Data Anlayst, Anda diminta untuk menganalisa rata-rata dari Total Sales untuk seluruh perusahaan yang ada pada data. Dalam menganalisa data untuk mendapatkan suatu pusat data, ada beberapa pengukuran yang dapat digunakan. Diantarana yaitu mean, median, dan modus. Karena yang akan dianalisa berupa nilai numerik maka terkadang nilai numerik dapat terpengaruh oleh suatu nilai-nilai ekstrim atau outlier. Oleh karena itu, penggunaan median seringkali lebih relevan dibandingkan menggunakan nilai mean, karena mean lebih mudah terpengaruh terhadap nilai outlier. 1. Berdasarkan analisa diatas, berapakah nilai pusat data dari Total Sales ? [x] 1,354,250 [ ] 1,515,875 [ ] 3,737,700 In [33]: ## Your Code Below clients["Total Sales"].describe() Out[33]: count 6.000000e+00 mean 3.206484e+06 std 4.641267e+06 min 5.504030e+05 25% 1.241375e+06 50% 1.354250e+06 75% 1.952000e+06 max 1.262500e+07 Name: Total Sales, dtype: float64 Anda saat ini akan fokus untuk menganalisis perusahaan PT. Algoritma Data Indonesia. Menggunakan metode subsetting yang sudah Anda pelajari, jawablah pertanyaan dibawah ini. 1. Manakah metode subsetting yang paling sesuai untuk melakukan subsetting secara eksplisit pada ID perusahaan 57531 pada data clients ? [x] clients.loc[57531, :] [ ] clients.iloc[57531, : ] [ ] clients[57531, : ] In [72]: ## Your Code Below: clients.loc[57531, :] Out[72]: Customer Name PT. Algoritma Data Indonesia Consulting Sales 850000 Software Sales 395500 Forecasted Growth 4.00% Returns 0 Month 7 Day 17 Year 2017 Location Jakarta Account Startup Name: 57531, dtype: object Terakhir, Anda diminta untuk melakukan analisa pada client yang berlokasi di Jakarta dan termasuk kedalam akun Enterprise. Untuk melakukan subsetting, silahkan lengkapi syntax berikut dan jawablah pertanyaan dibawah ini. clients[________ _ ________] 1. Berdasarkan syntax yang Anda lengkapi diatas, manakah pilihan syntax dibawah ini yang tepat untuk melengkapi? [ ] (clients.Location == "Jakarta") | (clients.Account == "Enterprise") [ ] clients.Location == "Jakarta" & clients.Account == "Enterprise" [x] (clients.Location == "Jakarta") & (clients.Account == "Enterprise") [ ] clients.Location == "Jakarta" | clients.Account == "Enterprise" In [69]: ## Your Code Below: (clients.Location == "Jakarta") & (clients.Account == "Enterprise") Out[69]: ID 30940 True 82391 False 18374 False 57531 False 19002 False 31142 True dtype: bool