Sunteți pe pagina 1din 53

qwertyuiopasdfghjklzxcvbnmqwertyuio

pasdfghjklzxcvbnmqwertyuiopasdfghjkl
zxcvbnmqwertyuiopasdfghjklzxcvbnmq
Proiect Pachete Software
wertyuiopasdfghjklzxcvbnmqwertyuiop
EXCEL
asdfghjklzxcvbnmqwertyuiopasdfghjklz
Andreea-Alexandra Cîrnaru
Mădălina-Andreea Călin
xcvbnmqwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqwertyuiop
asdfghjklzxcvbnmqwertyuiopasdfghjklz
xcvbnmqwertyuiopasdfghjklzxcvbnmq
wertyuiopasafghjklzxcvbnmqwertyuiop
asdfghjklzxcvbnmqwertyuiopasdfghjklz
xcvbnmqwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqwertyuiop
asdfghjklzxcvbnmrtyuiopasdfghjklzxcvb
nmqwertyuiopasdfghjklzxcvbnmqwerty
uiopasdfghjklzxcvbnmqwertyuiopasdfg
Cuprins

Introducere ...................................................................................................................................................... 3
Functii financiare ............................................................................................................................................ 4
Grafice............................................................................................................................................................. 7
Functii matematice .......................................................................................................................................... 9
Functii logice................................................................................................................................................. 10
Functii user-defined ...................................................................................................................................... 11
Scenarii .......................................................................................................................................................... 12
Goal Seek....................................................................................................................................................... 13
Solver............................................................................................................................................................. 14
Subtotal ......................................................................................................................................................... 15
Pivot Table..................................................................................................................................................... 16

2
Introducere

Firma Makeup Land este o firma ce comercializeaza produse cosmetice, de la diverse


branduri. Ceea ce o diferentiaza de celelalte firme este ca doreste sa se apropie cat mai mult de
consumator, realizand analize si investind in noi locatii pentru extindere. Astfel, ea urmareste sa
se dezvolte, sa analizeze preferintele consumatorilor, pentru a sti ce discounturi sa poata aplica sau
cum sa isi motiveze angajatii.

Printre principalele brand-uri ale firmei Makeup Land, se regasesc:


● TooFaced
● Sephora
● Farsali
● Dior
● Yves Saint Laurent
● Melkior
● Burjois
● MAC

3
Functii financiare

1. Prima functie financiara este introdusa in fila de Investitii. Pentru firma prezentata am avut in
vedere idee de achizitionare a unui alt magazin pentru vanzarea produselor cosmetice. Astfel, am
apelat la realizarea unui depozit pentru investitie care va avea loc peste un an si jumatate.
Depozitul initial este considerat 8000 RON, cu o rata a dobanzii anuala de 5%, deci rata anuala a
dobanzii pentru 18 luni va fi de 0.416%, si o rata lunara de 1200 RON.
Metoda de calcul
Am calculat folosind functia FV(rata dobanzii,perioada,rata lunara, depozit initial).

Astfel, rata dobanzii va fi 5% impartit la 12, adica 0,416 si timp de un an si jumatate. Perioada va
fi de 18 luni, rata lunara va fi suma de 1200 RON, iar depozitul initial va porni de la 8000 RON.

Ca si rezultat, dupa cele 18 luni, se va acumula suma de 31 004 RON.

2. Cea de a doua functie financiara a fost creata pentru a calcula valoarea neta a unei investitii, daca
valoarea initiala este de 13 000 RON, iar Rata inflatiei este de 4.6%. In plus, aceasta investitie va avea loc
daca in anul 2019 valoarea medie a venitului va fi de peste 5000 RON pe an. Tinand cont ca se va
achizitiona inca un centru comercial peste un an si jumatate, incepand cu anul 2020 se preconizeaza ca
venitul mediu pe luna dintr-un an va creste cu 5% fata de anul precedent.

Metoda de calcul
Am aplicat functia IF pentru a verifica daca venitul mediu este de peste 5000 lei.

Daca rezultatul va fi mai amre de 5000 lei, atunci in celula B13 va fi afisat venitul mediu, altfel va fi afisat
0.
Venitul mediu a fost calculat cu ajutorul pretului mediu si al vanzarilor medii realizate de angajati.

4
Pentru a calcula valoarea neta a investitiei am folosit functia NPV(rata inflatiei, valoare 1, valoare 2,...).
Deoarece valoarea initiala este de 13000, in interiorul functiei NPV vom folosi semnul -, celelalte valori
pastrandu-se cu +. Rata inflatiei este calculata in valoare absoluta, deoarece este in procente. Urmatoarele 5
valori din functie NPV reprezinta valorile calculate pe fiecare an, din 2019 pana in 2023. Astfel, pentru
fiecare an, venitul mediu preconizat este calculat ca
venitul din anul anterior marit cu 5%.

3. Am realizat o foaie de calcul in care am introdus angajatii si vechimea lor in firma, precum si
numarul de produse vandute pe luna. Astfel, in functie de vechime, se vor acorda urmatoarele
sporuri:
- pentru o vechime între 1 si 3 ani sporul reprezinta 2% din salariu;
- pentru o vechime între 3 si 5 ani sporul reprezinta 3% din salariu;
- pentru o vechime între 5 si 7 ani sporul este de 3.5% din salariu;

5
La fel, am calculat cu ajutorul unei functii, sporul de vechime pentru produsele vandute, astfel:
- pentru 5-20 produse vandute, se aplica un spor de 5%
- pentru 20-45 produse vandute, se aplica un spor de 10%
- pentru 45-60 produse vandute, se aplica un spor de 15%
- pentru 60-60 produse vandute, se aplica un spor de 20%

Metoda de calcul
Am realizat calculul pentru comisionul total acordat, pe baza celor doua criterii de mai sus si am
calculat salariul total pe care il primesc angajatii firmei.
Total comision acordat este calculat astfel:

Spre exemplu, in cazul primului angajat,am adunat comisionul din coloana D2 si F2 in valoare
absoluta si am inmultit cu salariul, pentru a obtine totalul de bonsu acordat. Mai departe, pentru a
calcula totalul de salariu, am folosit expresia:

Rezultatul se poate vedea in coloana Total salariu, salariul inregistrand cresteri in cazul fiecarui
angajat. In cazul celor cu vechime mai mare, salariu creste mai mult, deoarece si rezultatele
vanzarilor lor este mai bun.

6
Grafice

1. Conform investitiilor prezentate mai sus, am luat in calcul preconizarea unei cresteri a venitului
mediu pe an. Astfel, incepand cu anul 2019 si pana in anul 2023 cand se va termina investitia,
venitul mediu va creste cu 5% fata de anul precedent. Am realizat un grafic ce va demonstra
evolutia acestui venit mediu si implicit, a firmei. Astfel ca incepand din anul 2022 venitul mediu
va creste peste 6000 RON.

2. Pentru a analiza performanta angajatilor, adica numarul de produse vandute, raportata la


vechime, am realizat urmatorul grafic Combo Chart.

Se poate
observa faptul ca angajatul cu experienta cea mai mica are si cea mai slaba performanta, pe cand
cei care au capatat cativa ani de experienta in vanzarea produselor au reusit sa vanda peste 40 de
produse.

7
3. Cu ajutorul celui de al treilea garfic, am realizat o analiza a preferintelor clientilor, in functie de
achizitiile lor. Ca si prim pas, am calculat numarul de clienti care prefera un anumit brand de
produse din magazin.

Metoda de calcul
Pentru a calcula numarul de consumatori, am folosit functia COUNTIF care numara celulele, daca
numele de brand este egal cu fiecare coloana din stanga.

Pentru a obtine numarul de 6 consumatori, am selectat intreaga coloana de Brand Preferat , de la


B2 la B36, iar pentru valoarea verificata am introdus celula E5, care contine numele brandului.
Cel de al doilea pas este reprezentat de crearea graficului. Am ales un grafic de tip Pie, deoarece
ilustreaza cel mai bine distributia preferintelor din totalul de branduri existente.
Am selectat cele doua coloane in care am calculat numarul de consumatori care prefera fiecare
brand.

8
Dupa cum se poate observa, brandurile
MAC, Melkior si Burjois sunt printre
cele mai preferate de consumatori, Farsali
fiind cel mai putin preferat.

Functii matematice

In foaia de calcul Formula matematica vom calcula functia matematica. Pentru fiecare dintre
produsele cosmetice comercializate de firma se aplica cota TVA in valoare de 19% pentru a se calcula atat
valoarea TVA a fiecarui produs, cat si pretul cu TVA al acestora. In tabelul de mai jos avem preturile.

Metoda de calcul

Pentru a calcula TVA-ul, se aplica formula Gi*$B$27, cu i de la 2 la 25, folosind valoarea absoluta
a TVA-ului din coloana B27.
Apoi, pentru a calcula pretul cu TVA, folosim formula Gi+Hi, cu i de la 2 la 25.

Am obtinut urmatoarele rezultate:

9
Functii logice

Pentru aplicarea functiei logice vom folosi foaia de calcul Calcul discount + pret. Unele branduri
acorda discount de fidelitate clientilor lor care au o anumita vechime pentru a-i stimula in continuare, iar
pentru a calcula discount-ul si pretul cu discount am folosit functia logica IF.

-Branduri care ofera discount de fidelitate de 1 an: TooFaced, Dior


-Branduri care ofera discount de fidelitate de 5 ani: Sephora
-Branduri care ofera discount de fidelitate de 10 ani: Melkior
-Branduri care nu ofera niciun discount: Farsali, Burjois, Lancome, MAC, Yves Saint
Laurent

Folosind functia logica, am calculat discount-ul si pretul cu discount pentru fiecare brand in parte.

Metoda de calcul: am folosit un NESTED IF pentru a calcula discount-ul:

Apoi, pentru a calcula coloana Pret cu discount, am folosit functia Ii-Ji, cu i de la 2 la 25.

Rezultatele se pot observa in tabelul de mai jos:

10
Functii user-defined

Pentru fiecare produs se cunoaste data fabricarii, precum si data expirarii, putand sa calculam astfel
valabilitatea acestora (in luni). Firma acorda reduceri in functie de valabilitatea produselor.
Sa se calculeze pretul cu reducerile respective.

Reducerea se calculeaza astfel:


-35% din pret daca valabilitatea produsului este intre 2 si 6 luni
-20% din pret daca valabilitatea produsului este intre 7 si 12 luni
-15% din pret daca valabilitatea produsului este intre 13 si 24 luni
-5% din pret daca valabilitatea produsului este intre 25 si 32 luni
-0% din pret daca valabilitatea produsului este mai mare de 32 de luni

Metode de calcul:

Pentru a calcula reducerea, am creat o functia Reducere in Visual Basic, ce are ca parametri atat
pretul, cat si valabilitatea (in luni).

Function Reducere(pret, valabilitate)


If valabilitate > 32 Then
Reducere = 0
Else
If valabilitate >= 2 And valabilitate <= 6 Then
Reducere = 0.35 * pret
Else
If valabilitate > 6 And valabilitate <= 12 Then
Reducere = 0.2 * pret
Else
If valabilitate > 12 And valabilitate <= 24 Then

11
Reducere = 0.15 * pret
Else
Reducere = 0.05 * pret
End If
End If
End If
End If
End Function

Astfel, am obtinut rezultatele:

Coloana Pret reducere a fost calculata folosind formula: Ii-Reducere(Ii,Fi), cu i ce ia valori de la 2


la 25, Ii fiind coloana Pret fara TVA, iar Fi fiind coloana Valabilitate.

Scenarii

1. Presupunand ca rata inflatiei creste cu 10%, cum se va modifica valoarea neta a investitiei?

Metoda de calcul:
Folosim Scenario si inlocuim astfel valoarea ratei inflatiei de la 4.6% la 5.6%
Rezultatul obtinut:

Se observa astfel ca, daca rata inflatiei creste cu 10%, valoarea neta a investitiei va scadea cu
182,48 lei.

12
2. Presupunand ca, in 5 ani, cota TVA va fi de 12% in loc de 19%, cum va afecta acest lucru
preturile produselor?

Metoda de calcul:
Folosim Scenario si inlocuim astfel cota TVA de la 19% la 12%.

Rezultatul obtinut:

Se poate observa ca, daca TVA-ul scade, si preturile vor scadea.

Goal Seek

Se doreste determinarea pretului produsului Fard de obraz, astfel incat totalul preturilor fara TVA sa devina
3500 de lei, de la totalul initial de 3245.89 RON. Astfel, am utilizat functia de Goal Seek si am determinat
pretul nou pe care produsul trebuie sa il aiba, si anume 255.18 RON.

13
Solver
Pentru a optimiza cantitatile ideale de produse vandute, am folosit optiunea Solver astfel incat am reusit
sa calculam numarul optim de produse vandute din fiecare pentru a atinge un profit dorit.

Constrangerile pentru fiecare cantitate care se


doreste a fi calculate sunt ca numarul calculate sa fie
mai mic sau egal cu numarul de bucati disponibile.
Profitul dorit este calculate pe baza sumei valorii
totale (=SUM(E4:E16)), aceasta fiind calculate ca
produs intre Cant obtinuta * Pret.

14
Rezultatul obtinut.

Subtotal
Pentru realizarea subtotalului, dorim sa calculam valoarea totala a produselor (fara TVA) in functie de
categoria din care fac acestea parte. Rezultatul este urmatorul:

15
Pivot Table

Pentru a realizat Pivot Table am utilizat setul de


date de la problema anterioara pentru Subtotal.
Astfel, am ales ca produsele sa fie afisate pe
categorii, ca si valoare sa se calculeze pentru
fiecare categorie si in plus sa putem adauga
filtru in functie de brandul fiecarui produs. In
dreapta avem rezultatul fara filtru.

Daca setam filtru pentru tipul de brand Sephora vom


obtine urmatorul rezultat:

1. Crearea unui set de date SAS din fisiere externe


• Din fisierul makeup.txt au fost importate in tabele informatii despre produse,
creand urmatoarele coloane: Denumire Produs, Categorie, Producator, Data
fabricarii, Data expirarii, Valabilitate, Pret fara TVA, TVA-ul, Pret cu TVA.
Tabela este creata in contextul acumularii unui set de date pe care administratorul
afacerii doreste sa le utilizeze in realizarea unor rapoarte si analize mai tarziu.

16
Totusi, setul de date este temporar, deoarece foloseste declaratia DATA si va fi
sters cand sesiunea va fi inchisa.

Am utilizat urmatorul apel pentru inregistrarea datelor in tabele:

Rezultatul obtinut este urmatorul:

• Administratorul firmei doreste sa salveze o serie de date, folosind propriile date si


sa le manipuleze mai usor. In acest caz am creat seturi de date permanente, folosind
declaratia LIBNAME. Datele au fost salvate in noua biblioteca creata machiaje,
iar setul de date este makeup_test.
Pentru acest lucru am utilizat apelul de mai jos:

17
Si am utilizat procedura PRINT pentru afisarea informatiilor:

In imaginea de mai jos am utilizat procedura de afisare a descrierii datelor, CONTENTS.


Rezultatul rulării acestui script este un raport ce conţine numărul de variabile şi de observaţii,
numele, tipul şi dimensiunile variabilelor şi alte informaţii referitoare la setul de date din fişier.

Rezultatul procedurii PRINT:

18
Rezultatul procedurii CONTENTS:

2. Crearea si folosirea de formate definite de utilizator

19
• La acest pas, administratorul firmei doreste sa realizeze un raport si sa aloce
fiecarui brand titlul primit in urma vanzarilor si preferintei consumatorilor.

Datele adaugate au fost inregistrate in libraria BRANDURI, in setul de date branduri_test. Mai
departe, a fost aplicata procedura care separa aceste branduri pe categorii.

Astfel, firma Farsali este considerate Brand de lux, Sephora este Premium Brand, Burjois este
Brandul lunii, iar Maelkior este Affordable pentru consumatori. In cazul in care sunt intalnite alte
denumiri de branduri, sunt considerate a fi Affordable.

Mai departe, pentru printarea rezultatului a fost utilizat apelul:

Iar rezultaul este urmatorul:

20
• Analiza frcventei brandurilor in topul preferintelor de consumatori

Pentru realizarea acestui lucru am utilizat urmatorul apel:

In acest caz am utilizat procedura FREQ care calculeaza frecventa aparitiei in tabela
de branduri. Rezultatul este urmatorul:

3. Crearea de subseturi de date


• Se doreste inregistrarea unor date temporare pentru crearea unor subseturi de date
in legatura cu clientii firmei si preferintele lor. Varsta are o lungime fixa de 2
caractere, in timp ce restul coloanelor au lungimea adapatata in functie de sirul
introdus. Astfel, utilizand si formatarile definite de utilziator, sunt introduse
urmatoarele date:

21
Mai departe, utilizam instructiunea WHERE pentru a selecta din datele introduse
doar pe acelea in care consumatorii au varsta egala cu 22 de ani, brandul este TooFaced
sau Sephora sau pretul este egal cu 230 lei. In afisarea acestui rezultatul utilizam
coloanele: Nume, Varsta, Produs, Brand, Pret.

Rezultatul este urmatorul:

22
4. Generarea graficelor pe baza aestor subseturi de date este realizata cu ajutorul
procedurii GCHART. Pentru fiecare variabila, Producator si PretCuTva este
generat cate un grafic ce afiseaza frecventa aparitiei fiecarui brand in setul de date
din libraria machiaje.

Graficul pentru producator este:

Graficul pentru PretCuTva este:

23
Se observa ca majoritatea preturilor cu TVA sunt distincte si ca se repeta doar la 4
dintre produse.

5. Combinarea seturilor de date prin proceduri specific SAS & SQL

Pentru reazlizarea acestora, este nevoie de adaugarea unor seturi de date temporare cu care sa se
poata lucra:

Astfel, se creeaza setul de date clientiMelkior care


are informatii despre numele, varsta si brandul ales
al clientului. In paralel, se creeaza setul de date
pentru clientiFarsali.

• Se doreste combinarea seturilor de date pentru cele doua tipuri de client,


obtinandu-se urmatorul rezultat:

24
Pentru acest lucru, a fost utilizat urmatorul apel:

Astfel, noul set clientiNoi contine ambele seturi inregistrate mai sus si rezultatul este printat fara alte
modificari.

• Administratorul doreste omogenizarea rezultatelor si datelor introduse, astfel incat


redenumeste coloana BrandPreferat in BrandAles.

Apelul urmator face posibil acest lucru:

25
Rezultatul este urmatorul:

• Se introduce un nou set de date pe baza caruia sa se realizeaza combinarea subseturilor,


cu informatii despre parteneri si produsele vandute de firma.

Mai departe, pentru a realiza corespondenta intre date, vom folosi optiunea IN. In cazul
in care acestea nu corespund, variabilele temporare definite prin IN vor lua valoarea 0, iar
daca ele corespund iau valoarea 1. Deoarece acestea nu fac parte dintr-un set de date, se va
folosi declaraţia PUT pentru a le lista.

26
Rezultatul va fi urmatorul, ultima inregistrare fiind fara corespondenta cu produsele vandute:

6. Utilizarea de masive

De-a lungul anului 2018, trei magazine de cosmetice au participat la un concurs de vanzari de rujuri, în
patru etape. Se cunoaşte numărul de rujuri vandute de fiecare echipă în fiecare etapă. Se cere să se
determine numărul mediu de rujuri vandute în 2018 de către fiecare magazin şi să realizeze un raport al
vanzarilor de rujuri în anul 2018, per magazin şi per total.

Se importa fisierul magazine.txt ce contine datele despre vanzarile din fiecare etapa, dupa se
calculeaza media acestora.

Se utilizeaza un array care inregistreaza cele patru medii calculate mai sus, iar pentru fiecare
moment de timp, numarul de vanzari este setat cu valoarea mediei de pe pozitia timp.

27
Rezultatul este urmatorul:

28
• Importul unui fisier non-SAS
In realizarea proiectului cu SAS Enterprise Guide dorim sa utilizam datele care au fost folosite in
sectiunea de Excel si de programare SAS. Fisierul non-SAS reprezinta acel tip de fisier care nu are extensia
.sas, precum librariile. Astfel, am importat fisierul excel realizat in prima parte a proiectului.

• Pelucrari statistice

1. In figurile de mai jos, am aplicat Characterize Data, folosind Tasks Describe  Characterize Data…,
dupa ce am importat documentul Excel.

Aici este calculata frecventa aparitiei


in cazul fiecarei categorii de produse
cosmetice. De asemenea, este
calculat si procentul din intreg pentru
fiecare categorie.

In figura de mai jos, este realizata o analiza statistica pentru produsele existente in stocul
magazinului. Se observa faptul ca tipuld e produs Creion contur apare in 2 bucati si are o frecventa de
8.33% din intreg, pe cand restul ai o aparitie de un exemplar si reprezinta 4.167% ca frecventa din total.

29
Tabelul reprezinta o analiza a
frecventei producatorilor in
magazinul de produse cosmetic,
astfel putem observa ca cele mai
multe produse sunt marca Melkior,
Sephora si Ives Saint Laurent, cu un
procent de 16.667%.

2. Calculul statistic din cele doua tabele ilustreaza o analiza a pretului fara TVA al produselor cosmetic.
Se observa faptul ca, pentru un numar de 24 observatii, pretul minim fara TVA este de 35 lei, iar cel
mai mare este 216 lei. Observam si ca in medie, un produs costa 113.792 lei, cu o abatere standard de
10,50. In cazul duratei valabilitatii unui produs, valorile oscileaza de la un minim de 0 luni pana la 45
de luni. Media de valabilitate a unui produs cosmetic existent in magazine este de 15.667 luni, cu o
abatere standard de 3.0239.

30
Pentru variabilele de date, sunt analizate datele de expirare ale produselor si datele de fabricare.
Astfel, putem observa ca produsele nu sunt fabricate mai tarziu de data de 6 Mai 2019 si produsul
care expira primul este pe data de 11 Mai 2019. Produsele cosmetice din stoc expira in medie pe data
de 11 7 septembrie 2020, deoarece produsul care expira ultimul este pe data de 11 Februarie 2023.

• Grafice

In graficul alaturat este


prezentata frecventa tipurilor de
produse, produsele de ten fiind in
numar cel mai mare, iar cele de
unghii, cremele, produsele de
buze fiind in numarul cel mai mic,
4.

Graficul prezinta frecventa produselor in functie de pret si


putem observa faptul ca exista doar cate 2 produse care
au acelasi pret.

31
Graficul de sus ilustreaza
frecventa produselor in
functie de denumriea
acestora. Exista doar
doua produse in
stocul magazinului
care au acelasi nume.

32
Cu privire la data
expirarii, cele mai multe
produse (in numar de 5) expira
pe data de 11 Mai 2019, fiind
urmate de cele pe data de 11
Martie 2020 si 11 Februarie
2023 (cate 4 pentru fiecare data
de expirare).

Graficul prezinta o analiza vizuala in functie de frecventa producatorilor din lista de produse cosmetic.
Cele mai multe dintre ele apartin brandurilor
precum Ives Saint Laurent, Sephora si
Melkior, urmand ca cele mai putine sa
apartina producatorului Lancome.

Valabilitatea apartine celor mai multe


produse in valoare de 0 luni. In grafic se
observa ca in clasament se incadreaza
urmatoarea cantitate mare de produse care
expira in 10 si 32 de luni.

33
• Interogari
Pentru realizarea interogarii s-a propus urmatoarea problema:

Creaţi un raport de frecvenţe care să afişeze numărul de clienti ai fiecarui brand, exceptând brandul MAC.
Includeţi în interogare numai furnizorii fara brandul MAC şi numai următoarele coloane, în ordinea: Nume
si prenume, Brand preferat, Gradul de satisfactie(1-5)

Pentru realizarea acestei cerinte, am creat un nou proiect si am importat foaia de calcul Clienti a
fisiereului Proiect_PSW.xlsm. De asemenea, am exclus randurile care au brandurl Mac. Am preluat
valorile datelor de comparat din tabela SAS folosind opţiunea de Get Values. Interogand tabela, am
obtinut rezultatul de mai jos.

34
De multe ori, interogarea va avea ca
rezultat un raport SAS. Acesta nu
poate fi folosit, mai departe, pentru
realizarea unor prelucrări asupra
datelor incluse în interogare. Pentru
a obţine raportul de frecvenţe, am
modificat rezultatul interogării
astfel încât să returneze o tabelă
SAS.

Pentru a obţine numărul clientilor al fiecarui brand, am selectat interogarea, apoi Tasks Describe
One-Way Frequencies…. Rezultatul este afisat mai jos:

Se observa faptul ca brandul preferat este Melkior, avand un procent de 38.46%.

• Jonctiune

In realizarea jonctiunii folosim instrumentul Query Builder pentru a realiza joncţiunea a doua
tabele care conţin informaţii despre client şi produse. Am creat o nouă coloană care calculează
profitul realizat pentru fiecare brand.

35
Rezultatul profitului calculat poate fi observat in
figura urmatoare:

• Interogari cu parametri

36
Am interogat tabela ce contine date despe
produse, preturi, denumire, producator si pentru
fiecare tip de brand am identificat valoarea
medie si valoarea totala a produselor.

37
Pornind de la tabela Products.xslm realizată la problema anterioară, am creat o tabelă SAS care
conţine preturile pe fiecare categorie si brand, interogare care să includă un parametru pentru coloana
Pret_limita. Pornind de la acest parametru, am creat un filtru astfel încât numai brandurile care au avut
produse cu preturi mai mari decât o valoare specificată de utilizator sa fie incluşi în interogare. Am folosit
prelucrarea List Data si am realizat un raport al producatorilor selectaţi. In figura de mai jos se observa
momentul in care utilizatorul introduce limita peste care doreste sa se incadreze produsele ce apartin
brandurilor din tabela.

Rezultatul este evidentiat in figura urmatoare:

38
• Formate definite de utilizator

1. Se doreste sa se citească un număr n < 15, să se creeze o listă de numere reale,


reprezentand o lista de preturi, de dimensiune n şi să se adauge elementele citite de
la tastatură. Se va ordona descrescător lista şi se va afişa. Dupa, se va inlocui pretul
de pe pozitia 3 cu un numar citit de la tastatura si se va sterge ultimul pret.

n=int(input('Introdu numarul de preturi: '))


lista=[]

if n <15:
for x in range(n):
x = float(input('Introdu pret: '))
lista.append(x)
else : print('Numar prea mare (n<15). Reintrodu
numarul')

print('Lista initiala', lista)

lista.sort()
lista.reverse()

print('Lista sortata descendent', lista)

y = float(input('Inlocuieste pret de pe pozitia 3 cu:


'))
lista.insert(2, y)
lista.pop()
print('Lista finala: ', lista)

39
2. Se doreste crearea unei liste de dicţionare cu următoarele chei: id, nume, prenume,
salariul, vechime pentru următorii angajaţi ai lunii: Mihalcea, Andreescu, Matei,
Apostol. De asemenea, daca angajatii au vechimea mai mare de 2 ani, sa li se
majoreze salariul cu 15%.

lista = [{"id":1, "nume":"Mihalcea",


"salariul":2700,"vechimea":3}, {"id":2,
"nume":"Andreescu", "salariul":3300,"vechimea":4},
{"id":3, "nume":"Matei", "salariul":3000,"vechimea":2},
{"id":4, "nume":"Apostol",
"salariul":4367,"vechimea":6}]

def afisareinitiala(dict):
for elem in dict:
print(elem)

print("Afisare dictionar cu valori initiale:")


afisareinitiala(lista)

print("Afisare modificari:")
for dict in lista:
if dict["vechimea"] > 2:
print(dict)
s=dict["salariul"]
print(s)
dict.update(salariul = s*1.15)

3. Cu ajutorul seturilor de date, se doreste crearea unei colectii de date despre tipurile de
branduri ale produselor vandute de firma Makeup Land ( TooFaced, Sephora, Farsali,
Dior, Yves Saint, Laurent, Melkior, Burjois, MAC). Mai departe se va realiza o
comparatie intre primul set si setul brandurilor intalnite in magazinul Sephora,
folosind difference(), symmetric_difference_update()- se va crea un nou
set cu diferentele dintre cele doua seturi. Setul nr 2 de date utilizat este: {Miu Miu,
TooFaced, Sephora, Dior, Yves Saint, Laurent, Burjois, Bvlgari, Burberry, Dior,
Escada, Estee Lauder}.

40
4. Pentru afisarea celui mai preferat brand, folosim tuplurile, colectii de date ordonate
si nemodificabile. Deoarece acestea permit elemente identice, putem aplica functia
de count() pentru a determina brandul lunii.

tupluBranduri = ("TooFaced", "Sephora", "Melkior",


"Sephora", "Yves Saint Laurent", "Melkior", "Burjois",
"MAC", "Sephora", "Sephora")
nr1=tupluBranduri.count("Sephora")
nr2=tupluBranduri.count("MAC")
nr3=tupluBranduri.count("Farsali")
nr4=tupluBranduri.count("Yves Saint Laurent")
nr5=tupluBranduri.count("Melkior")
nr6=tupluBranduri.count("Burjois")
tupluNrAparitii=(nr1,nr2,nr3,nr4,nr5,nr6)

print(tupluNrAparitii)

def maximNr(tuplu):
max = 0;
for nr in tuplu:
if max < nr :
max=nr
return max

print(maximNr(tupluNrAparitii))

def determinareBrand(tuplu) :
poz = 0;
max=maximNr(tuplu)
for nr in tuplu:
if max == nr:
poz=poz+1

if poz == 1:
print("Brandul lunii este Sephora")
break
else:
if poz == 2:
print("Brandul lunii este MAC")
break
else:
if poz == 3:
print("Brandul lunii este Farsali")
else:
if poz == 4:
print("Brandul lunii este Yves Saint
Laurent")
else:
if poz == 5:
print("Brandul lunii este
Melkior")
else:
if poz == 6:
print("Brandul lunii este
Burjois")

determinareBrand(tupluNrAparitii)

5. Datele despre produse vandute, alaturi de denumire, tip si brandul lor este deschis cu
ajutorul librariei pandas. De asemenea, dorim sa afisam primele 5 produse, folosind
comanda iloc.

import pandas
df = pandas.read_csv('data.csv')
#print(df)

#se doreste afisarea primelor 5 produse, odata


cu inf despre tip, brand
print(df.iloc[0:5])

41
6. Folosind comanda loc, realizam diverse prelucrari de continut pentru datele importante
in PyCharm.

print(df.loc[1:3,'Valabilitate(luni)':'Pret fara TVA'])

Astfel, vom afisa pentru elemente cu indexul de la 1 pana la 3, date incepand de la coloana
Valabilitate(luni) pana la Pret fara TVA. Rezultatul este urmatorul:

42
Mai departe. Dorim sa afisam date despre categoria fiecarui element cu indexul cuprins intre 5 si
10. Rezultatul este urmatorul:

print(df.loc[5:10,'Categorie']
)

7. Vom importa date despre angajatii firmei Makeup Land si vom modifica datele in
interiorul pachetului pandas.Astfel, angajatii care au Salariul mai mic de 1700 de lei si
care au vechimea de peste 2 ani, vor primi o marire de salariu, acesta devenind 1780. De
asmenea, rezultatul este vizualizat si in fisierul CSV.

import pandas
df = pandas.read_csv('dataAngajati.csv')
#print(df)

df1=df.copy()
print('Inainte de modificarea salariului: ')
print(df1)
df1.loc[(df1['Salariu'] < 1700) & (df1['Vechime'] > 2),
'Salariu'] = 1780
print('Dupa modificarea salariului: ')
print(df1)

df1.to_csv('dataAngajati.csv')

43
8. Tratarea valorilor lipsa din fisierul dataAngajatiLipsa.csv.

import pandas as pd
df = pd.read_csv('dataAngajatiLipsa.csv', usecols=['Nume si
prenume','Salariu','Vechime'])
print(df['Vechime'])
print(df['Vechime'].fillna(0))

9. Dorim sa stergem coloanele si inregistrarile din fisierul dataANgajati.csv despre


comisionul de vanzari, deoarece este mult mai important sa vizualizam doar Total
commission acordat, pentru a acorda mariri.

import pandas as pd
pd.set_option("display.max_columns",10)
df = pd.read_csv('dataAngajati.csv')

#Sterge o coloana cu parametrul columns


df = df.drop(columns="Comision vanzari")
print(df)

44
10. Prelucrari statistice pentru setul de date date.csv. Dorim sa afisam numarul total de
inregistrari, pretul maxim al unui produs utilizand sumele de pe coloanal Pret cu TVA, sa
identificam cate tipuri de produse su pentru ten sis a afisam toate categoriile existente in
magazin.

import pandas as pd
df = pd.read_csv('data.csv')
print('Numar inregistrari')
print(df['Denumire produs'].count())
print('Pretul maxima al unui produs')
print(df['Pret cu TVA'].max())
print('Numarul total de produse de ten')
print(df['Denumire produs'][df['Categorie'] ==
'Produse ten'].sum())
print('Numar de tipuri de produse disponobile,
eliminand duplicatele')
print(df['Categorie'].nunique())

11. Pentru a grupa datele despre angajati, am utilizat gruparea si agregarea datelor in cadrul
pachetului pandas. Astfel, le-am grupat in functie de salariu si vechime si am calculate
statistici pentru fiecare grup. Astfel, am calculate suma comisionului acordat dupa fiecare
grup si am afisat prima aparitie a numarului de produse vandute pentru fiecare grup. Mai
departe, le-am salvat in fisierul agregare.csv, grupandu-le dupa Nume si prenume si
Comision. Rezultatele sunt urmatoarele:

import pandas as pd
df = pd.read_csv('dataAngajati.csv')

print(df.groupby(['Salariu', 'Vechime']).agg({'Total comision


acordat':sum,
'Nr produse vandute': 'first'}))
df1 = df.groupby(['Nume si prenume', 'Comision
vechime']).agg({'Total comision acordat':sum,
'Nr produse vandute': 'first'})
df1.to_csv('agregare.csv')

45
12. Utilizarea functiilor de grup pentru prelucrarea datelor despre angajati. Astfel, am afisat
prima inregistrare din coloanal Categorie de produse, avand valori distince. Mai departe,
am droit afisarea totalului valorii pentru fiecare categorie de produse existente in stoc si
dupa am calculate valoarea totala a produselor de ochi, grupate dupa valabilitatea lor (in
luni).

import pandas as pd
df = pd.read_csv('data.csv')
print('Prima inregistrare din coloana Categorie produs
pe valori distincte')
print(df.groupby('Categorie').first())
print('Valoarea insumata pentru fiecare categorie de
produse')
print(df.groupby('Categorie')['Pret cu TVA'].sum())
print('Valoarea insumata pe produse (Produsele de ochi),
in functie de valabilitate')
print(df[df['Categorie'] == 'Produse
ochi'].groupby('Valabilitate(luni)')['Pret cu
TVA'].sum())

46
13. Prelucararea seturilor de date cu merge/join. Folosind doua seturi de date, data.csv si
data2.csv, am realizat un inner join intre acestea, avand ca si cheie comuna Denumirea
de produs. Mai departe, am afisat datele si structura fisierelor.

import pandas as pd
df = pd.read_csv('data.csv')
df1 = pd.read_csv('data2.csv')

result = pd.merge(df, df1[['Denumire produs' ,


'Pret fara TVA', 'Discount']],
on='Denumire produs')
print(result)
print('Structura fisier data.csv ', df.shape)
print('Structura fisier data2.csv ', df1.shape)
print(df['Denumire produs'].isin(df1['Denumire
produs']).value_counts())

47
14. Reprezentarea grafica cu matlplotlib.

import pandas as pd
import matplotlib.pyplot as plt
pd.set_option("display.max_columns",10)
df = pd.read_csv('data.csv')
print(df['Valabilitate(luni)'])
df['Valabilitate(luni)'].plot(kind='bar')
plt.xlabel('Denumire produs')
plt.ylabel('Pret cu TVA')
plt.show()

In graficul de mai jos am realizat analiza produselor in functie de valabilitatea acestora, dupa denumire si
afiasand pentru fiecare pretul total cu TVA.

48
15. Clusterizare folosind scikit-learn

Pe baza datelor din fisierele date3.csv care contine date despre produse si dataAngajatiLipsa.csv am
realizat clusterizarea, am identificat valorile lipsa si am efectuat analize pentru produsele si
disponibilitatea lor. Tinem cont ca in fisierul date3.csv exista coloanal In stoc ce determina prin valori de 0
si 1 daca produsul este sau nu valabil. Astfel, am urmat pasii:

• Pas 1. Import biblioteci


• import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt

• Pas 2. Citirea fișierelor și afișarea primelor 5 înregistrări


• pd.options.display.max_columns = 12
data1 = pd.read_csv('data3.csv')
data2 = pd.read_csv('dataAngajatiLipsa.csv')

print('*****produse*****')
print(data1.head())
print('*****angajati*****')
print(data2.head())

49
• Pas 3. Calcul statistici de bază
• print('*****produse_stats*****')
print(data1.describe())
print('*****angajati_stats*****')
print(data2.describe())

• Pas 4. Vizualizare denumire coloane din seturile de date și indentificare valori lipsă

• print('*****produse valori_lipsă *****')


print(data1.isna())
print('*****angajati_valori_lipsă*****')
print(data2.isna())

50
• Pas 5. Calcul număr valori lipsă pentru coloanele celor două seturi de date
• print('*****In setul de produse*****')
print(data1.isna().sum())
print("\n")
print('*****In setul de angajati*****')
print(data2.isna().sum())

51
• Pas 6. Înlocuirea valorilor lipsă cu media coloanei, utilizând funcția fillna
• data1.fillna(data1.mean(), inplace=True)
data2.fillna(data2.mean(), inplace=True)
print(data1.isna().sum())
print(data2.isna().sum())

• Pas 7. Evaluarea produselor în funcție de producator, categorie, daca sunt in stoc


• print(data1[['Producator', 'In stoc']].groupby(['Producator'],
as_index=False).mean().sort_values(by='In stoc', ascending=False))
print(data1[["Categorie", "In stoc"]].groupby(['Categorie'],
as_index=False).mean().sort_values(by='In stoc', ascending=False))

52
• Pas 8. Reprezentare grafică a coloanelor In stoc-Pret fara TVA și In stoc-Survived pe
Categorii

g = sns.FacetGrid(data1, col='In stoc')
g.map(plt.hist, 'Pret fara TVA')
grid = sns.FacetGrid(data1, col='In stoc', row='Categorie')
grid.map(plt.hist, 'Pret fara TVA')
grid.add_legend()
plt.show()

53

S-ar putea să vă placă și