0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan18 halaman

Tugas Data Analisis

Tugas ini membahas analisis data keuangan perusahaan penjualan yang berisi 711 baris dan 16 kolom. Ringkasan utamanya adalah membersihkan data yang kotor seperti nilai negatif pada kolom penjualan dan potongan harga serta nilai nol pada kolom harga dan biaya produksi.

Diunggah oleh

Najmi Az-Zahra F
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan18 halaman

Tugas Data Analisis

Tugas ini membahas analisis data keuangan perusahaan penjualan yang berisi 711 baris dan 16 kolom. Ringkasan utamanya adalah membersihkan data yang kotor seperti nilai negatif pada kolom penjualan dan potongan harga serta nilai nol pada kolom harga dan biaya produksi.

Diunggah oleh

Najmi Az-Zahra F
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

Tugas Analisis Data

Najmi Az-Zahra Feryputri (16521044)

Tanggal : 15 November 2011

Kode/Mata Kuliah : KU1102/Pengenalan Komputasi

Dosen Pengampu:

1. Dr. Fazat Nur Azizah, S.T., M.Sc.

2. Dr. Widyawardana Adiprawita, S.T, M.T.


Latihan soal dari slide
Latihan 2

Latihan 2-1

Soal: Tampilkan negara(-negara) dengan perolehan perunggu terbanyak!

 Deskripsi:
Program menampilkan negara dengan perunggu(“bronze”) terbanyak
 Program
#Latihan 2-1

imin = df3["bronze"].idxmax()

df3[imin : imin+1]
 Output

Latihan 2-2
Soal: Tampilkan negara(-negara) dengan perolehan perunggu sedikit, tapi total perolehan medali > 0!

 Deskripsi
Program menampilkan negara dengan perolehan perunggu (“bronze”) terkecil tetapi perolehan
medali (“total”) >0
 Program
min = df3["bronze"].min() #mencari nilai bronze minimum

df3.loc[ (df3["bronze"] == min) & (df3["total"] > 0) ]


 Output

Latihan 3

Soal: Sort data perolehan medali terurut menurun berdasarkan kolom gold dan terurut menaik
berdasarkan kolom silver

 Deskripsi
Program menampilkan data dengan urutan berdasarkan kolom gold dan silver. Urutan menurun
untuk kolom gold, serta urutan menaik untuk kolom silver.
 Program
df3.sort_values(["gold","silver"], ascending=[0,1])
 Output

dan seterusnya hingga index terakhir (saya tidak menampilkan semua)

Latihan 4

Soal: Buatlah distribusi frekuensi untuk total perolehan medali.

 Deskripsi
Program menampilkan distribusi frekuensi total medali.
 Program
df3["total"].value_counts()
 Output
Latihan 5

Soal: Hitung dan analisis-lah korelasi antara data-data berikut!

a. Gold vs Silver

 Program
df3["gold"].corr(df3["silver"])
 Output

 Analisis:
Perolehan medali emas dan perolehan medali perak berhubungan kuat karena corr tidak
mendekati 0, yaitu berbanding lurus karena corr mendekati 1.

b. Silver vs Bronze

 Program
df3["silver"].corr(df3["bronze"])
 Output

 Analisis
Perolehan medali perak dan perolehan medali perunggu berhubungan kuat karena corr tidak
mendekati 0, yaitu berbanding lurus karena corr mendekati 1.
c. Gold vs Bronze

 Program
df3["gold"].corr(df3["bronze"])
 Output

 Analisis
Perolehan medali emas dan perolehan medali perunggu berhubungan kuat karena corr tidak
mendekati 0, yaitu berbanding lurus karena corr mendekati 1.

d. Silver vs Total

 Program
df3["silver"].corr(df3["total"])
 Output

 Analisis
Perolehan medali perak dan perolehan total medali berhubungan kuat karena corr tidak
mendekati 0, yaitu berbanding lurus karena corr mendekati 1.

e. Bronze vs Total

 Program
df3["bronze"].corr(df3["total"])
 Output

 Analisis
Perolehan medali perunggu dan perolehan total berhubungan kuat karena corr tidak
mendekati 0, yaitu berbanding lurus karena corr mendekati 1.

Kesimpulan:
Karena setiap corr memiliki nilai dekat 1, setiap perolehan medali saling berbanding lurus satu sama
lain. Jika suatu negara memperoleh banyak medali emas, maka negara tersebut cenderung juga akan
memperoleh banyak medali perak serta perunggu, sehingga total perolehan medalinya juga banyak.
Begitu pula sebaliknya, jika suatu negara memperoleh sedikit medali emas, maka negara tersebut
cenderung juga akan memperoleh sedikit medali perak serta perunggu, sehingga total perolehan
medalinya sedikit.
Latihan soal (Tool : Python)
A. Import Data

Program
Saya sudah mencoba berkali-kali, tetapi saya tetap tidak bisa mengimpor file .csv ke dalam
notebook saya. Oleh karena itu, saya mengganti file.csv menjadi .xlsx. Saya berhasil mengimpor
tabel dengan baik dengan file .xlsx. Berikut programnya:

import pandas as pd

dffin = pd.read_excel('D:/PENGKOM-materi/financial.xlsx', sheet_name='financial')

dffin

Output

B. Data Understanding

1) Ada Ada berapa banyak baris data sales?


 Ada 710 indeks atau 711 baris.

2) Ada berapa kolom dan apa saja Namanya


 Ada 16 kolom, yaitu:
Segment Country Product DiscountBand UnitsSold ManufacturingPrice SalePrice GrossSales Discounts Sales COGS Profit Date MonthNumber MonthName Year
3) Apa tipe data tiap kolom : numerik ? teks ? kuantitatif ?
Program:

dffin.dtypes

Output:

Kolom Tipe data

Teks (Categorical-nominal)
Segment
Teks (Categorical-nominal)
Country
Teks (Categorical-nominal)
Product
Teks (Categorical-Ordinal)
DiscountBand
Kuantitatif (Quantitative – Discrete)
UnitsSold
Numerik (Quantitative – Continues)
Manufacturing
Price
Numerik (Quantitative – Continues)
SalePrice
Numerik (Quantitative – Continues)
GrossSales
Numerik (Quantitative – Continues)
Discounts
Numerik (Quantitative – Continues)
Sales
Numerik (Quantitative – Continues)
COGS
Numerik (Quantitative – Continues)
Profit
Kuantitatif (Quantitative – Discrete)
Date
Kuantitatif (Quantitative – Discrete)
MonthNumber
Teks (Categorical-nominal)
MonthName
Kuantitatif (Quantitative – Discrete)
Year

4) Perhatikan data pada tiap kolom


 Nilai nilai apa saja yang terdefinisi untuk atribut bertipe ordinal
 Low, Medium, High

 Range untuk tiap atribut numerik


Untuk menentukan range, terlebih dahulu kita harus menentukan nilai maksimum dan
minimum setiap data pada kolom numerik. Dalam hal ini, agar lebih cepat, saya langsung
mencari nilai maksimum dan minimum untuk seluruh data, sebagai berikut:
a) Program
Nilai maksimum:

maximum = dffin.max()

print(maximum)

Nilai minimum:

minimum = dffin.min()

print(minimum)
b) Output
Nilai maksimum:

Nilai minimum:

Berdasarkan output diatas, Range untuk tiap atribut numerik:


Atribut Numerik Range (nilai minimum−nilai maksimum)

0−260
Manufacturing Price
0−350
SalePrice
-355500 −103808250
GrossSales
-49770 − 14967750
Discounts
-305730 − 103808250
Sales
0 − 2246250
COGS
0 − 18640750
Profit

5) Apakah ada data yang “ kotor?


 Data kosong?
Ada, data kosong ditampilkan sebagai “NaN”, “NaT”, serta “None” pada DiscountBand

Banyak elemen kosong pada seluruh data:


Program:

dffin.isnull().sum()

Output (jumlah elemen kosong pada data):

 Data berisi nilai yang “ aneh”?


Ada. Pada no. 4, saat mencari range, nilai minimum GrossSales, Discounts, dan
Sales bernilai negatif. Padahal, hal ini tidak mungkin mengingat GrossSales adalah total
penjualan, Discounts adalah potongan harga, dan Sales adalah penjualan.

 Apa yang perlu dilakukan terhadap data kotor ? Diberikan nilai ? Dibiarkan?
Menurut saya, karena data ini adalah data finansial yang melibatkan kalkulasi cukup rumit
untuk mendapatkan data, daripada dibuat-buat, alangkah lebih baik bila data ini
“dibersihkan”. Berikut tahapan membersihkan data yang saya usahakan:
1. Mengecek Range (sudah dilakukan di no. 4)
Kesimpulan yang didapat:
Nilai minimum GrossSales, Discounts, dan Sales bernilai negatif. Padahal, hal ini
tidak mungkin mengingat GrossSales adalah total penjualan, Discounts adalah
potongan harga, dan Sales adalah penjualan.

2. Menghapus baris yang mengandung data negative untuk kolom tertentu


Program:

indexNames = dffin.loc[ (dffin["GrossSales"] < 0) &


(dffin["Discounts"] < 0) & (dffin["Sales"] < 0 ) ].index

dffin.drop(indexNames , inplace=True)

dffin

Output:

dapat dilihat pada output diatas, jumlah rows yang tadinya 710 berkurang menjadi
709, berarti ada pengurangan rows (baris) yang mengandung data bernilai negative.

3. Mengecek nilai maksimum dan minimum lagi untuk memastikan.


Program:
minimum maksimum

minimum = dffin.min() maximum = dffin.max()


print(minimum) print(maximum)
Output:
Minimum:

Maksimum

Analisis:
Untuk atribut numerik, dari UnitsSold hingga profit, nilai minimum sebesar 0. Nilai
0 mungkin saja untuk UnitsSold dan Profit. Akan tetapi, untuk atribut yang
berhubungan dengan harga dan penjualan (ManufacturingPrice-COGS) nilai 0 tidak
mungkin. Ketika saya melihat sekilas data di excel, kolom GrossSales-COGS
memiliki data yang berkisar pada nilai ribuan dan ratusan, sehingga tidak mungkin
jika terdapat data 0.
Kesimpulan:
Saya akan menghapus baris yang mengndung nilai 0 untuk kolom
ManufacturingPrice-COGS.
4. Menghapus baris yang mengandung data tidak sesuai / beda sendiri
Saya akan menghapus baris yang mengndung nilai 0 untuk kolom
ManufacturingPrice-COGS.
Program:

indexNames1 = dffin.loc[(dffin["ManufacturingPrice"]==0) &


(dffin["SalePrice"]==0) & (dffin["GrossSales"]==0) &
(dffin["Discounts"]==0) & (dffin["Sales"]==0) &
(dffin["COGS"]==0)].index

dffin.drop(indexNames1 , inplace=True)

dffin

program lebih jelas:

Output:

dapat dilihat pada output diatas, jumlah rows yang tadinya 709 berkurang menjadi
708, berarti ada pengurangan rows (baris) yang mengandung nilai tidak sesuai.

5. Menghapus baris yang mengandung elemen kosong


Program:
Menghapus baris yang mengandung elemen kosong pada 16 kolom:

dffin1 = dffin.dropna(thresh = 16)

dffin1
Output, merupakan data final yang akan diolah:

dapat dilihat pada output diatas, jumlah rows yang tadinya 708 berkurang menjadi
643, berarti ada pengurangan rows (baris) yang mengandung nilai tidak sesuai.

C. Statistics

Amati dan jelaskan statistik untuk data tiap atribut numerik: Nilai ekstrim: minimum, maksimum ;
Nilai rata-rata (mean) dan deviasi standar ; Percentile 25%, 50%, 75% .

Untuk menganalisis ini, saya menggunakan DataFrame yang sudah dibersihkan (dffin1)

Program:

dffin1.describe()

Output:

Analisis:

Untuk nilai maksimum serta minimum, dapat kita lihat, data pada dffin1 yaitu data frame yang
sudah dibersihkan ini berbeda dari data sebelum dibersihkan. Untuk nilai minimum, tidak ada yang
ganji. Akan tetapi, terdapat keganjilan pada nilai maksimum. Ada atribut yang memiliki nilai
maksimum tidak wajar, yaitu UnitsSold. Nilai 90000000-an diantara nilai puluhan dan ratusan tentu
tidak wajar. Nilai ini tentu mempengaruhi Rata-rata serta Standar Deviasi dari kolom UnitsSold.
D. Data Exploration

1. Tampilkan data pada MonthName December Year 2014


Program:

#Program menampilkan data pada MonthNameDecember Year 2014

dffin1.loc[ (dffin1["MonthName"] == "December") & (dffin1["Year"] == 2014) ]

Output:

2. Tampilkan data untuk Product Paseo dengan UnitsSold> 1000


Program:

#Program menampilkan data Product Paseo dengan UnitsSold> 1000

dffin1.loc[ (dffin1["Product"] == "Paseo") & (dffin1["UnitsSold"] > 1000) ]

Output:
3. Tampilkan 10 data dengan nilai kolom Sales tertinggi!
Program:

#Program menampilkan 10 data dengan nilai kolom Sales tertinggi

SalesMax = dffin1.sort_values(["Sales"], ascending=[0])


SalesMax[0:10]

Output:

4. Tampilkan data Country dengan total Profit


Program:

#Program menampilkan data country dengan total profit

dffin1.groupby("Country")["Profit"].sum()

Output:
5. Tampilkan frekuensi data per Segment pada tahun 2013
Program:

#Program menghitung frekuensi data per Segment pada tahun 2013


year = dffin1.loc[dffin1["Year"] == 2013]
year["Segment"].value_counts()

Output:

6. Tampilkan data terurut berdasarkan Year dan MonthNumber


Program:

#Program menampilkan data terurut berdasarkan Year dan MonthNumber

#Asumsi: Year dan MonthNumber diurutkan dari paling kecil ke paling besar

dffin1.sort_values(["Year", "MonthNumber"], ascending=[1,1])

Output:
7. Tampilkan data terurut berdasarkan Product
Program:

#Program menampilkan data terurut berdasarkan Product

#Asumsi: Product diurutkan dari paling kecil ke paling besar

dffin1.sort_values(["Product"], ascending=[1])

Output:

Anda mungkin juga menyukai