Sunteți pe pagina 1din 21

Proiect Pachete Software

Profesor coordonator:Andreescu Anca Ioana


Studenti: Aldea Petru-Daniel
Andrei Cosmin-Ionut
Grupa 1079, Seria C
PYTHON
#Sa se citeasca fisierul csv care contine produsele firmei si sa se calculeze suma preturilor fianle
pentru fiecare categorie
df = pd.read_csv('DATE_PROIECT.csv')
dfSumaGr = df.groupby('Categorie')['PretFinal'].sum()
print(dfSumaGr)

#Sa se creeze o functie cre stabileste procentul de reducere pentru produse astfel:
#daca pretul produsului este mai mare decat 1700 de lei - 25%
#daca pretul produsului este mai mic dect 1700 de lei - 15%
#Sa se adauge valorile obtinute intr-un dictionar

def calculezaReducere():

df2 = df['PretFinal'].values
for i in range(len(df2)):
dictionar = {"Pret": [], "Reducere": []}
if(df2[i]>=17000):
reducere = 0.25*df2[i]
else:
reducere = 0.15*df2[i]
dictionar["Pret"]=df2[i]
dictionar["Reducere"]=reducere
print(dictionar)
del dictionar["Pret"]
del dictionar["Reducere"]
calculezaReducere()
#Sa se stearga produsele cu anul de fabrictie mai mic decat 2021 si sa se salveze intr-un nou
fisier CSV
#denumit STOC_ACTUALIZAT.csv
dataframe= pd.read_csv('DATE_PROIECT.csv')
dataframe = dataframe.loc[dataframe["An fabricatie"] >=2021]
dfcsv = dataframe.drop(columns=dataframe.columns[0])
dfcsv.to_csv("STOC_ACTUALIZAT.csv",index = False)
#Sa se citeasca fisierul csv care contine produsele firmei si sa se afiseze pentru fiecare categorie
pretul final minim, maxim si mediu.
df = pd.read_csv('DATE_PROIECT.csv')
dfMin=df.groupby('Categorie')['PretFinal'].min()
dfMax=df.groupby('Categorie')['PretFinal'].max()
dfMean=df.groupby('Categorie')['PretFinal'].mean()
print("Pretul minim pentru fiecare categorie:")
print(dfMin)
print("-----------------------------------------------")
print("Pretul maxim pentru fiecare categorie:")
print(dfMax)
print("-----------------------------------------------")
print("Pretul mediu pentru fiecare categorie:")
print(dfMean)
print("------------------------------------------------")
#Folosind exercitiul anterior sa se adauge in cate o lista pretul final minim, maxim si mediu(de
la toate categoriile)
# si sa se ordoneze crescator primele 2 liste si descrescator cea de a 3-a.
listMin=[]
listMax=[]
listMean=[]
i=0
while i in range(len(dfMin)):
listMin.append(dfMin[i])
i=i+1
for i in range(len(dfMax)):
listMax.append(dfMax[i])
for i in range(len(dfMean)):
listMean.append(dfMean[i])
listMin.sort()
listMax.sort()
listMean.sort(reverse=True)
print(listMin)
print(listMax)
print(listMean)
print("--------------------------------------------------------")

# Sa se afiseze indicatori statistici de baza pentru coloana Stoc


print(df['Stoc'].describe())
# Sa se reprezinte un grafic de tip bar continand pe axa Ox NrCrt si pe axa Oy pretul produsului
respectiv
# (Preturile finale vor fi colorate in functie de procentul din valoarea maxima)
import matplotlib.pyplot as plt
from matplotlib import cm
pd.set_option("display.max_columns",10)
df = pd.read_csv('DATE_PROIECT.csv')
colors = cm.hsv( df['PretFinal']/ float(max(df['PretFinal'])))
df['PretFinal'].plot(kind='bar',color=colors)
plt.xlabel('NrCrt')
plt.ylabel('PretFinal')
plt.show()
# Sa se reprezinte un grafic de tip Histograma pentru stocul produselor
import matplotlib.pyplot as plt
pd.set_option("display.max_columns",10)
df = pd.read_csv('DATE_PROIECT.csv')
df['Stoc'].plot(kind='hist')
plt.xlabel('Stoc')
plt.show()
SAS STUDIO
Sa se creeze un set de date temporare pe baza fisierului excel al firmei. Folosind
procedura MEANS sa se calculeze indicatorii statistici(medie, minim, maxim) pentru
Pretul final al produselor din fiecare an.
proc import OUT= date_sas datafile="/home/u61423063/Proiect/DATE_PROIECT.xlsx"
dbms=xlsx REPLACE;
GETNAMES=yes;
run;
PROC SORT DATA = date_sas;
BY AnFabricatie;
RUN;
proc MEANS DATA = date_sas;
VARIABLE PretFinal;
By AnFabricatie;
TITLE "Media pretului pe fiecare an de fabricatie";
RUN;
Folosind procedura SQL, sa se grupeze datele SAS dupa anul de fabricatie si sa se calculeze
pretul(fara TVA) minim si pretul(fara TVA) maxim
proc import OUT= date_sas datafile="/home/u61423063/Proiect/DATE_PROIECT.xlsx"
dbms=xlsx REPLACE;
GETNAMES=yes;
run;
proc sql;
select AnFabricatie, max(Pret) as PretMaxim, min(Pret) as PretMinim
from date_sas
group by AnFabricatie;
run;
Sa se creeze un grafic de tip PIECHART care sa afiseze numarul de produse din fiecare
categorie
proc import OUT= date_sas datafile="/home/u61423063/Proiect/DATE_PROIECT.xlsx"
dbms=xlsx REPLACE;
GETNAMES=yes;
run;
PROC GCHART data=date_sas;
PIE Categorie;
title "Numar produse pentru fiecare categorie";
RUN;
QUIT;
Sa se creeze si aplice un format definit de utilizator, utilizand fisierul
DATE_PROIECT.xlsx: (pentru pretul final mai mic de 300 se afiseaza pret mic,pentru
pret final intre 301-799 pret normal, iar pentru pretul final mai mare de 800 se afiseaza
pret ridicat). Se vor afisa informatii referitoare la DenumireProdus, PretFinal, stoc si
Garantie:
proc import OUT= date_sas datafile="/home/u61158177/Proiect/DATE_PROIECT.xlsx"
dbms=xlsx REPLACE;
GETNAMES=yes;
run;
proc format;
value PretFinal low-300 ='Pret mic'
301-799='Pret normal'
800-high='Pret ridicat';
run;
title "PreturiFinale ";
proc print data=date_sas;
var DenumireProdus PretFinal Stoc Garantie;
format PretFinal PretFinal.
run;
Pe baza fisierului DATE_PROIECT.xlsx, sa se creeze un subset de date care contine doar
produsele din categoria audio cu pretul final mai mare de 500, stocul mai mare egal cu 100:

proc import OUT= date_sas datafile="/home/u61158177/Proiect/DATE_PROIECT.xlsx"


dbms=xlsx REPLACE;
GETNAMES=yes;
run;

title "Produse din categoria audio cu pret>500 si stoc>=100 ";


proc print data=date_sas;
where PretFinal>500 and stoc >=100 and Categorie like 'Audio';
var DenumireProdus PretFinal Stoc Garantie;
run;
Sa se utilizeze procedura pentru raportare , pentru variabila PretFinal:

proc univariate data =date_sas PLOT;


var PretFinal;
run;
Sa se analizeze numarul de produse pentru fiecare categorie, utilizand un tabel de frecvente:

Title "Tabela cu frecventa pe categorii";


proc freq data=date_sas;
tables Categorie;
run;
SAS ENTERPRISE

#Sa se importe fisierul excel care contine produsele firmei. Folosint Summary Tables sa se creeze
un raport agregat care reflecta maximul pretului final si suma pretului final pe fiecare categore. Acelasi
lucru si pentru pretul fara TVA

Cod SAS generat


TITLE;
TITLE1 "Summary Tables";
FOOTNOTE;
FOOTNOTE1 "Generated by SAS (&_SASSERVERNAME, &SYSSCPL) on
%TRIM(%QSYSFUNC(DATE(), NLDATE20.)) at %TRIM(%QSYSFUNC(TIME(),
NLTIMAP25.))";
/* -------------------------------------------------------------------
Code generated by SAS Task

Generated on: Saturday, May 28, 2022 at 12:51:13 PM


By task: Summary Tables

Input Data: SASApp:WORK.DATE_PROIECT


Server: SASApp
-------------------------------------------------------------------
*/

/* -------------------------------------------------------------------
Run the tabulate procedure
-------------------------------------------------------------------
*/
PROC TABULATE
DATA=WORK.DATE_PROIECT

VAR Pret PretFinal;


CLASS Categorie / ORDER=UNFORMATTED MISSING;
TABLE /* Row Dimension */
PretFinal*(
Sum
Max)
Pret*(
Max
Sum)
N,
/* Column Dimension */
Categorie ;
;

RUN;
/* -------------------------------------------------------------------
End of task code
-------------------------------------------------------------------
*/
RUN; QUIT;
TITLE; FOOTNOTE;

Rezultat

Sa se selecteze Categoria, Pretul Final si Pretul fara TVA al produselor care sunt fabricate cel putin in
anul 2021

Cod SAS generat:


PROC SQL;
CREATE TABLE WORK.QUERY_FOR_DATE_PROIECT AS
SELECT t1.Categorie,
t1.PretFinal,
t1.'An fabricatie'n
FROM WORK.DATE_PROIECT t1
WHERE t1.'An fabricatie'n >= 2021;
QUIT;
Sa se genereze un grafic care evidentiaza numarul de produse pe fiecare categorie

Cod SAS generat

/* -------------------------------------------------------------------
Code generated by SAS Task

Generated on: Saturday, May 28, 2022 at 2:45:22 PM


By task: Bar Chart

Input Data: SASApp:WORK.DATE_PROIECT


Server: SASApp
-------------------------------------------------------------------
*/

%_eg_conditional_dropds(WORK.SORTTempTableSorted);
/* -------------------------------------------------------------------
Sort data set SASApp:WORK.DATE_PROIECT
-------------------------------------------------------------------
*/

PROC SQL;
CREATE VIEW WORK.SORTTempTableSorted AS
SELECT T.Categorie
FROM WORK.DATE_PROIECT as T
;
QUIT;
Axis1
STYLE=1
WIDTH=1
MINOR=
(NUMBER=1
)

;
Axis2
STYLE=1
WIDTH=1

;
TITLE;
TITLE1 "Bar Chart";
FOOTNOTE;
FOOTNOTE1 "Generated by SAS (&_SASSERVERNAME, &SYSSCPL) on
%TRIM(%QSYSFUNC(DATE(), NLDATE20.)) at %TRIM(%QSYSFUNC(TIME(),
NLTIMAP25.))";
PROC GCHART DATA=WORK.SORTTempTableSorted
;
VBAR
Categorie
/
CLIPREF
FRAME TYPE=FREQ
LEGEND=LEGEND1
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
PATTERNID=MIDPOINT
;
/* -------------------------------------------------------------------
End of task code
-------------------------------------------------------------------
*/
RUN; QUIT;
%_eg_conditional_dropds(WORK.SORTTempTableSorted);
TITLE; FOOTNOTE;

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