Uploaded by Atsilah Mumtazah

Atsilah Mumtazah Nainggolan J0303202167 Tugas1

advertisement
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
Download