Sunteți pe pagina 1din 92

Proiect Pachete Software

Compania Vagabond Style

Profesor Coordonator: Uță Ileana-Adina


Echipa: Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică
An III, Seria B, Grupa 1073
2019/2020
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Curpins

1. Descriere companie.............................................................................................................................3
2. Excel....................................................................................................................................................4
A. Funcții Financiare...............................................................................................................................4
B. Funcții Matematice, Logice, Definite de Utilizator, Matriceale, Pivot Table, Histogramă și Subtotal 5
C. Goalseek...........................................................................................................................................12
D. Scenariu............................................................................................................................................13
E. Solver................................................................................................................................................15
3. Python...............................................................................................................................................16
A. Import & export fișier .csv în pachetul pandas, accesare a datelor cu loc & iloc, tratare valori
lipsă, ștergere de coloane & înregistrări, modificare date în pachetul pandas, statistici, prelucrări
statistice, grupare și agregare a datelor în pandas, reprezentare grafică cu pachetul matplotlib,
prelucrare cu merge/ join.......................................................................................................................16
B. Utilizarea unei structuri repetitive..................................................................................................47
C. Crearea unei liste, diferența între cele 2 liste utilizând formarea celor 2 liste în seturi pentru a
permite această operație.........................................................................................................................48
D. Crearea unui dicționar și actualizarea valorilor acestuia conform unei anumite chei date.............49
E. Crearea și utilizarea de funcții.......................................................................................................50
F. Pachetele pandas și statsmodels pentru crearea și prelucrarea fișierului Excel, create 2 modele
matematice, pentru a se putea compara eficiența acestora și a se alege unul dintre ele..........................51
G. Utilizaree pachetele pandas si sklearn, datele au fost împărțite în set de testare și set de
antrenament, creare matrice de confuzie pentru a putea măsura eficiența algoritmului.........................55
4. Programare SAS....................................................................................................................................56
A. Crearea unui set de date SAS din fișiere externe, creara și folosirea de formate definite de
utilizator, generarea de grafice, procesarea condițională și iterativă a datelor, utilizarea de proceduri
pentru raportare.....................................................................................................................................56
B. Procesarea iterativă și condițională a datelor.................................................................................65
C. Crearea de subseturi de date, utilizarea de funcții SAS, combinarea seturilor de date prin proceduri
specifice SAS, folosirea de proceduri statistice.....................................................................................67
D. Combinarea seturilor de date prin proceduri specifice SAS, utilizarea de funcții SAS..................72
E. Combinarea seturilor de date prin proceduri specifice SQL...........................................................74
F. Utilizarea de masive......................................................................................................................76
5. SAS ENTERPRISE...............................................................................................................................78

2
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
A. Import fisier...................................................................................................................................78
B. Statistici descriptive+grafic...........................................................................................................79
C. RAPORT.......................................................................................................................................82
D. Document compus.........................................................................................................................83
E. Interogare tabel cu filtrare..............................................................................................................84
F. Personalizare stil............................................................................................................................86
G. Join................................................................................................................................................87
H. Format definit de utilizator............................................................................................................89
I. Folosirea parametrilor....................................................................................................................90

3
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
1. Descriere companie

Compania aleasă se numește Vagabond Style și este o firma ce vinde articole vestimentare
simple, sport, în trend. Aceasta este deschisă de curând, având doar 5 ani pe piață, are prețuri
accesibile și are ca public țintă persoanele cu un buget mediu, cu vârste cuprinse între 12 și 30 de
ani.

2. Excel

A. Funcții Financiare

1. Descriere problemă: Pentru a cumpăra o nouă locație în București, care se consideră că va


determina un venit anual în următorii 6 ani de 42600€, firma este nevoită să apeleze la un credit
bancar. Cea mai mică dobândă aleasă prin studiul de piață al angajaților este de 8.31% pe an.
Care este prețul maxim pe care îl poate avea locația aleasă de firmă, dacă acesta va fi plătit
integral din veniturile pe care se presupune că le va aduce, dacă se ia în considerare doar prețul
achiziției, fără întreținere lunară sau alte facilități?
Informații necesare pentru rezolvare:
Plata anuală 42600
Rata dobânzii anuală 8.31%
Numărul de perioade (ani) 6
Produs Software folosit: Microsoft Excel
Funcția folosită: PV – valoarea actuală a împrumutului făcut pentru achiziția locației
Interpretare rezultat: Rezultatul este -195096.26€ ceea ce înseamnă faptul că prețul maxim
pe care îl poate avea locația este de 195096.26€, în condițiile în care aceasta va fi plătită exclusiv
din veniturile pe care le va aduce.

2. Descriere problemă: Firma dorește să economisească bani sub formă de provizioane pentru a
preveni situațiile neprevăzute sau pentru a fructifica oportunitățile posibile din viitor. Astfel, se

4
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
face un depozit de 700€, cu o rată anuală a dobânzii de 5% cu plata lunară, și se depun lunar
150€ timp de 2 ani. Să se afle suma din cont de la sfârșitul perioadei de 2 ani.
Informații necesare pentru rezolvare:
Depozit 700
Rata dobânzii anuală 5%
Suma depusă pe lună 150
Număr de perioade (ani) 2
Produs Software folosit: Microsoft Excel
Funcția folosită: FV
Interpretare rezultat: Rezultatul este -4551.35€, adică suma existentă în cont la finalul
perioadei de 2 ani este de 4551.35€.

3. Descriere problemă: Firma investește 5300€ într-un nou tip de haine, sacouri bărbătești, iar
peste un an, această investiție aduce venituri în următorii 5 ani consecutivi, de 1000€, 2000€,
2300€, 4000€ și, respectiv, 5000€. Care este valoarea prezentă netă a investiției, știind că rata
anuală a inflației este de 7%?
Informații necesare pentru rezolvare:
Investiție inițială 5300
Venit An 1 1000
Venit An 2 2000
Venit An 3 2300
Venit An 4 4000
Venit An 5 5000
Rata anuală a inflației 7%
Produs Software folosit: Microsoft Excel
Funcția folosită: NPV
Interpretare rezultat: Rezultatul este 5491.08€, ceea ce înseamnă că valoarea prezentă netă a
investiției este de 5491.08€.

5
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
B. Funcții Matematice, Logice, Definite de Utilizator, Matriceale, Pivot Table,
Histogramă și Subtotal

4. Descriere problemă: În depozitul firmei se află produse ce urmează a fi livrate în locațiile


existente pentru vânzare. Se cunoaște despre acestea: denumirea produsului (coloana Produs),
culoarea produsului (Culoare), genul pentru care articolul de îmbrăcăminte este destinat (Gen,
unde M= masculin, F= feminin), cantitatea aflată în depozit din acest produs (Cantitate,
exprimată în bucăți), costul de producție pentru un singur articol din categoria menționată
(Cost_productie, exprimat în RON), iar în alt tabel se găsește Adaosul comercial ce se dorește
pentru aceste produse, în funcție de costul de producție, urmând să fie calculat și fiind considerat
pe intervale:
Adaosul comercial
Dacă costul de producție este între 20 și 30 LEI, adaosul va fi 200%
Dacă costul de producție este între 30 și 40 LEI, adaosul va fi 205%,
Dacă costul de producție este între 40 și 80 LEI, adaosul va fi 195%,
Dacă costul de producție este între 80 și 90 LEI, adaosul va fi 190%,
Dacă costul de producție este între 90 și 130 LEI, adaosul va fi 185%,
Dacă costul de producție este între 130 și 140 LEI, adaosul va fi 180%,
Dacă costul de producție este între 140 și 150 LEI, adaosul va fi 175%,
Dacă costul de producție este peste 150 LEI, adaosul va fi 170%.
Se cere:
a) adaosul pentru fiecare tip de produse, în condițiile descrise mai sus;
b) prețul produselor (suma între cost și adaos);
c) discountul acordat în zilele speciale pentru fiecare produs, în funcție de preț, culoare și gen,
astfel:
Dacă prețul este mai mare de 400 LEI pentru un singur produs din acea categorie, va avea
discount de 23%,
Dacă culoarea produsului e ‘negru’ și acesta este destinat bărbaților, va avea discount de 15%,
Dacă culoarea produsului e ‘alb’ și acesta este destinat femeilor, va avea discount de 10%,
În rest, nu discountul va avea valoarea 0%.

6
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
d) Să se determine tipul cantității din fiecare categorie de produs (mare sau mica), astfel: dacă
în depozit sunt mai mult de 1500 de produse, se consideră cantitatea ca fiind mare, altfel, se
consideră mică.
e) prețul final, calculat cu Discount determinat la punctul b).
f) venitul total calculat pe fiecare categorie de produs, compus din elementele: cantitate și
prețul final determinat la punctul d). Acesta este calculat cu prețul de la reducere și nu cu cel
initial pentru a calcula venitul minim posibil pe care il poate obtine firma.
g) un Pivot Table prin care să se afle, pe sexe, venitul total (de la punctul e)) calculat pe
fiecare denumire de produs.
h) un grafic de tipul Histograma în care să se reprezinte cantitatea fiecărui produs din depozit,
împărțită pe sexe. Se cere ca acest grafic să aibă labels.
i) subtotalul venitului total pe tipul de produs din depozit.
Informații necesare pentru rezolvare:
Produs Culoare Gen Cantitate Cost_productie
Tricou clasic negru M 9500 31.2
Tricou anchior negru M 3333 44.44
Tricou clasic negru F 7865 27.33
Tricou anchior alb F 4876 33.99
Pantalon bumbac negru M 1111 68.77
Pantalon bumbac negru F 1243 65.33
Hanorac alb M 566 89.78
Hanorac alb F 762 80.22
Hanorac negru M 872 99.78
Hanorac negru F 999 97.4
Adidasi negru M 546 134.89
Adidasi alb F 555 145.62
Adidasi negru F 2812 150.33
Adidasi alb M 3456 147.61

Adaos
20 200%
30 205%
40 195%
80 190%
90 185%
130 180%
140 175%
150 170%

7
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Produs Software folosit: Microsoft Excel


Funcțiile folosite: Pivot Table, Pie Chart, VLOOKUP (matriceala), SUM și ROUND
(matematice), IF (logica), Discount (definita de utilizator), astfel:
Function Discount(pret, culoare, gen)
If pret > 400 Then
Discount = 23
Else
If culoare = "negru" And gen = "M" Then
Discount = 15
Else
If culoare = "alb" And gen = "F" Then
Discount = 10
Else
Discount = 0
End If
End If
End If
End Function

Interpretare rezultat:
a) Pentru a calcula coloana de adaos pentru fiecare produs, am folosit funcția
VLOOKUP(Cost_Productie, Tabelul de Adaos, 2 – pt coloana a doua din tabel). Rezultatul de
mai jos este coloana nouă adaugată tabelului inițial și arată ce adaos s-a ales pentru fiecare
produs, astfel, un adaos de 205% pentru produsul Tricou clasic negru bărbătesc înseamnă faptul
că prețul său din raft va fi costul de producție al articolului+205%*costul de producție al
articolului.
Ada
os
205
%
195
%
200
%
205
%
195
%
195
%
190
%
190

8
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
%
185
%
185
%
180
%
175
%
170
%
175
%

b) Prețul produselor a fost calculat cu formula: SUM(Cost_Productie,


Adaos*Cost_Productie). Rezultatul de mai jos este exprimat în RON și valoarea 95.16 înseamnă
faptul că Tricou clasic negru bărbătesc va avea prețul în magazin de 95.16 RON, dacă nu este o
zi cu reducere.
Pret
95.16
131.098
81.99
103.669
5
202.871
5
192.723
5
260.362
232.638
284.373
277.59
377.692
400.455
405.891
405.927
5

c) Pentru calcularea discountului, am definit o nouă funcție numită Discount, al cărui cod l-am
atașat la secțiunea Funcții folosite și a fost calculat după cerințele din enunț. Astfel, din această
coloană reiese faptul că Tricoul clasic negru bărbătesc are discount de 15% pentru că este articol

9
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
destinat persoanelor de gen masculin și este de culoare neagră. Pe când Tricoul clasic negru
pentru femei nu prezintă discount deoarece nu îndeplinește nicio condiție.
Discou
nt
15%
15%
0%
10%
15%
0%
0%
10%
15%
0%
15%
23%
23%
23%

d) Tipul cantității de produs s-a calculat cu ajutorul funcției logice


IF(Cantitate>1500,”mare”,”mica”), așa cum cere enunțul. Astfel, tipul cantității mare
demonstreaza faptul că numărul de bucăți de articol din tipul respectiv depășește valoarea de
1500 de bucăți.
Tip_Cantita
te
mare
mare
mare
mare
mica
mica
mica
mica
mica
mica
mica
mica
mare
mare

10
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
e) Prețul final este calculat prin formula ROUND(Pret-Pret*Discount,2). Rezultatul este
exprimat în RON, iar din tabel reiese faptul că un hanorac alb pentru femei are prețul în zilele de
reducere de 209.37 RON, pe când adidașii negri pentru femei, deoarece depășeșc prețul inițial de
400 RON, au prețul redus la 312.54 RON.
Pret_fin
al
80.89
111.43
81.99
93.3
172.44
192.72
260.36
209.37
241.72
277.59
321.04
308.35
312.54
312.56

f) Venitul total este calculat prin formula Cantitate*Pret_final și este exprimat în RON. Astfel,
se consideră că venitul minim care poate fi obținut din vânzarea întregii cantități de Pantaloni de
bumbac negri de femei este de 239550.96 RON.
Venit total
768455
371396.19
644851.35
454930.8
191580.84
239550.96
147363.76
159539.94
210779.84
277312.41
175287.84
171134.25
878862.48
1080207.3
6

11
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
g) S-a realizat un Pivol Table care a determinat, pe sexe, venitul total al fiecărei denumiri de
produs. Astfel, se consideră că produsele femeiești ar aduce un venit minim total de 2826182.19
RON, pe când cele bărbătești ar aduce unul de 2945070.83 RON, fiind o diferență de 118888.64
RON în favoarea celor bărbătești. Venitul minim total obținut din vânzarea tuturor produselor
aflate în depozit este 5771253.02 RON. De asemenea, din vânzarea adidașilor de femei, negri și
albi, se obține venitul de 1049996.73 RON, din cea a tricourilor cu anchior bărbătești se obțin
371396.19 RON, iar din vânzarea tuturor hanoracelor de femei și de bărbați, negre și albe, se
obțin 794995.95 RON.
Sum of Venit total Column Labels
Row Labels F M Grand Total
Adidasi 1049996.73 1255495.2 2305491.93
Hanorac 436852.35 358143.6 794995.95
Pantalon bumbac 239550.96 191580.84 431131.8
Tricou anchior 454930.8 371396.19 826326.99
Tricou clasic 644851.35 768455 1413306.35
Grand Total 2826182.19 2945070.83 5771253.02

h) S-a creat o histograma cu valorile cerute, din care reiese faptul că sunt 7369 bucăți de
adidași, dintre care 4002 masculini și 2267 feminini.

Cantitatea fiecărui Produs pe Sexe

20000
18000
16000
14000
12000 9500
10000
8000
6000 3333
4002
4000 7865
2000 1438 1111 4876
3367 1761 1243
0
Adidasi Hanorac Pantalon Tricou anchior Tricou clasic
bumbac

M F

i) Pentru calculul subtotalului venitului total pe tipul de produs, în Sheetul B. (2) am adăugat o
nouă coloană Venit total numeric, unde am transformat coloana Venit total în valori numerice.

12
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Se observă din rezultat faptul că venitul total pentru tipul de produs Tricou clasic este de
1413306.35 RON, iar al tipului de produs Tricou anchior este de 826326.99 RON. Pentru fiecare
tip de produs, venitul total ce poate fi obținut din vânzarea întregii cantități din depozit este în
tabel. De asemenea, observăm și venitul total obținut din vânzarea întregii cantități a tuturor
tipurilor de produs din depozit care are valoarea de 5771253.02 RON.

C. Goalseek

5. Descriere problemă: Firma dorește să stabilească un nou nivel salarial pentru angajații săi,
pentru a se adapta nivelului mediu de salarizare din piață. Astfel, există 2 posibilități de atingere
a unui anumit prag salarial: creșterea comisionului sau creșterea nivelului salarizării brute.
Comisionul reprezintă un procent ce se adaugă salariului brut, în cazul atingerii unui anumit
nivel de vânzări lunare.
Informații necesare pentru rezolvare:

Tip angajat Salariu brut Comisio Salariu net Impozit 10%


n venit

Vanzator 3000 3% 1699,5 CASS 10%

Visual Merchandiser 3500 4% 2002 CAS 25%

Asistent manager 5000 5% 2887,5

Manager 5700 6% 3323,1


Produs Software folosit: Microsoft Excel
Funcția folosită: Goal Seek

13
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Interpretare rezultat: Pentru ca un manager să aibă un salariu de 4500 de lei, acesta ar trebui
să aibă fie un salariu brut de 7718,69 lei, fie un comision de 44%. Acest comision este mult prea
mare, astfel se impune creșterea salariului brut.

D. Scenariu

6. Descriere problemă: Firma dorește să estimeze care ar fi noile valori ale salariului net pentru
angajații săi, în cazul în care ar fi scutiți de la plata impozitului pe venit pe o perioadă de 1 an.
Aceasta este o propunere a Ministerului de Finanțe, pentru a limita impactul economic al
epidemiei de Covid-19.
Informații necesare pentru rezolvare:

Tip angajat Salariu brut Comisio Salariu net Impozit 10%


n venit

Vanzator 3000 3% 1699,5 CASS 10%

Visual Merchandiser 3500 4% 2002 CAS 25%

Asistent manager 5000 5% 2887,5

Manager 5700 6% 3323,1


Produs Software folosit: Microsoft Excel
Funcția folosită: Scenario
Interpretare rezultat: Acestea sunt noile valori ale salariului net. Observăm o creștere
semnificativă a nivelului salariului net.
Salariu net

14
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
2008,5
2366
3412,5
3927,3

E. Solver

7. Descriere problemă: Firma doreste sa efectueaze comanda stocului pentru magazinul din
Unirii pentru saptamana urmatoare. Managerul se confrunta cu 2 restrictii in ceea ce priveste
comanda: fiecare produs ocupa o anumita marime pe raft, spatiul total ce poate fi utilizat fiind de
450 de m2; de asemenea, fiecare produs implica un anumit cost de livrare, ce nu trebuie sa
depaseasca 10000 de lei. Trebuie maximizate vanzarile obtinute, pretul pentru fiecare unitate
fiind: 130 de lei pentru un tricou, 210 lei pentru o pereche de pantaloni, 250 de lei pentru un
hanorac si 300 de lei pentru adidasi.
Informații necesare pentru rezolvare:

Tip angajat Salariu brut Comisio Salariu net Impozit 10%


n venit

Vanzator 3000 3% 1699,5 CASS 10%

Visual Merchandiser 3500 4% 2002 CAS 25%

Asistent manager 5000 5% 2887,5

Manager 5700 6% 3323,1

15
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Produs Software folosit: Microsoft Excel
Funcția folosită: Solver
Interpretare rezultat: Managerul va trebui sa comande 274 de tricouri si 88 de hanorace
pentru a maximiza vanzarile.
Produs Spatiu Cost
ocupat transpor
t
Tricou 1 30 Tricou 274
Pantalon 2 40 Pantalon 0
i i
Hanorac 2 20 Hanorac 88
Adidasi 3 35 Adidasi 0
Folosit 450 9980 Tricou Pantalon Hanorac Adidasi
i
Maxim 450 10000
Vanzari 35620 0 22000 0
Vanzari 57620
totale

3. Python

A. Import & export fișier .csv în pachetul pandas, accesare a datelor cu loc &
iloc, tratare valori lipsă, ștergere de coloane & înregistrări, modificare date
în pachetul pandas, statistici, prelucrări statistice, grupare și agregare a
datelor în pandas, reprezentare grafică cu pachetul matplotlib, prelucrare cu
merge/ join

1. Descriere problemă: Firma implementează un program ce permite comanda online și


transportul în țara și în București, la domiciliul clientului, colaborând cu 3 firme de transport.
Clientul este scutit de tot costul transportului, dacă comanda depășește 300 lei, sau este scutit de
jumătate din costul transportului, dacă comanda depășește 200 lei. Costul de transport se
calculează în funcție de județul în care se livrează comanda, comunicându-se online clientului
înainte de a plasa comanda. În fisierul "Livrari.csv" se află ultimele livrări realizate de firmă în
țară și în București la domiciliul clientului.
Variabilele (Coloanele) din fișierul Livrari.csv sunt următoarele:
Cod_livrare – cod unic pentru fiecare înregistrare;

16
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Judet - județul unde a avut loc livrarea;
Data (DD/LL/YYY) - data la care a avut loc livrarea;
Firma_transport - firma de transport care a realizat livrarea, există doar 4 care colaborează
Vagabond Style: FanCurier, Cargus, Sameday și Porumbelul.
Nume_sofer - angajatul de la firma de transport care a livrat comanda clientului;
Nr_tel_sofer - numărul de telefon al angajatului de la firma de transport;
Nume_client - numele clientului care a plasat comanda;
Adresa_client - adresa clientului care a plasat comanda;
Numar_produse (bucăți) - numărul de produse livrate în comandă;
Greutate (kg) - greutatea în kilograme a pachetului livrat;
Pret (lei) - prețul comenzii achitat de client la momentul livrării sau înainte (prin metode online).
a) Să se importe acest fișier de tip csv și să se scoată rândurile ce conțin valori lipsă pentru
cloanele de tip ”string” sau dată, iar pentru cele de tip int sau float să se înlocuiască valorile lipsă
cu media variabilei. De asemenea, să se șteargă coloana Număr produse, deoarece nu prezintă
interes pentru rezolvarea următoarelor cerințe ale conducerii firmei. Să se salveze fișierul
modificat cu denumirea ”Livrare2.csv”. În continuare, pentru rezolvarea subpunctelor următoare,
se va folosi tabelul modificat din fișierul ”Livrare2.csv”.
b) Să se creeze o coloană nouă care să conțină costul de transport pe care îl are de plătit firma
și să se salveze această coloană în fișierul curent, ”Livrari2.csv”, având în vedere faptul că dacă
prețul comenzii clientului depășește 300 lei, firma achită întreg costul de transport, dacă
comanda clientului depășește 200 lei, firma achită jumătate din costul de transpot, altfel, costul
este achitat de catre client, adică firma nu plătește transportul deloc. Costurile de transport în
funcție de județ sunt:
Pentru București, Teleorman, Prahova: 10 lei.
Pentru Constanța, Bacău, Giurgiu, Brăila, Iași: 20 lei.
Pentru restul județelor: 35 lei.
Firma dorește să afle care este profitul cel mai mare obținut de firmă într-o livrare, care este
profitul total obținut de firmă, costul total de transport total
c) Să se afle profitul obținut de firmă pentru fiecare înregistrare și să se adauge o coloană cu
acesta în tabelul din “Livrari2.csv”, dacă se consideră profitul ca fiind diferența dintre Prețul
comenzii obținut de firmă după livrare și Costul de transport plătit de firmă, din coloana de la b).

17
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Firma dorește să afle care este profitul CEL MAI MARE obținut de aceasta într-o singură livrare,
care este profitul TOTAL obținut în aceste 100 de livrări, care este costul TOTAL de transport și
care este plaja de valori pentru greutatea coletelor, cât și valoarea medie a greutății unui colet.
d) Să se afișeze tabelul ordonat în ordine cronologică (crescător în funcție de variabila Data).
e) Firma dorește să știe:
I. în ce județ au avut loc cele mai multe livrări din ultimele 100 și câte au avut loc în județul
respectiv
II. ce profit s-a obținut din aceste livrări pe fiecare județ
III. pentru fiecare companie de curierat, firma dorește să știe: costul de transport plătit în total
pentru aceste 100 livrări, media costului de transport, prima zi în care a avut loc livrarea prin
aceasta companie, cât și prima zi care se regăsește înregistrată în tabel, primul nume de client
înregistrat căreia compania de transport i-a livrat produse Vagabond Style și media greutății
coletelor livrate de această companie
IV. numărul de livrări efectuate de către fiecare companie de curierat pentru fiecare
lună
f) Costul de transport însumat pentru fiecare lună reprezentat într-un grafic cu bare și profitul
însumat obținut de firma noastră pentru livrările realizare de firma Porumbelul pe judet
reprezentat într-un grafic pie.
g) În tabelul "Soferi.csv" există informații despre șoferii care livrează coletele firmei
Vagabond Style. Aceștia sunt angajați la firmele de curierat, de aceea se dorește să se creeze
fișierul ”Livrari3.csv” care să conțină toate informațiile din ”Livrari2.csv”, dar și informațiile
despre acești șoferi din fișierul ”Soferi.csv” în funcție de Cod_livrare. Să se creeze și fișierul
”Soferi2.csv” care să conțină firma la care lucrează șoferul respectiv, clientul căruia a livrat
pachetul, adresa clientului și restul informațiilor din ”Soferi.csv”, pe baza coloanei Cod_livrare
care se găsește în ambele tabele.

a) Informații necesare pentru rezolvare: Tabelul “Livrari.csv” care conține cele 103
înregistrări curente și coloanele menționate în cerință.
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
1. Importul și exportul unui fișier csv în pachetul pandas (folosind pd.read_csv() și to_csv())

18
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
2. Accesarea datelor cu loc și iloc (pentru vizualizarea datelor și verificarea lor, s-a făcut pe
parcurs)
3. Tratarea valorilor lipsă (prin ștergere, folosind dropna(), și înlocuirea cu media coloanei
respective, folosind fillna())
4. Ștergerea de coloane și înregistrări (folosind drop())
Rezolvarea:
1. Pentru importul fișierului ”Livrari.csv” am utilizat codul:
import pandas as pd
pd.set_option('display.max_columns', None)
path='C:/Users/Diana/Desktop/proiect/'
ex1=pd.read_csv(path+'Livrari.csv')
print(ex1.head(10))
print("-"*40)

Rezultatul obținut după rulare este:


Cod_livrare Judet Data Firma_transport Nume_client \
0 100 Mehedinti 9/1/2020 FanCurier Bucescu Marian
1 101 Vrancea 6/1/2020 Porumbelul Popescu Titus
2 102 Suceava 12/2/2020 Porumbelul Vasile Eleonora
3 103 Teleorman 18/12/2019 SameDay Marisan Florica
4 104 Bacau 10/1/2020 FanCurier Manzat Aurelia
5 105 Arad 11/1/2020 Cargus Giovanni Alina
6 106 Teleorman 13/1/2020 FanCurier Bomboana Mircea
7 107 Giurgiu 10/2/2020 FanCurier Branescu Bianca
8 108 Bucuresti 18/12/2019 FanCurier Vitelariu Anca
9 109 Alba 19/12/2019 Porumbelul Predescu Marcela
Adresa_client Numar_produse Greutate Pret
0 Str. Dorneanu, 7 3 3.0 900.0
1 Str. Crizantemei, 72 1 0.7 111.0
2 Str. Mihail Sadoveanu, 30 1 0.3 300.0
3 Str. Nil, 65 1 0.3 260.0
4 Str. Oita, 4 5 4.0 555.0
5 Str. Minerva, 7 7 5.5 559.0
6 Str. Izbandei, 65 4 3.2 372.0
7 Str. Luceafarului, 90 2 0.6 222.0
8 Str. Oitei, 2 2 0.6 222.0
9 Str. Ion Albulescu, 56 2 0.9 186.0
----------------------------------------
[Finished in 0.6s]

19
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

2. și 3. Pentru tratarea valorilor lipsă și îndeplinirea cerinței, mai întâi am verificat dacă există
valori lipsă, apoi am înlocuit valorile lipsă de pe coloanele de tip numeric cu media de pe
coloana pe care se afla valoarea lipsă respectivă, lăsându-le pe cele de pe coloane string la final,
pentru a putea elimina complet înregistrarea din tabel:

#verificam daca exista valori lipsa in tabel pentru fiecare coloana


print(ex1.loc[ex1['Cod_livrare'].isnull()]) #nu exista
print("-"*40)
print(ex1.loc[ex1['Judet'].isnull()]) #exista o singura valoare nula pe coloana Judet pe randul 13
print("-"*40)
print(ex1.loc[ex1['Data'].isnull()]) #nu exista valori nule pe coloana Data
print("-"*40)
print(ex1.loc[ex1['Firma_transport'].isnull()]) #nu exista valori nule pe coloana Firma_transport
print("-"*40)
print(ex1.loc[ex1['Nume_client'].isnull()]) #nu exista valori nule pe coloana Nume_client
print("-"*40)
print(ex1.loc[ex1['Adresa_client'].isnull()]) #exista o singura valoare nula pe coloana Adresa_Client pe
randul 88
print("-"*40)
print(ex1.loc[ex1['Numar_produse'].isnull()]) #nu exista valori nule pe coloana Numar_produse
print("-"*40)

20
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
print(ex1.loc[ex1['Greutate'].isnull()]) #exista 2 valori nule pe coloana Greutate pe randurile 55 si 86
print("-"*40)
print(ex1.loc[ex1['Pret'].isnull()]) #exista o singura valoare nula pe coloana Pret pe randul 31
print("-"*40)
#inlocuim celulele lipsa de pe coloanele Greutate si Pret cu media de pe coloana din care fac parte
medieGreutate=float(round(ex1['Greutate'].mean(),2))
mediePret=float(round(ex1['Pret'].mean(),2))
ex1['Greutate']=ex1['Greutate'].fillna(value=medieGreutate)
ex1['Pret']=ex1['Pret'].fillna(value=mediePret)
#verificam daca pe coloanele Greutate si Pret mai exista valori lipsa
print("Media variabilei Greutate este "+ str(medieGreutate))
print("Media variabilei Pret este "+ str(mediePret))
print(ex1.iloc[55,:])
print(ex1.iloc[86,:])
print(ex1.iloc[31,:])
#stergem randurile cu valori lipsa din coloanele Judet si Adresa_Client
ex1_2=ex1[:].dropna()
print(ex1_2.iloc[80:90,:])

Rezultatul obținut după rulare este:


Empty DataFrame
Columns: [Cod_livrare, Judet, Data, Firma_transport, Nume_client, Adresa_client, Numar_produse, Greutate,
Pret]
Index: []
----------------------------------------
Cod_livrare Judet Data Firma_transport Nume_client Adresa_client \
13 113 NaN 17/1/2020 FanCurier Iliou Irina Str. Alb, 9

Numar_produse Greutate Pret


13 3 1.6 1112.0
----------------------------------------
Empty DataFrame
Columns: [Cod_livrare, Judet, Data, Firma_transport, Nume_client, Adresa_client, Numar_produse, Greutate,
Pret]
Index: []
----------------------------------------
Empty DataFrame
Columns: [Cod_livrare, Judet, Data, Firma_transport, Nume_client, Adresa_client, Numar_produse, Greutate,
Pret]
Index: []
----------------------------------------
Empty DataFrame
Columns: [Cod_livrare, Judet, Data, Firma_transport, Nume_client, Adresa_client, Numar_produse, Greutate,
Pret]
Index: []
----------------------------------------

21
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Cod_livrare Judet Data Firma_transport Nume_client \
88 188 Arges 6/1/2020 Porumbelul Esvescu Marian

Adresa_client Numar_produse Greutate Pret


88 NaN 4 3.7 1200.0
----------------------------------------
Empty DataFrame
Columns: [Cod_livrare, Judet, Data, Firma_transport, Nume_client, Adresa_client, Numar_produse, Greutate,
Pret]
Index: []
----------------------------------------
Cod_livrare Judet Data Firma_transport Nume_client \
55 155 Teleorman 11/1/2020 FanCurier Geolgau Lenuta
86 186 Calarasi 11/1/2020 Cargus Georgescu Camil

Adresa_client Numar_produse Greutate Pret


55 Str. Gheorgheni, 4 3 NaN 780.0
86 Str. Buzaului, 18 4 NaN 372.0
----------------------------------------
Cod_livrare Judet Data Firma_transport Nume_client \
31 131 Ilfov 7/2/2020 Porumbelul Popescu Flavia

Adresa_client Numar_produse Greutate Pret


31 Str. Faurei, 19 1 0.5 NaN
----------------------------------------
Media variabilei Greutate este 1.84
Media variabilei Pret este 538.55
Cod_livrare 155
Judet Teleorman
Data 11/1/2020
Firma_transport FanCurier
Nume_client Geolgau Lenuta
Adresa_client Str. Gheorgheni, 4
Numar_produse 3
Greutate 1.84
Pret 780
Name: 55, dtype: object
Cod_livrare 186
Judet Calarasi
Data 11/1/2020
Firma_transport Cargus
Nume_client Georgescu Camil
Adresa_client Str. Buzaului, 18
Numar_produse 4
Greutate 1.84
Pret 372

22
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Name: 86, dtype: object
Cod_livrare 131
Judet Ilfov
Data 7/2/2020
Firma_transport Porumbelul
Nume_client Popescu Flavia
Adresa_client Str. Faurei, 19
Numar_produse 1
Greutate 0.5
Pret 538.55
Name: 31, dtype: object
Cod_livrare Judet Data Firma_transport Nume_client \
81 181 Bacau 7/2/2020 Cargus Dandanele Andrei
82 182 Cluj 28/12/2019 FanCurier Papuc Alex
83 183 Cluj 9/1/2020 FanCurier Apostolache Vicentiu
84 184 Calarasi 17/1/2020 Cargus Jincu Florin
85 185 Braila 28/12/2019 SameDay Jules Bianca
86 186 Calarasi 11/1/2020 Cargus Georgescu Camil
87 187 Braila 28/12/2019 SameDay Drop Felicia
89 189 Braila 7/2/2020 Cargus Cristescu Olivia
90 190 Iasi 11/1/2020 SameDay Vlad Madalina
91 191 Satu Mare 28/12/2019 Porumbelul Felea Diandra

Adresa_client Numar_produse Greutate Pret


81 Str. Popescu, 1B 1 0.50 111.0
82 Str. Rarau, 8 1 0.30 93.0
83 Str. Obor, 29 1 0.30 93.0
84 Str. Liliacului, 86 1 0.30 93.0
85 Str. Floriilor, 43 4 3.60 1200.0
86 Str. Buzaului, 18 4 1.84 372.0
87 Str. Mihail Sadoveanu, 65 4 3.60 444.0
89 Str. Diaconu, 77 3 2.80 333.0
90 Str. Ramagas, 9 2 0.60 600.0
91 Str. Haului, 3 4 3.20 372.0
[Finished in 0.6s]

4. Pentru ștergerea coloanei ”Numar_produse” și salvarea tabelului în fișierul ”Livrari2.csv” cu


modificările făcute am folosit codul:
#stergem colona Numar_produse
ex1_3=ex1_2.drop("Numar_produse",axis=1)
#verificam daca a fost stearsa
print(ex1_3.iloc[0:10,:])
#salvam un fisier nou numit "Livrari2.csv" cu modificarile realizate si verificam cate inregistrari are si
daca are valori lipsa
ex1_3.to_csv(path+'Livrari2.csv', index = False)

23
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
print(len(open(path+'Livrari2.csv').readlines()), 'linii in fisierul Livrari2.csv (cu tot cu headerul
inclus).')
ex1_4=pd.read_csv(path+'Livrari2.csv')
print(ex1_4.head(10))

Rezultatul obținut după rulare:


Cod_livrare Judet Data Firma_transport Nume_client \
0 100 Mehedinti 9/1/2020 FanCurier Bucescu Marian
1 101 Vrancea 6/1/2020 Porumbelul Popescu Titus
2 102 Suceava 12/2/2020 Porumbelul Vasile Eleonora
3 103 Teleorman 18/12/2019 SameDay Marisan Florica
4 104 Bacau 10/1/2020 FanCurier Manzat Aurelia
5 105 Arad 11/1/2020 Cargus Giovanni Alina
6 106 Teleorman 13/1/2020 FanCurier Bomboana Mircea
7 107 Giurgiu 10/2/2020 FanCurier Branescu Bianca
8 108 Bucuresti 18/12/2019 FanCurier Vitelariu Anca
9 109 Alba 19/12/2019 Porumbelul Predescu Marcela

Adresa_client Greutate Pret


0 Str. Dorneanu, 7 3.0 900.0
1 Str. Crizantemei, 72 0.7 111.0
2 Str. Mihail Sadoveanu, 30 0.3 300.0
3 Str. Nil, 65 0.3 260.0
4 Str. Oita, 4 4.0 555.0
5 Str. Minerva, 7 5.5 559.0
6 Str. Izbandei, 65 3.2 372.0
7 Str. Luceafarului, 90 0.6 222.0
8 Str. Oitei, 2 0.6 222.0
9 Str. Ion Albulescu, 56 0.9 186.0
101 linii in fisierul Livrari2.csv (cu tot cu headerul inclus).
Cod_livrare Judet Data Firma_transport Nume_client \
0 100 Mehedinti 9/1/2020 FanCurier Bucescu Marian
1 101 Vrancea 6/1/2020 Porumbelul Popescu Titus
2 102 Suceava 12/2/2020 Porumbelul Vasile Eleonora
3 103 Teleorman 18/12/2019 SameDay Marisan Florica
4 104 Bacau 10/1/2020 FanCurier Manzat Aurelia
5 105 Arad 11/1/2020 Cargus Giovanni Alina
6 106 Teleorman 13/1/2020 FanCurier Bomboana Mircea
7 107 Giurgiu 10/2/2020 FanCurier Branescu Bianca
8 108 Bucuresti 18/12/2019 FanCurier Vitelariu Anca
9 109 Alba 19/12/2019 Porumbelul Predescu Marcela

Adresa_client Greutate Pret


0 Str. Dorneanu, 7 3.0 900.0
1 Str. Crizantemei, 72 0.7 111.0
2 Str. Mihail Sadoveanu, 30 0.3 300.0
3 Str. Nil, 65 0.3 260.0

24
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
4 Str. Oita, 4 4.0 555.0
5 Str. Minerva, 7 5.5 559.0
6 Str. Izbandei, 65 3.2 372.0
7 Str. Luceafarului, 90 0.6 222.0
8 Str. Oitei, 2 0.6 222.0
9 Str. Ion Albulescu, 56 0.9 186.0
[Finished in 0.7s]

Interpretare rezultat: Rezultatul obținut se găsește în ”Livrari2.csv” obținut în urma rulării


întregului program. Acest subpunct a fost realizat pentru o mai bună vizualizare a datelor, astfel
încât putem spune că tabelul conține 100 înregistrări (deoarece are 101 linii, dintre care 1 este
headerul) și 8 coloane, reprezentând informații despre ultimele 100 de livrări realizate de firma
Vagabond Style către clienți, prin colaborare cu firmele de curierat. Acestea sunt datele pregătite
pentru a extrage informații mai departe din acesta pentru beneficiul firmei.

b) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul a).
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Modificarea datelor în pachetul pandas

25
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Rezolvarea:
Pentru crearea noii coloane ”Cost_transport” am utilizat codul:
import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex2=pd.read_csv(path+'Livrari2.csv')

ex2.loc[:,'Cost_transport']=35

ex2.loc[(ex2["Judet"].isin(['Bucuresti','Teleorman','Prahova'])),'Cost_transport']=10

ex2.loc[(ex2["Judet"].isin(['Constanta','Bacau','Giurgiu','Braila','Iasi'])),'Cost_transport']=20

ex2.loc[(ex2['Pret']>200),'Cost_transport']/=2

ex2.loc[(ex2['Pret']<=200), 'Cost_transport']=0

print(ex2.iloc[1:20,0:10])

ex2.to_csv(path+'Livrari2.csv', index = False)

Rezultatul obținut după rulare:


Cod_livrare Judet Data ... Greutate Pret Cost_transport

1 101 Vrancea 6/1/2020 ... 0.7 111.0 0.0

2 102 Suceava 12/2/2020 ... 0.3 300.0 17.5

3 103 Teleorman 18/12/2019 ... 0.3 260.0 5.0

4 104 Bacau 10/1/2020 ... 4.0 555.0 10.0

5 105 Arad 11/1/2020 ... 5.5 559.0 17.5

6 106 Teleorman 13/1/2020 ... 3.2 372.0 5.0

7 107 Giurgiu 10/2/2020 ... 0.6 222.0 10.0

8 108 Bucuresti 18/12/2019 ... 0.6 222.0 5.0

9 109 Alba 19/12/2019 ... 0.9 186.0 0.0

10 110 Constanta 10/1/2020 ... 0.5 300.0 10.0

11 111 Buzau 17/1/2020 ... 0.3 111.0 0.0

12 112 Valcea 11/1/2020 ... 3.3 1500.0 17.5

13 114 Mures 12/1/2020 ... 3.2 372.0 17.5

14 115 Cluj 12/1/2020 ... 3.2 1200.0 17.5

15 116 Bistrita-Nasaud 13/1/2020 ... 7.0 2800.0 17.5

16 117 Dambovita 6/1/2020 ... 8.0 2633.0 17.5

17 118 Prahova 6/1/2020 ... 2.8 900.0 5.0

18 119 Bucuresti 6/1/2020 ... 1.0 600.0 5.0

19 120 Covasna 11/1/2020 ... 2.0 1200.0 17.5

26
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
[19 rows x 9 columns]

[Finished in 1.0s]

Interpretare rezultat: Rezultatul obținut arată cât a plătit firma noastră pentru fiecare livrare.
Astfel încât, observăm faptul că pentru livrarea cu codul 114, firma a plătit suma de 17.5 lei.

c) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul b).
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Modificarea datelor în pachetul pandas
Statistici
Rezolvarea:
Pentru crearea noii coloane ”Profit” am utilizat codul:
import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

27
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
ex3=pd.read_csv(path+'Livrari2.csv')

ex3.loc[:,'Profit']=ex3.loc[:,'Pret']-ex3.loc[:,'Cost_transport']

print(ex3.iloc[1:20,0:11])

ex3.to_csv(path+'Livrari2.csv', index = False)

Rezultatul obținut după rulare:


Cod_livrare Judet Data ... Pret Cost_transport Profit

1 101 Vrancea 6/1/2020 ... 111.0 0.0 111.0

2 102 Suceava 12/2/2020 ... 300.0 17.5 282.5

3 103 Teleorman 18/12/2019 ... 260.0 5.0 255.0

4 104 Bacau 10/1/2020 ... 555.0 10.0 545.0

5 105 Arad 11/1/2020 ... 559.0 17.5 541.5

6 106 Teleorman 13/1/2020 ... 372.0 5.0 367.0

7 107 Giurgiu 10/2/2020 ... 222.0 10.0 212.0

8 108 Bucuresti 18/12/2019 ... 222.0 5.0 217.0

9 109 Alba 19/12/2019 ... 186.0 0.0 186.0

10 110 Constanta 10/1/2020 ... 300.0 10.0 290.0

11 111 Buzau 17/1/2020 ... 111.0 0.0 111.0

12 112 Valcea 11/1/2020 ... 1500.0 17.5 1482.5

13 114 Mures 12/1/2020 ... 372.0 17.5 354.5

14 115 Cluj 12/1/2020 ... 1200.0 17.5 1182.5

15 116 Bistrita-Nasaud 13/1/2020 ... 2800.0 17.5 2782.5

16 117 Dambovita 6/1/2020 ... 2633.0 17.5 2615.5

17 118 Prahova 6/1/2020 ... 900.0 5.0 895.0

18 119 Bucuresti 6/1/2020 ... 600.0 5.0 595.0

19 120 Covasna 11/1/2020 ... 1200.0 17.5 1182.5

[19 rows x 10 columns]

28
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Pentru determinarea celui mai mare profit obținut într-o singură livrare, a profitului total, a
costului de transport total, a plajei de valori și a valorii medii a greutății pachetelor, am utilizat
codul:
print("Profitul maxim obtinut de firma intr-o singura livrare este "
+ str(ex3['Profit'].max()) + " lei.")
print("Profitul total obtinut de firma din aceste 100 livrari inregistrare este "
+ str(round(ex3['Profit'].sum(),2)) + " lei.")
print("Costul total de transport platit de firma din aceste 100 livrari este "
+ str(ex3['Cost_transport'].sum()) + " lei.")
print("Pretul total de " + str(round(ex3['Pret'].sum(),2))
+ " lei este egal cu suma dintre Pret total si Cost de transport\ntotal de "
+ str(round(ex3['Profit'].sum()+ex3['Cost_transport'].sum(),2)) + " lei.")
print("------------------------")
print(round(ex3['Greutate'].describe(),2))

Rezultatul obținut după rulare:


Profitul maxim obtinut de firma intr-o singura livrare este 3407.5 lei.

Profitul total obtinut de firma din aceste 100 livrari inregistrare este 51630.55 lei.

Costul total de transport platit de firma din aceste 100 livrari este 990.0 lei.

Pretul total de 52620.55 lei este egal cu suma dintre Pret total si Cost de transport

total de 52620.55 lei.

------------------------

29
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
count 100.00

mean 1.82

std 1.67

min 0.30

25% 0.50

50% 1.00

75% 3.20

max 8.00

Name: Greutate, dtype: float64

[Finished in 0.6s]

Interpretare rezultat: Coloana nou formata numită Profit arată profitul obținut de firmă pentru
fiecare livrare în parte, reprezentând diferența dintre Preț și Cost de transport. Astfel, observăm
faptul că pe livrarea cu codul 120, firma a obținut profitul de 1182.5 lei. De asemenea, profitul
total este de 51630.55 lei, ceea ce înseamnă că din toate cele 100 de livrări firma a obținut atâția
bani. Greutatea coletelor variază între 8 și 0.3 kg, cu o medie de 1.82 kg, ceea ce înseamnă că, în
medie, un colet din cele 100 a cântărit 1.82 kg.

30
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
d) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul b).
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Prelucrări statistice
Rezolvarea:
Pentru ordonarea înregistrărilor tabelului în funcție de coloana ”Data”, am transformat tipul
coloanei din ”object” în ”date”, iar apoi am aplicat funcția sort_values(), astfel:
import dateutil

import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex5=pd.read_csv(path+'Livrari2.csv')

print(ex5.dtypes)

print("\n-------------Schimbarea tipului coloanei Data din object in date------------")

ex5['Data'] = ex5['Data'].apply(dateutil.parser.parse, dayfirst=True)

print(ex5.dtypes)

print("\n------------Afisarea in ordine cronologica a tabelului in functie de coloana Data-------------")

print(ex5.sort_values(by='Data'))

Rezultatul obținut după rulare:


Cod_livrare int64

Judet object

Data object

Firma_transport object

Nume_client object

Adresa_client object

Greutate float64

Pret float64

Cost_transport float64

Profit float64

dtype: object

-------------Schimbarea tipului coloanei Data din object in date------------

31
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Cod_livrare int64

Judet object

Data datetime64[ns]

Firma_transport object

Nume_client object

Adresa_client object

Greutate float64

Pret float64

Cost_transport float64

Profit float64

dtype: object

------------Afisarea in ordine cronologica a tabelului in functie de coloana Data-------------

Cod_livrare Judet Data ... Pret Cost_transport Profit

3 103 Teleorman 2019-12-18 ... 260.0 5.0 255.0

8 108 Bucuresti 2019-12-18 ... 222.0 5.0 217.0

9 109 Alba 2019-12-19 ... 186.0 0.0 186.0

95 197 Iasi 2019-12-27 ... 111.0 0.0 111.0

81 182 Cluj 2019-12-28 ... 93.0 0.0 93.0

.. ... ... ... ... ... ... ...

40 141 Arges 2020-02-08 ... 900.0 17.5 882.5

69 170 Calarasi 2020-02-08 ... 186.0 0.0 186.0

60 161 Tulcea 2020-02-08 ... 186.0 0.0 186.0

7 107 Giurgiu 2020-02-10 ... 222.0 10.0 212.0

2 102 Suceava 2020-02-12 ... 300.0 17.5 282.5

[100 rows x 10 columns]

[Finished in 0.6s]

32
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

e) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul b).
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Prelucrări statistice, gruparea și agregarea datelor în pachetul pandas
Rezolvarea:
I. În ce județ au avut loc cele mai multe livrări din ultimele 100 și câte au avut loc în județul
respectiv:
import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex4=pd.read_csv(path+'Livrari2.csv')

a=list(ex4.groupby(['Judet']).groups.keys())

b=[]

for i in range(0,len(a)):

b.append(len(ex4.groupby(['Judet']).groups[a[i]]))

matrice=[]

for i in range(len(a)):

matrice.append((b[i], a[i]))

33
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
matrice.sort(reverse=True)

print(matrice[:])

Rezultatul obținut după rulare:


[(10, 'Bucuresti'), (8, 'Braila'), (6, 'Tulcea'), (6, 'Cluj'), (5, 'Teleorman'), (5, 'Iasi'), (5,
'Arges'), (4, 'Satu Mare'), (4, 'Calarasi'), (3, 'Timis'), (3, 'Prahova'), (3, 'Olt'), (3, 'Brasov'), (3,
'Botosani'), (3, 'Bacau'), (2, 'Vrancea'), (2, 'Sibiu'), (2, 'Neamt'), (2, 'Mehedinti'), (2, 'Maramures'),
(2, 'Covasna'), (2, 'Caras-Severin'), (1, 'Valcea'), (1, 'Suceava'), (1, 'Mures'), (1, 'Ilfov'), (1,
'Ialomita'), (1, 'Hunedoara'), (1, 'Giurgiu'), (1, 'Galati'), (1, 'Dambovita'), (1, 'Constanta'), (1,
'Buzau'), (1, 'Bistrita-Nasaud'), (1, 'Bihor'), (1, 'Arad'), (1, 'Alba')]
[Finished in 0.7s]

Interpretare rezultat: Cele mai multe livrări din cele 100 au avut loc în județul București, și
anume 10 livrări.

II. ce profit s-a obținut din aceste livrări pe fiecare județ:


import import pandas as pd
path='C:/Users/Diana/Desktop/proiect/'
ex=pd.read_csv(path+'Livrari2.csv')
print(ex.groupby(['Judet']).agg({'Profit': sum}))

Rezultatul obținut după rulare:


Profit

Judet

Alba 186.00

Arad 541.50

34
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Arges 3105.00

Bacau 1246.00

Bihor 93.00

Bistrita-Nasaud 2782.50

Botosani 4232.50

Braila 2878.00

Brasov 1702.00

Bucuresti 4569.00

Buzau 111.00

Calarasi 838.00

Caras-Severin 204.00

Cluj 2583.50

Constanta 290.00

Covasna 1444.00

Dambovita 2615.50

Galati 223.50

Giurgiu 212.00

Hunedoara 1549.50

Ialomita 440.50

Iasi 2054.00

Ilfov 521.05

Maramures 297.50

Mehedinti 1765.00

Mures 354.50

Neamt 1565.00

Olt 2115.00

Prahova 1601.00

Satu Mare 1587.00

Sibiu 669.00

Suceava 282.50

Teleorman 1694.00

Timis 970.50

Tulcea 2528.00

Valcea 1482.50

Vrancea 297.00

[Finished in 0.6s]

35
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: Din rezultatul obținut, se observă profitul obținut din livrările efectuate
pe fiecare județ. De aici, putem spune, de exemplu, că profitul obținut din livrările în Tuldea este
de 2528 lei, pe când cel obținut din livrările în Timiș este 970.5 lei.

III. pentru fiecare companie de curierat, firma dorește să știe: costul de transport plătit în total
pentru aceste 100 livrări, media costului de transport, prima zi în care a avut loc livrarea prin

36
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
aceasta companie, cât și prima zi care se regăsește înregistrată în tabel și media greutății
coletelor livrate de această companie:
import pandas as pd

import dateutil

pd.set_option('display.max_columns', None)

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

ex['Data'] = ex['Data'].apply(dateutil.parser.parse, dayfirst=True)

print(ex.groupby(['Firma_transport']).agg({'Cost_transport': [sum, "mean"],

'Data': [min, "first"],

"Greutate": 'mean'

}))

Rezultatul obținut după rulare:


Cost_transport Data Greutate

sum mean min first mean

Firma_transport

Cargus 222.5 11.710526 2019-12-28 2020-01-11 1.644211

FanCurier 197.5 6.583333 2019-12-18 2020-01-09 1.484667

Porumbelul 412.5 13.306452 2019-12-19 2020-01-06 2.148387

SameDay 157.5 7.875000 2019-12-18 2019-12-18 1.985000

[Finished in 0.6s]

37
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Interpretare rezultat: Rezultatul obținut arată faptul că:
- există 4 firme de curierat (Cargus, FanCurier, Porumbelul și SameDay),
- cea mai mare sumă a costului de transport suportată de firma noastră este la firma
Porumbelul, de 412.5 lei, cu o medie de 13.3 lei per livrare, și cea mai mică sumă a
costului de transport este de 157.5 la firma SameDay, cu o medie de 7.87 lei per livrare
- primele zile de când sunt înregistrările livrărilor pentru fiecare companie au loc în
decembrie 2019, cu SameDay și FanCurier având prima livrare în ziua de 18, cea mai
devreme, și Cargus având-o la 10 zile distanță, cea mai întârziată primă comandă dintre
cele 4 companii cu care colaborează firma noastră
- se observă faptul că primele înregistrări ale Datei din tabel diferă de primele zile în care
s-a efectuat livrarea, ceea ce înseamnă că înregistrările din ”Livrari2.csv” nu sunt în
ordine cronologică
- media greutății coletelor variază între 1.4 și 2.2 kg, cu media celor livrate de Porumbelul
fiind de 2.14 kg, cea mai mare, și cea mai mică medie fiind înregistrată la cele livrate de
FanCurier, având 1.48 kg.

IV. numărul de livrări efectuate de către fiecare companie de curierat pentru fiecare lună:
import dateutil

import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

ex['Data'] = ex['Data'].apply(dateutil.parser.parse, dayfirst=True)

ex['Luna'] = pd.DatetimeIndex(ex['Data']).to_period('M')

print(ex['Luna'])

print("Numarul de livrari efectuate de catre firmele Porumbelul, FanCurier, Cargus, SameDay pentru fiecare
luna:")

print(ex.groupby(['Luna', 'Firma_transport'])['Data'].count())

Rezultatul obținut după rulare:


0 2020-01

1 2020-01

2 2020-02

3 2019-12

4 2020-01

38
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
...

95 2019-12

96 2020-01

97 2019-12

98 2020-01

99 2020-01

Name: Luna, Length: 100, dtype: period[M]

Numarul de livrari efectuate de catre firmele Porumbelul, FanCurier, Cargus, SameDay pentru fiecare luna:

Luna Firma_transport

2019-12 Cargus 1

FanCurier 3

Porumbelul 3

SameDay 5

2020-01 Cargus 14

FanCurier 21

Porumbelul 19

SameDay 12

2020-02 Cargus 4

FanCurier 6

Porumbelul 9

SameDay 3

Name: Data, dtype: int64

[Finished in 0.6s]

39
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Interpretare rezultat: Rezultatul obținut arată faptul că pe luna decembrie 2019 avem cele mai
puține înregistrări, astfel încât avem cele mai puține livrări realizate de firmele de transport,
variind între 5 și 1. Luna ianuarie 2020 se înregistrează cele mai multe livrări pentru toate
companiile, cea care le depășește fiind FanCurier cu 21 de livrări.

f) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul b).
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Reprezentarea grafică a datelor cu pachetul matplotlib
Rezolvarea:
Pentru realizarea graficului cu bare am utilizat codul:
import dateutil

import pandas as pd

import matplotlib.pyplot as plt

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

ex['Data'] = ex['Data'].apply(dateutil.parser.parse, dayfirst=True)

ex['Luna'] = pd.DatetimeIndex(ex['Data']).to_period('M')

print("Cost_transport insumat pentru fiecare luna:")

print(ex.groupby('Luna')['Cost_transport'].sum())

plot_data=ex[:]

plot_data=plot_data.groupby('Luna')['Cost_transport'].sum()

plot_data.sort_values().plot(kind='bar')

plt.show()

Rezultatul obținut după rulare:


Cost_transport insumat pentru fiecare luna:

Luna

2019-12 92.5

2020-01 687.5

2020-02 210.0

Freq: M, Name: Cost_transport, dtype: float64

40
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: Din graficul obținut, observăm faptul că cel mai mare cost de transport
plătit de firma noastră este înregistrat în luna ianuarie 2020, atunci când s-a înregistrat și cel mai
mare număr de livrări, ceea ce știm din subpunctul c).

Pentru realizarea graficului pie am utilizat codul:


import pandas as pd

import matplotlib.pyplot as plt

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

print("Profitul insumat al firmei obtinut din livrarile firmei Porumbelul pe judet:")

print(ex[ex['Firma_transport'] == 'Porumbelul'].groupby('Judet')['Profit'].sum())

plot_data=ex[ex['Firma_transport']=="Porumbelul"]

41
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
plot_data=plot_data.groupby("Judet")["Profit"].sum()

plot_data.plot(kind="pie")

plt.show()

Rezultatul obținut după rulare:


Profitul insumat al firmei obtinut din livrarile firmei Porumbelul pe judet:

Judet

Alba 186.00

Arges 3105.00

Bacau 590.00

Bistrita-Nasaud 2782.50

Calarasi 204.50

Caras-Severin 204.00

Dambovita 2615.50

Hunedoara 1549.50

Ialomita 440.50

Ilfov 521.05

Maramures 93.00

Mehedinti 882.50

Mures 354.50

Neamt 282.50

Satu Mare 1363.50

Sibiu 669.00

Suceava 282.50

Timis 970.50

Tulcea 93.00

Valcea 1482.50

Vrancea 111.00

Name: Profit, dtype: float64

[Finished in 122.2s]

42
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: Din graficul obținut, observăm faptul că firma noastră a obținut cel mai
mare profit din livrările realizate de către firma Porumbelul în județul Argeș cu 3105 lei profit și
cel mai mic profit în Tulcea și Maramureș, obținând 93 lei.

g) Informații necesare pentru rezolvare: Tabelul “Livrari2.csv” care conține cele 101
înregistrări curente (cu tot cu headerul) și coloanele rămase după modificările realizare la
subpunctul b).

43
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Prelucrarea seturilor de date cu merge/ join
Rezolvarea:
Pentru crearea fișierului ”Livrari3.csv” am utilizat codul:
import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

ex2=pd.read_csv(path+'Soferi.csv')

result = pd.merge(ex,

ex2[['Cod_livrare','Nume_sofer', 'Nr_tel_sofer', 'Nume_sofer','Sofer_stare_civila',


'Sofer_an_nastere']],

on='Cod_livrare',

how='left',

indicator=True)

print(result)

result.to_csv(path+"Livrari3.csv", index='False')

print('Structura fisier Livrari2.csv ', ex.shape)

print('Structura fisier Soferi.csv ', ex2.shape)

Rezultatul obținut după rulare:


Cod_livrare Judet ... Sofer_an_nastere _merge

0 100 Mehedinti ... 1980.0 both

1 101 Vrancea ... 1978.0 both

2 102 Suceava ... 1978.0 both

3 103 Teleorman ... 1994.0 both

4 104 Bacau ... 1980.0 both

.. ... ... ... ... ...

95 197 Iasi ... 1970.0 both

96 198 Braila ... 1990.0 both

97 199 Botosani ... 1983.0 both

98 200 Calarasi ... 1990.0 both

99 201 Arges ... 1990.0 both

[100 rows x 16 columns]

Structura fisier Livrari2.csv (100, 10)

44
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Structura fisier Soferi.csv (98, 6)

[Finished in 0.7s]

Interpretare rezultat: Rezultatul obținut arată faptul că în acest fișier s-a obținut o versiune a
tabelului din ”Livrari2.csv” cu o completare a informațiilor.

Pentru crearea fișierului ”Soferi2.csv” am utilizat codul:


import pandas as pd

path='C:/Users/Diana/Desktop/proiect/'

ex=pd.read_csv(path+'Livrari2.csv')

ex2=pd.read_csv(path+'Soferi.csv')

result = pd.merge(ex2,

ex[['Cod_livrare','Firma_transport','Nume_client','Adresa_client']],

on='Cod_livrare')

print(result)

result.to_csv(path+"Soferi2.csv", index=False)

print('Structura fisier Livrari2.csv ', ex.shape)

print('Structura fisier Soferi.csv ', ex2.shape)

Rezultatul obținut după rulare:


Cod_livrare ... Adresa_client

0 100 ... Str. Dorneanu, 7

1 101 ... Str. Crizantemei, 72

2 102 ... Str. Mihail Sadoveanu, 30

45
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
3 103 ... Str. Nil, 65

4 104 ... Str. Oita, 4

.. ... ... ...

91 197 ... Str. Mihail Kogalniceanu, 18

92 198 ... Str. Pretului, 33

93 199 ... Str. Vasile Alecsandri, 8

94 200 ... Str. Mehedinti, 8

95 201 ... Str. Pomului, 12

[96 rows x 9 columns]

Structura fisier Livrari2.csv (100, 10)

Structura fisier Soferi.csv (98, 6)

[Finished in 0.7s]

Interpretare rezultat: Rezultatul obținut în fișierul ”Soferi2.csv”oferă informațiile necesare


prelucrării mai departe pentru firmă, reușind să obținem corespondent doar pentru înregistrările
ce se găsesc în ambele fișiere de la început, adică doar 96.

46
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
B. Utilizarea unei structuri repetitive

2. Descriere problemă: La înființarea unei noi filiale a magazinului, se dorește crearea unui program ce va
permite monitorizarea responsabililor pe ture de magazin ce vor deservi clientii. Astfel, in sistem va fi logata
ziua, ora, numele si functia detinuta de catre responsabili.
Informații necesare pentru rezolvare: Crearea unei liste ce va include informațiile necesare
rezolvării
Produs Software folosit: Python 3.7.7
Funcții/ Metode de calcul folosite:
Utilizarea unei structuri repetitive, pentru a permite introducerea de către Utilizator a
informațiilor necesare și actualizarea acestora.
Rezolvarea:
Codul:
ziua=input('Introduceti ziua pentru care se face inregistrarea')

ora=int(input('Introduceti ora pentru care se face inregistrarea'))

responsabil=[]

terminat=True

while(terminat):

identitate=input('Numele angajatului responsabil : ')

functie=input('Functia este :')

identitate=identitate.strip()

functie=functie.strip()

if(identitate==''):

terminat=False

else:

responsabil.append(identitate)

responsabil.append(functie)

print('In ziua de ', ziua ,' pentru ora ', ora , 'avem urmatorii responsabili : ')

print(responsabil)

Rezultat după executarea programului:

47
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: A fost creată o listă de către utilizator, în care au fost introduse
informațiile necesare. Lista se încheie în momentul satisfacerii completării responsabililor din
ziua și la ora cerută.

C. Crearea unei liste, diferența între cele 2 liste utilizând formarea celor 2 liste
în seturi pentru a permite această operație

3. Descriere problemă: Se dorește întocmirea unei liste cu produsele ce au fost primite astăzi
de către unul din magazine la primirea mărfii, pentru a se verifica dacă a fost acoperită complet
lista de necesar a magazinului. Astfel, au fost întocmite 2 liste, una cu necesarul de produse și
alta cu produsele primite. Ulterior, se va verifica dacă cele 2 liste coincid, stocându-se diferența
dintre cele 2 liste în cadrul unei noi liste.
Informații necesare pentru rezolvare: Crearea a 2 noi liste și efectuarea diferenței dintre cele
două.
Produs Software folosit: Python 3.7.7
Metode folosite: Crearea unei liste, diferența între cele două liste utilizând tranformarea celor 2
liste în seturi pentru a permite această operație.
Rezolvare:
Cod:
necesar=['tricouri','blugi','geaca','adidasi','pijamale','sosete']
primit=['tricouri','blugi','geaca','adidasi','sosete']

48
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Rezultat după executarea codului:

Interpretare rezultat: A fost găsit un produs ce nu este identic în cadrul celor două liste. A fost
creată o nouă listă de produse, ce va fi transmisă furnizorului pentru îndeplinirea cererii.

D. Crearea unui dicționar și actualizarea valorilor acestuia conform unei


anumite chei date

4. Descriere problemă: Se dorește întocmirea unui bilanț cu produsele ce vor fi lansate în noul
sezon 2020, pentru fiecare anotimp. Pentru acest lucru, a fost utilizat un dicționar pentru a putea
accesa datele în funcție de anotimpul în care va apărea. Ca urmare a cercetării efectuate de către
departamentul de marketing, s-a constatat o cerere pentru un nou tip de produse pentru primăvară
și iarnă. Se dorește actualizarea listei cu elementele fiecărei colecții.

Informații necesare pentru rezolvare: Crearea a unui dicționar ce va avea ca și cheie


anotimpul, iar ca valori produsele ce vor fi stocare în cadrul unor liste pentru a se permite
efectuarea de modificări asupra lor.
Produs Software folosit: Python 3.7.7
Metode utilizate: Crearea unui dicționar și actualizarea valorilor acestuia conform unei anumite
chei date.
Rezolvare:
Cod:
lansare_colectii={'primavara':'bluza','vara':['costum de baie','tricou maneca scurta','pantaloni
scurti'],'toamna':['pulover','geaca'],'iarna':['manusi','geaca groasa']}
print(lansare_colectii['vara'][1])
lansare_colectii['iarna']+=('caciula','ghete')
print(lansare_colectii['iarna'])
lansare_colectii['primavara']+='blugi'

Rezultat execuție program:

49
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: A fost creat un dicționar ce a permis stocarea colecțiilor de îmbrăcăminte


pentru noul sezon, ulterior acesta a fost actualizat pentru a include noi produse.

E. Crearea și utilizarea de funcții

5. Descriere problemă: Magazinul dorește crearea unui sistem ce va permite calcului sumei
totale datorate de un client, pentru a putea fi integrat în cadrul site-ului online ce va fi creat.
Modul de calcul al sumei datorate este următorul: în cazul efectuării unei achiziții peste o
anumită valoare, magazinul acordă anumite promoții potențialilor clienți. Astfel, la comenzile
online de peste 300 de lei, transportul este gratuit. Pentru comenzile de peste 200 de lei se acordă
o reducere de 5%, iar pentru comenzile de peste 500 de lei se acorda o reducere de inca 10%. Sa
se calculeze valoarea finală a coșului de cumpărături.
Informații necesare pentru rezolvare: Crearea a unui dicționar ce va avea ca și cheie
anotimpul, iar ca valori produsele ce vor fi stocare în cadrul unor liste pentru a se permite
efectuarea de modificări asupra lor.
Produs Software folosit: Python 3.7.7
Metode utilizate: Se va crea o funcție ce constă în un set de instrucțiuni condiționale, ce va
permite afișarea sumei totale datorate în funcție de valoarea inițială a coșului de cumpărături pe
care îl are un client.

Rezolvare:
Cod:
def valoare_cos(valoare):
if(valoare>500):
valoare=0.9*valoare
elif(valoare>300):
valoare=0.95*valoare

50
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
elif(valoare>200):
valoare=0.95*valoare+20
elif(valoare<200):
valoare+=20
return valoare

v1=valoare_cos(190)
v2=valoare_cos(225)
v3=valoare_cos(320)
v4=valoare_cos(515)
print(v1,v2,v3,v4)

Rezultat după executarea programului:

Interpretare rezultat:
Se observă faptul că valorile introduse au fost calculate corect.

F. Pachetele pandas și statsmodels pentru crearea și prelucrarea fișierului


Excel, create 2 modele matematice, pentru a se putea compara eficiența
acestora și a se alege unul dintre ele

6. Descriere problemă: Au fost colectate date cu privire la comenzile realizate în decurs de o zi


pe platforma online a magazinului și profitul returnat de acestea în urma livrării la destinatari. Se
dorește crearea unui model matematic ce va fi utilizat pentru a putea estima profitul pe care
anumite comenzi îl vor avea. Acest model va fi utilzat pentru a calcula ulterior care ar trebui să
fie costul de livrare pentru fiecare client, pentru a se păstra o rată fixă a profitului.
Datele se regăsesc în tabelul Vânzări.csv, în care sunt prezente următoarele coloane:
Distanța parcursă: reprezintă distanța efectuată de către firma de curierat pentru livrarea
fiecărui pachet către client
Număr produse cumpărate: numărul de produse ce a fost achiziționat de către client

51
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Durata livrare: durata de livrare, în zile, de la confirmarea comenzii până la livrarea comenzii la
adresa indicată de către client
Profit: profitul realizat în urma efectuării comenzii, scăzând costurile de transport, prelucrare
marfă, ambalare
Produs Software folosit: Python 3.7.7
Metode utilizate: Au fost utilizate pachetele pandas și statsmodels pentru crearea și prelucrarea
fișierului Excel. Ulterior, au fost create 2 modele matematice, pentru a se putea compara
eficiența acestora și a se alege unul dintre ele.
Rezolvare:
Cod:
import pandas as pd

import statsmodels.formula.api as smf

vanzari=pd.read_csv('Vanzari.csv')

vanzari.head()

X=vanzari.iloc[:,0:3]

X1=vanzari.iloc[:,:2]

Y=vanzari['Profit(lei)']

rezultat = smf.ols('Y ~X', data=vanzari).fit()

print(rezultat.params)

predictie=round(rezultat.predict(vanzari[:]))

diferenta=predictie-vanzari['Profit(lei)']

print(diferenta)

rezultat2 = smf.ols('Y ~X1', data=vanzari).fit()

print(rezultat.params)

predictie2=round(rezultat.predict(vanzari[:]))

diferenta2=predictie2-vanzari['Profit(lei)']

print(diferenta2)

rezultat.summary()

rezultat2.summary()

52
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultat obținut în urma rulării:

53
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat: Observăm că în cadrul primului model, ce utilizează distanța, numărul de


produse și timpul de livrare aceste 3 variabile explică modificarea profitului în proporție de 54%,
față de modelul de utilizează doar distanța și numărul de produse ce explică variația profitului în
proporție de 51%. Pentru primul model, observăm faptul că doar numărul de produse comandate
este un bun estimator al profitului, celelalte valori având o valoare a p(t) mult prea mare. În
schimb, pentru modelul numărul 2, observăm că atât distanța, cât și numărul de produse
reprezintă estimatori ce ar putea fi luați în calcul.
Se impune astfel colectarea suplimentară de date pentru a putea găsi un model mai bun de
estimare

54
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
G. Utilizaree pachetele pandas si sklearn, datele au fost împărțite în set de
testare și set de antrenament, creare matrice de confuzie pentru a putea
măsura eficiența algoritmului

7. Descriere problemă: În urma unui chestionar efectuat asupra a 20 de persoane ce au vizitat


magazinul săptămâna aceasta, au fost colectate o serie de date. Se dorește analizarea acestora
pentru a vedea dacă există o corelație directă între anumite caracteristici și achiziționarea sau
părăsirea magazinului.
Datele au fost colectate în cadrul tabelului Regresie logistică.csv, având următoarele coloane:
Durata petrecuta magazin: timpul, în minute, petrecut de fiecare client de la intrarea până la
părăsirea magazinului
Bărbat: coloana este notată cu 1 în cazul în care clientul era de sex masculin și cu 0 în caz
contrar
Femeie: coloana este notată cu 1 în cazul în care clientul era de sex feminin și cu 0 în caz contrar
Vârsta: vârsta măsurată în ani a persoanelor intervievate
Cumparat: cu 1 a fost notată achiziționarea a cel puțin 1 produs și cu 0 părăsirea magazinului
fără a cumpăra nimic
Produs Software folosit: Python 3.7.7
Metode utilizate: Au fost utilizate pachetele pandas si sklearn. A fost prelucrat csv-ul, datele au
fost împărțite în set de testare și set de antrenament. Ulterior, a fost creată matricea de confuzie
pentru a putea măsura eficiența algoritmului.
Cod:
import pandas as pd

from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import confusion_matrix

set_date=pd.read_csv('Regresie logistica.csv')

X=set_date.iloc[:,0:4]

Y=set_date.iloc[:,4]

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25, random_state=42)

model=LogisticRegression()

model.fit(X_train,y_train)

55
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
y_predict=model.predict(X_test)

print((y_test == y_predict).mean())

confusion_matrix = confusion_matrix(y_test, y_predict)

print(confusion_matrix)

model.coef_

Rezultat rulare cod:

Interpretare rezultat:
Observăm din matricea de confuzie faptul că modelul a reușit să prezică perfect dacă un client va
achiziționa sau nu un produs din interiorul magazinului. Putem observa că cele mai mari ponderi
în influențarea deciziei de a cumpăra sau nu un produs sunt reprezentate de vârsta acestuia și de
durata petrecută în magazin. Astfel, cu cât un client petrece mai mult timp în magazin și cu cât
vârsta acestuia este mai mică, cu atât șansa de a cumpăra crește mai mult.
Ar trebui gândite campanii de marketing special pentru aceste categorii pentru a crește și
numărul de produse achiziționat de către aceștia. De asemenea, ar trebui modificată ambianța
magazinului, pentru a determina clienții să petreacă mai mult timp în interiorul acestora.

4. Programare SAS

A. Crearea unui set de date SAS din fișiere externe, creara și folosirea de
formate definite de utilizator, generarea de grafice, procesarea condițională
și iterativă a datelor, utilizarea de proceduri pentru raportare

1. Descriere problemă: Firma deține informații despre clienții săi din anul 2019 în fișierul
“clienti.txt”.
Firma dorește în continuare să:
a) Să știe dacă este o idee bună să consolideze programul curent de fidelizare a clienților sau
să creeze unul nou, a decis să analizeze clienții din ultimul an astfel: se va crea o noua coloana
numită TipClient în care clienții ce au comandat de 15 ori sau mai mult în ultimul an vor fi

56
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
numiți fideli, iar cei ce au mai puțin de 15 comenzi vor fi clienți ocazionali. Apoi să se creeze un
alt tabel care să conțină coloanele din fișierul clienti.txt la care să se adauge 2 coloane: TipClient
(care să grupeze clienții în profitabili sau neprofitabili, în funcție de coloana Profit, cu condiția
dacă valoarea profitului este 2000 RON sau mai mare aceștia vor fi numiți profitabili) și
ProfitPerComanda (care să împartă profitul la comandă).
b) Să se creeze un grafic de tip Histogramă care să arate profitul mediu obținut de firmă din
comenzile clienților pe ambele sexe.

a) Informații necesare pentru rezolvare: Tabelul “clienti.txt” care conține informațiile


despre clienți.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- crearea unui set de date SAS din fișiere externe
- procesarea condiţională și interativă a datelor
Rezolvarea:
libname info '/home/u47476300';
data info.clienti;
infile '/home/u47476300/clienti.txt' dlm='*';
input Nume $ Sex $ NrComenzi Profit;
SELECT;
WHEN (NrComenzi lt 5) TipClient="ocazional";
OTHERWISE TipClient="fidel";
END;
run;
title "Datele din fisierul SAS clienti";
proc print data=info.clienti;
run;

data Detaliu;
infile '/home/u47476300/clienti.txt' dlm='*';
input Nume $ Sex $ NrComenzi Profit;
if Profit lt 2000 then
do;
TipClient="neprofitabil";
ProfitPerComanda = Profit/NrComenzi;
end;

57
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
else if Profit ge 2000 then
do;
TipClient="profitabil";
ProfitPerComanda = Profit/NrComenzi;
end;
run;
title "Raportul valorii tranzactiilor per comanda";
proc print data=Detaliu;
run;

Rezultatul obținut după rulare este:

58
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatelor: Se observă tipurile de client rezultate, unde mai mulți clienți par
a fi fideli decât ocazional, ceea ce este un lucru foarte bun pentru firmă. Pe de altă parte, sumele
de care comandă ar putea fi mai mari, ne dăm seama din al doilea tabel unde aceștia sunt
identificați ca fiind profitabili sau nu.

b) Informații necesare pentru rezolvare: Tabelul “clienti.txt” care conține informațiile


despre clienți.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- generarea de grafice
Rezolvarea:
libname info '/home/u47476300';
data info.clienti;
infile '/home/u47476300/clienti.txt' dlm='*';
input Nume $ Sex $ NrComenzi Profit;
SELECT;
WHEN (NrComenzi lt 5) TipClient="ocazional";
OTHERWISE TipClient="fidel";
END;
run;

LIBNAME info "/home/u47476300";


TITLE 'Rezultat';
GOPTIONS reset=all;

59
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
PROC GCHART data=info.clienti;
VBAR Sex / sumvar=Profit
type=mean
maxis=axis1;
RUN;
QUIT;

Rezultat obținut după rulare:

Interpretarea rezultatelor: Din histogramă, ne putem da seama ușor faptul că în anul 2019
comenzile plasate de femei au adus un profit dublu firmei față de cele plasate de bărbați.

2. Descriere problemă: În fișierul vânzări.txt există informații cu privire la vânzările


companiei pe anul 2019.
a) Coloana Angajat conține numele angajatului care a gestionat vânzarea. Se cunosc
funcțiile acestora, notate mai jos, și se dorește să se afișeze în mediul SAS un tabel cu coloanele
Luna, Ziua, Angajat, Cantitate, în care coloana Angajat să conțină funcția angajatului respectiv
pentru fiecare angajat în parte.
Dinescu contabil
Codrescu sofer
Hmeliuc receptionist
Ivascu sofer

60
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
b) Să se creeze un tabel de frecvență pentru perechea Judet – Luna, în care numele complet
al lunii să fie afișat în loc de număr, și o histogramă care să afișeze același lucru.

a) Informații necesare pentru rezolvare: Tabelul “vanzari.txt” care conține informațiile


despre vânzările din 2019.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- crearea unui set de date SAS din fișiere externe
- crearea şi folosirea de formate definite de utilizator
Rezolvarea:
libname vanzari '/home/u47476300';
data vanzari.fisier;
infile '/home/u47476300/vanzari.txt' dlm=';';
input Luna Ziua Angajat $ Client $ Judet $ Produs $ CategorieProdus $
Cantitate;
run;

title "Datele din fisierul SAS vanzari";


proc print data=vanzari.fisier;
run;

proc format;
value $Angajat 'Dinescu' = 'contabil'
'Codrescu' = 'sofer'
'Hmeliuc' = 'receptionist'
'Ivascu' = 'sofer'
other = 'necunoscut';
run;

title "Date din fisierul vanzari cu modificare";


proc print data=vanzari.fisier;
var Luna Ziua Angajat Cantitate;
format Angajat $Angajat.;
run;

61
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultatul obținut după rulare este:

Interpretarea rezultatelor: Se observă faptul că gestiunea comenzilor a fost efectuată și


telefonic, prin intermediul recepționistei ce preia comenzile, dar și livrări la ușă, prin intermediul
șoferilor. De asemenea, comenzile în care a fost implicat contabilul sunt cele în care a fost
nevoie de asistență financiară datorită neclarităților clienților.

b) Informații necesare pentru rezolvare: Tabelul “vanzari.txt” care conține informațiile


despre vânzările din 2019.
Produs Software folosit: SAS Studio

62
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Funcții/ Metode de calcul folosite:
- utilizarea de proceduri pentru raportare
- generarea de grafice
Rezolvarea:
libname vanzari '/home/u47476300';
data vanzari.info;
INFILE "/home/u47476300/vanzari.txt" dlm=";";
INPUT Luna $ Ziua Angajat $ Client $ Judet $ Produs $ Cantitate;
RUN;

LIBNAME rez "/home/u47476300";


PROC FORMAT;
value $detluna "1" = "Ianuarie"
"2" = "Februarie"
"3" = "Martie"
"4" = "Aprilie"
"5" = "Mai"
"6" = "Iunie"
"7" = "Iulie"
"8" = "August"
"9" = "Septembrie"
"10" = "Octombrie"
"11" = "Noiembrie"
"12" = "Decembrie";
RUN;
PROC FREQ DATA=rez.info ;
FORMAT Luna $detluna.;
TABLES Judet*Luna;
TITLE "Rezultat";
RUN;

LIBNAME info "/home/u47476300";


TITLE 'Rezultat';
GOPTIONS reset=all;
PROC GCHART data=vanzari.info;
VBAR Judet / subgroup=Luna;
FORMAT Luna $detluna.;
RUN;
QUIT;

63
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultat obținut după rulare:

64
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatelor: Din tabelul de frecvențe rezultat putem spune că în luna


Ianuarie s-au desfășurat 17 vânzări ale firmei, 10.9% din vânzările totale din 2019, dintre care 6
în Brașov, 8 în București și 3 în Teleorman. În total, în Brasov s-au efectuat 72 de comenzi, adică
46.15% din total, fiind și cel mai mare procent. În 2019, cea mai bună perioadă a vânzărilor
pentru firmă a fost în luna Februarie, cu un procent de 14.1% din total, având loc 22 de vânzări.
Histograma indică de asemenea faptul că în Brașov au avut loc cele mai multe vânzări, iar în
acest județ lunile Septembrie, Iulie și Februarie par să fie cele mai frecvente.

B. Procesarea iterativă și condițională a datelor

3. Descriere problemă: Firma decide să investească într-un nou produs revoluționar pentru
femei 1000 euro. Câți ani sunt necesari pentru a atinge suma de 8974 euro, dacă dobânda anuală
este de 13.2%?
Informații necesare pentru rezolvare: Valoarea investiției = 1000 euro, Suma care se
dorește să se obțină la final = 8974 euro, Dobânda = 13.3%.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
procesarea iterativă şi condiţională a datelor,
Rezolvarea:
data Bani;
Dobanda = 0.132;
Total = 1000;

65
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
do until (Total ge 8974);
An + 1;
Total = Total + Dobanda*Total;
output;
end;
format Total 10.2;
run;
title "Rezultat";
proc print data=Bani noobs;
run;

Rezultat obținut după rulare:

Interpretarea rezultatelor: Tabela rezultată indică faptul că firma își va recupera investiția
în primul an, iar până să ajungă la suma de 8974 euro vor trece 18 ani, când aceștia se presupune
că, cu o dobândă de 13.2%, vor obține 9316 euro.

66
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

C. Crearea de subseturi de date, utilizarea de funcții SAS, combinarea seturilor


de date prin proceduri specifice SAS, folosirea de proceduri statistice

4.Descriere problemă: Se cunosc informații, TipProdus, Culoare, CantitateDepozit despre


produsele ce se află în depozit de culoare albă și de culoare neagră.
a) Se dorește să se creeze 2 seturi de date care să se concateneze.
Pantalon negru 45
Tricou negru 77
Hanorac negru 50
Adidasi negru 30
Bluza negru 35
Sapca negru 67

Pantalon alb 30
Tricou alb 105
Hanorac alb 34
Adidasi alb 28
Bluza alb 98
Sapca alb 80
b) Există 2 tipuri de culori ale produselor în depozit. Se cere să se determine dacă există
diferențe semnificative în ceea ce privește cantitățile din fiecare culoare, deoarece se dorește să
existe un echilibru în depozit.
a) Informații necesare pentru rezolvare: Datele de mai sus
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
crearea de subseturi de date
utilizarea de funcţii SAS
combinarea seturilor de date prin proceduri specifice SAS
Rezolvarea:
data Negru;
input Produs $ Culoare $ CantitateDepozit;
datalines;
Pantalon negru 45
Tricou negru 77
Hanorac negru 50
Adidasi negru 30
Bluza negru 35
Sapca negru 67

67
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
;
run;

data Alb;
input Produs $ Culoare $ CantitateDepozit;
datalines;
Pantalon alb 30
Tricou alb 105
Hanorac alb 34
Adidasi alb 28
Bluza alb 98
Sapca alb 80
;
run;

data Depozit;
set Negru Alb;
run;
PROC PRINT DATA = Depozit;
TITLE 'Setul de date combinat';
RUN;

Rezultatul obținut după rulare:

68
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatelor: Se observă toate cele 12 produse incluse într-un singur tabel,
care indică, spre exemplu, faptul că în depozit se află 45 de perechi de pantaloni de culoare
neagră.

b) Informații necesare pentru rezolvare: Datele de mai sus


Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
folosirea de proceduri statistice
Rezolvarea:
libname rez '/home/u47476300';
data rez.info;
INPUT Culoare $ Cantitate;
datalines;
negru 45
negru 77
negru 50
negru 30
negru 35
negru 67
alb 30
alb 105
alb 34
alb 28
alb 98
alb 80
;
RUN;

LIBNAME rez "/home/u47476300";


PROC ANOVA DATA=rez.info;

69
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
CLASS Culoare;
MODEL Cantitate = Culoare;
MEANS Culoare / SCHEFFE;
TITLE 'Rezultat';
RUN;

Rezultatul obținut după rulare:

70
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

71
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatelor: Testul Scheffe arată faptul că nu există diferențe semnificative


între cele 2 categorii de produse când vine vorba de cantitatea din depozit. În medie, în depozit
se găsesc aproximativ 51 produse negre și 63 produse albe, diferența fiind de aproape 10
produse. F value este de 0.52 < 0.05, ceea ce înseamnă că se respinge ipoteza cum că
distribuțiile comparate ar avea valori semnificativ diferite.

72
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
D. Combinarea seturilor de date prin proceduri specifice SAS, utilizarea de
funcții SAS

5. Descriere problemă: În fișierele depozit.txt și vânzări.txt se găsesc informații legate de


produsele din depozit și vânzările realizate de firmă în anul 2019. Se dorește crearea unui set de
date combinat din cele 2 care să conțină și profitul obținut per vânzare într-o coloană separată
rotunjit la 2 zecimale.
Informații necesare pentru rezolvare: Tabelul “clienti.txt” care conține informațiile despre
clienți.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- utilizarea de funcţii SAS
- combinarea seturilor de date prin proceduri specifice SAS
Rezolvarea:
libname info "/home/u47476300";
data info.vanzari;
infile '/home/u47476300/vanzari.txt' dlm=';';
input Luna Ziua Angajat $ Client $ Judet $ Produs $ Cantitate;
run;

libname info "/home/u47476300";


data info.produse;
infile '/home/u47476300/produse.txt' dlm=';';
input Produs $ CategorieProdus $ PretUnitarProdus;
run;

PROC SORT DATA = info.vanzari;


BY Produs;
RUN;
PROC SORT DATA = info.produse;
BY Produs;
RUN;
libname info "/home/u47476300";
DATA info.Rezultat;
MERGE info.vanzari info.produse;
BY Produs;
Profit = ROUND(PretUnitarProdus * Cantitate, .01);
PROC PRINT DATA = info.Rezultat;
TITLE 'Rezultat';
RUN;

73
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultat obținut după rulare:

Interpretarea rezultatelor: Profitul per comandă este prețul unitar al produsului înmulțit cu
cantitatea vândută din acel produs. Se observă variabila aceasta atașată tabelului și, spre
exemplu, înregistrarea 1 reprezintă faptul că în luna ianuarie, ziua a șasea, angajatul Hmeliuc a
gestionat vânzarea către clientul Bratu, în București, a 7 adidași și s-a obținut un profit de 2450
lei.

E. Combinarea seturilor de date prin proceduri specifice SQL

6. Descriere problemă: Mai jos sunt informații despre produsele din depozit și locatia
acestora este stocată separat. Se cere să se creeze, cu ajutorul procedurilor SQL, 2 tabele SAS
conținând datele de mai jos și un raport care listează toate produsele din depozit și locațiile
corespunzătoare fiecărui produs pentru ca angajații să știe unde să găsească produsele în depozit.

74
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
1 Pantalon 75
2 Tricou 182
3 Hanorac 84
4 Adidasi 58
5 Bluza 133
6 Sapca 147

2 L1
5 L4
3 L3
1 L1
4 L2
Informații necesare pentru rezolvare: Informațiile de mai sus.
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- combinarea seturilor de date prin proceduri specifice SQL
Rezolvarea:
LIBNAME ad_data '/home/u47476300';
PROC SQL;
CREATE TABLE info.depozit
(CodProdus num,
Denumire char(9),
Cantitate num);
INSERT INTO info.depozit
VALUES (1, 'Pantalon ', 75)
VALUES (2, 'Tricou ', 182)
VALUES (3, 'Hanorac ', 84)
VALUES (4, 'Adidasi ', 58)
VALUES (5, 'Bluza ', 133)
VALUES (6, 'Sapca ', 147);
TITLE 'Datele despre produsele din depozit';
SELECT *
FROM info.depozit;
CREATE TABLE info.locatie
(CodProdus num,
ZonaDepozit char(4));
INSERT INTO info.locatie
VALUES ( 2, 'L1')
VALUES ( 5, 'L4')

75
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
VALUES ( 3, 'L3')
VALUES ( 1, 'L1')
VALUES ( 4, 'L2');
TITLE 'Datele despre locatiile produselor din depozit';
SELECT *
FROM info.locatie;
PROC SQL;
CREATE TABLE depozit_produse as
SELECT * from info.depozit as x left join info.locatie as y
On x.CodProdus = y.CodProdus;
TITLE 'Produsele cu tot cu zona din depozit specificata';
SELECT *
FROM depozit_produse;
QUIT;

Interpretarea rezultatelor: Există 4 locații în depozit și produsele pantaloni și tricouri se


găsesc în zona1, hanoracele în zona 3, adidasii în zona 2 și bluzele în zona 4. Din cauza faptului
că locația pentru șepci nu era menționată în al doilea tabel, nu există corespondent pentru zona în
care se află șepcile, iar acest lucru înseamnă ca nu se cunoaște locația șepcilor în depozit.

F. Utilizarea de masive

76
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
7. Descriere: În fișierul ”IndicatoriFinanciari.txt”, valorile lipsă pentru variabilele numerice au
fost înlocuite cu valoarea 999. Variabilele sunt, în această ordine: An, Cifra de afaceri, Profit
Net, Datorii, Active Imobilizate, Active Circulante și Capitaluri Proprii. Se dorește să se
înlocuiască valoarea aceasta cu ” .” pentru a fi mai ușor de vizualizat pentru angajați să
completeze informațiile pentru viitoare analize ale companiei.
Informații necesare pentru rezolvare: IndicatoriFinanciari.txt
Produs Software folosit: SAS Studio
Funcții/ Metode de calcul folosite:
- utilizarea de masive
Rezolvarea:
DATA clienti;
INFILE '/home/u47476300/IndicatoriFinanciari.txt' dlm="*";
INPUT An CifraAfaceri ProfitNet Datorii ActiveI ActiveC CapitaluriProprii;
Array nou (7) An CifraAfaceri ProfitNet Datorii ActiveI ActiveC
CapitaluriProprii;
Array vechi (7) An CifraAfaceri ProfitNet Datorii ActiveI ActiveC
CapitaluriProprii;
DO i=1 to 7;
if nou(i)=999 then nou(i)= .;
else nou(i)=vechi(i);
end;
run;
proc print data=clienti;
title 'Rezultat';
RUN;

Rezultat obținut după rulare:

77
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatelor: Se observă faptul că sunt 10 valori lipsă în tabelul cu indicatori,


în anii 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2013 și 2017. Variabilele care nu prezintă
nicio valoare lipsă sunt Capitalurile Proprii și Activele Imobilizate.

5. SAS ENTERPRISE

A. Import fisier

Cerința: Compania a înregistrat datele cu privire la vanzarile efectuate în anul precedent, pentru
a putea analiza volumul acestora și a putea lua decizii cu privire la strategia ce va trebui abordată
anul acesta. Datele au fost înregistrare în cadrul unui fișier Excel, având următoarele coloane:
 Luna: reprezintă luna în care a fost efectuată achiziția produsului
 Ziua: ziua din lună în care a fost achiziționat produsul
 Funcție angajat: reprezintă funcția angajatului ce a luat contact cu clientul ce a
achiziționat produsul
 Client: reprezintă numele clientului ce a efectuat comanda
 Sex client: reprezintă sexul clientului
 Judet: județul de origine al clientului
 Denumire_produs: reprezintă denumirea produsului ce a fost achiziționat, așa cum apare
pe eticheta de produs
 Categorie produs: reprezintă grupa din care fiecare produs face parte, așa cum apare
acesta pe site-ul magazinului și împărțit pe raioane în cadrul magazinului

78
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
 Cantitate: Cantitatea comandată de către client din produslui respectiv
 Valoare tranzacție: reprezintă valoarea totală a produselor comandate

Să se importe datele în mediul SAS Enterprise și să se verifice corectitudinea acestora.


Funcții folosite: Tasks, import data
Rezultat după execuția programului:

B. Statistici descriptive+grafic

Cerința: Departamentul de vânzări dorește să facă o analiză preliminară a datelor, pentru a putea
afla cantitatățile comandate și valorile tranzacționate pentru întreaga perioada analizată. Ulterior,
se dorește realizarea unor grafice pentru a putea prezenta informațiile departamentului de
marketing.
Funcții folosite: Pentru realizarea de statistici: Tasks, click pe Characterize Data Wizard
Vor apărea aceste ferestre, ulterior apăsând finish

79
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Pentru realizarea unui grafic de tip pie chart: Se apasă Tasks, Pie chart

Rezultat după execuția programului:

80
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretarea rezultatului:
Se poate observa faptul că valoarea medie a tranzactiilor este de 3876 de lei, dar valoarea
mediană a acestora este de doar 1120 de lei. Acest lucru indică faptul că există câțiva outlieri ce
înregistrează valori mari ce influențează puternic această medie. Se poate observa că pentru
cantitate. Valoarea medie este de 8,62, ce este apropiată de valoarea mediană. Se poate observa
că valoarea maximă este de 90, ceea ce ar putea indica o comandă mare pentru un magazin ce
dorește să vândă la rândul lor aceste produse, dar nu influențează atât de mult media.

81
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
În cazul tipurilor de produse comandate, se poate observa că produsele din categoria top, ce
include tricouri și bluze sunt cele mai vândute tipuri de produse, urmate de încălțăminte și
pantaloni. Accesoriile sunt tipurile de produse cele mai puțin vândute. Astfel, se recomandă
eficientizarea campaniei de marketing pentru aceste tipuri de produse.
Cele mai vândute produse sunt tricourile, urmate de adidași, hanorace,bluze, treninguri si blugi.
Astfel , se poate observa faptul că o parte importantă a clienților optează pentru achiziționarea
unui set complet de haine.

C. RAPORT

Cerința:
Se dorește efectuarea unui raport pentru a putea vedea tipurile de produse cumpărate de către
clienți în funcție de județul în care aceștia trăiesc.
Funcții folosite: Tasks, List Data

82
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultat după executarea programului:

83
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

D. Document compus

1. Descrierea problemei

Să se creeze un document compus cu privire la vanzarile companiei și cu informațiile


despre modul în care clienții efectuează plata.
Informatii necesare pentru rezolvare
Pentru a genera raportul compus am selectat File – New – Report – Am selectat Listele și
am adăugat titlul reportului.
2. Funcție utilizată: Report

84
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
E. Interogare tabel cu filtrare

Cerința:
Se dorește selectarea datelor în funcție de sexul clientului si de denumirea produsului
achiziționat, pentru o valoare mai mare de 1500 de lei. Se dorește acest lucru pentru a se putea
verifica dacă anumite produse sunt comandate în funcție de sexul persoanei respective, pentru a
suplimenta stocul acestor produse. Se dorește gruparea acestor produse în funcție de sex.
Funcții utilizate:
Query builder, Select Data și Filter Data

Rezultat după executarea programului:

85
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Interpretare rezultat:
Se observă că cele mai comandate produse de către bărbați sunt blugii, după aceea fiind
treningurile și adidașii.De asemenea, se observă că cele mai comandate produse de către femei
sunt adidașii, urmați de tricouri și treninguri.

F. Personalizare stil

1. Descrierea problemei

Să se definească un nou stil pentru afișarea rezultatelor, ce va avea culoare gri pentru
fundal și roșu pentru text.
2. Informatii necesare pentru rezolvare

Vom folosi atât Style Manager, cât și instrumentul Edit Style.


3. Produs softeare / fimctie / metoda de calcul folosita

Tools – Style Manager – Selectare FancyPrinter

86
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Create a Copy – Selectare Copie- Edit... – Personalizare text coloane și rânduri (culoare
text: roșu) – Personalizare fundal (gri deschis).
4. Rezolvarea cu ajutorul produsului software

G. Join

Cerința: A fost creat un al doilea tabel în care au fost colectate date cu privire la o parte din
clienții companiei, cu privire la vârsta și ocupația acestora. Se cere să se afișeze valoarea totală a
tranzacțiilor efectuate în funcție de vârsta și ocupația cumpărătorului.
Functii utilizate:

87
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

Rezultat dupa executarea programului:

88
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Interpretare: Se observă în tabel valorile tranzacției obținute, spre exemplu cea a bancherului
este 22360.

H. Format definit de utilizator

Cerința: Se dorește afișarea valorii medii a bunului ce a fost cumpărat de către client. Se vor
utiliza coloanele valoare tranzacție și cantitate.
Funcții folosite: Query Bilder – Selectare coloane – Computed Columns – New – Advanced
Expression – Introducem expresia după care se va calcula valoarea comenzii – Next –
Introducem Numele coloanei – Setăm formatul de tip dollar13.

89
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
Rezultat execuție program:

Interpretare: Se poate observa o diferență mare între valorile medii ale produselor, ca urmare a
volumului total comandat, ce este direct proporțional cu prețul produsului. Astfel, produsele ce
au un preț mai mare sunt achiziționate în cantități mult mai mici față de cele cu prețuri mari.

I. Folosirea parametrilor

1. Descrierea problemei

Din tabelul vanzari să se extragă comenzile care au fost efectuate de către persoanele de
sex feminin. Trebuie creat un prompt pentru a putea refolosi acesta în orice query viitor.
2. Informatii necesare pentru rezolvare
Pentru rezolvare vom folosi Prompter manager

3. Produs software / funcție / metoda de calcul folosită

90
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B

91
Vlad Diana-Roxana
Vișoiu Răzvan Constantin
ASE, CSIE, Cibernetică Economică, grupa 1073 B
4. Rezultat executare program

92

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