Documente Academic
Documente Profesional
Documente Cultură
C O L E C T I I D E D AT E – C U R S 1
INTRODUCERE (I)
• A fost inventat în 1991 de Guido van Rossum;
• Python este limbaj de programare de ultimă generație, ușor de
învățat, ca urmare a sintaxei simple similare cu limba engleză;
• Necesită mai puține linii de cod în comparație cu alte limbaje;
• Python rulează pe diferite sisteme de operare: Windows, Mac,
Linux, Ubuntu, Raspbian etc.;
• Limbajul poate fi utilizat în mai multe medii (IDE): Eclipse,
PyCharm, Thonny, Netbeans, Spyder etc.;
• Conține o bibliotecă vastă de pachete: numpy, pandas,
matplotlib, seaborn, scikit-learn etc.;
• Python se poate conecta la baze de date. Citește și modifică
fișiere;
• Poate gestiona volume mari de date (big data) și efectua
operații matematice complexe.
INTRODUCERE (II)
o Numpy seturi de date omogene,
o Pandas seturi de date neomogene,
o Scipy, Scikit Learn machine learning, IA,
o Keras rețele neuronale, deep learning, IA,
o Matplotlib, Seaborn, Bokeh reprezentare grafică,
o PyPSA pachete specializate pe domenii de
activitate, de exemplu funcționarea optimă pe
principii de piața a generatoarelor electrice,
o BeautifulSoup web-scraping,
o Flask (API-uri) etc.
SINTAXA
• Spre deosebire de alte limbaje (R, C++, Java,
Perl etc.) care utilizeaza paranteze, Python
utilizeaza indentarea (tab sau spatii);
3) seq[3:]=[6, 3] 6)print(seq[::2])
print(seq) #[7, 3, 3]
#[7, 2, 3, 6, 3]
7) print(seq[::-1])
#[3, 6, 3, 2, 7]
Metoda Descriere
append() Adaugă un element la sfârșitul listei
clear() Elimină toate elementele listei #Exemplu 1
copy() Crează o copie a listei b = ['saw', 'small', 'He', 'foxes',
count() Returnează numărul de apariții al elementului în 'six']
b.sort(reverse = True)
listă print(b)
extend() Adăugă elemente la sfârșitul unei liste b.sort(key=len)
print(b)
index() Returnează indexul unui element
insert() Adaugă un element la poziția specificată #['small', 'six', 'saw', 'foxes', 'He’]
pop() Elimină elementul de la poziția specificată #['He', 'six', 'saw', 'small', 'foxes']
COLECTII DE DATE
LISTE METODE
COLECTII DE DATE - TUPLURI
• Tupluri - neomogene, ordonate și nemodificabile, permit elemente identice, ( )
• Accesare element: tuplu[index]
t = tuple(['four', [1, 2], True])
• Utilizand tuple, pot fi transformate liste in tupluri
t = ((7,1), [1, 2], 'mar', False)
• Utilizand list, pot fi transformate tupluri in liste lista = list(t)
• Listele si tuplurile pot fi concatenate cu + gen = range(10)
print(tuple(gen))
Metoda Descriere print(list(gen))
count() Returnează numărul de apariții al
elementului în tuplu: t. count(1) t = tuple(['four', [1, 2], True])
index() Returnează poziția unui element în gen =tuple(range(10))
tuplu: t.index(1) print(t+gen)
Metoda Descriere
add() Adaugă un element
clear() Elimină toate elementele setului
copy() Returnează o copie a setului
difference() Returnează un set reprezentând diferența dintre două sau mai multe seturi
difference_update() Elimină elementele dintr-un set care sunt conținute și de un alt set specificat
discard() Elimină un element specificat
intersection() Returnează un set reprezentând intersecția a două seturi
intersection_update() Elimină elementele dintr-un set care nu sunt în alt set
isdisjoint() Arată dacă două seturi se intersectează sau nu
issubset() Arată dacă un set este inclus într-un alt set sau nu
issuperset() Arată dacă un set conține un alt set sau nu
pop() Elimină un element
remove() Elimină elementul specificat
symmetric_difference() Returnează un set cu elemente necomune celor doua seturi
symmetric_difference_update() Inserează intr-un set diferențele dintre două seturi
union() Returnează un set reprezentând reuniunea a două seturi
update() Actualizează setul cu reuniunea dintre un set și altele
Exemple seturi
my_data1 = [1, 2, 3, 4]
print(set([2, 2, 2, 1, 3, 3])) my_data2 = [4, 5]
#{1, 2, 3} my_set = {tuple(my_data1),
print({2, 2, 2, 1, 3, 3}) tuple(my_data2)}
#{1, 2, 3} print(my_set)
#{(4, 5), (1, 2, 3, 4)}
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7, 8}
print(a.union(b)); print(a | b)
#{1, 2, 3, 4, 5, 6, 7, 8}
print(a)
print(a.intersection(b)); print(a & b)
#{3, 4, 5}
print(a^b)
#{1, 2, 6, 7, 8}
print(a.symmetric_difference_update(b))
print(a)
#{1, 2, 6, 7, 8}
OPERATORI ARITMETICI, ATRIBUIRE,
COMPARATIE
Operator Denumire Exemplu
+ Adunare x+y Operator Exemplu Echivalent
- Scădere x-y
= x=5 x=5
* Înmulțire x*y
/ Împărțire x/y += x += 3 x=x+3
% Restul împărțirii x%y -= x -= 3 x=x-3
** Exponențial x ** y *= x *= 3 x=x*3
// Partea întreagă a x // y /= x /= 3 x=x/3
împărțirii %= x %= 3 x=x%3
//= x //= 3 x = x // 3
Operator Denumire Exemplu **= x **= 3 x = x ** 3
== Egal x == y
!= Diferit x != y
> Mai mare x>y
< Mai mic x<y
>= Mai mare sau egal x >= y
<= Mai mic sau egal x <= y
OPERATORI LOGICI, IDENTITATE,
APARTENENTA
Operator Descriere Exemplu
and Returnează True dacă ambele expresii sunt adevărate x < 5 and x < 10
or Returnează True dacă cel puțin o expresie este adevărată x < 5 or x < 4
not Negația, inversează rezultatul returnând False dacă rezultatul este not(x < 5 and x < 10)
adevărat
if x < 0:
print('It is negative')
elif x == 0:
print('Equal to zero')
elif 0 < x < 5:
print('Positive but smaller than 5')
else:
print('Positive and larger than or equal to 5')
STRUCTURI REPETITIVE (FOR)
sequence = [1, 2, None, 4, None, 5]
total = 0
for value in sequence:
if value is None:
continue
total += value
print(total)
sequence = [1, 2, 0, 4, 6, 5, 2, 1]
total_until_5 = 0
for value in sequence:
if value == 5:
break
total_until_5 += value
print(total_until_5)
for i in range(4):
for j in range(4):
if j < i:
break
print((i, j))
STRUCTURI REPETITIVE (WHILE)
i = 1
while i < 6:
print(i)
if i == 3:
break
i += 1
i = 0
while i < 6:
i += 1
if i == 3:
continue
print(i)
ACCESARE DATE DIN FISIERE (I)
Fișiere: .txt, .csv, .xlsx, .json, .sas7bdat
Fișiere text
import csv
with open('clienti_leasing.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print (row)
- In DataFrame de tip Pandas
import pandas as pd
df = pd.read_csv('clienti_leasing.csv')
print(df)
import json
from pprint import pprint
json_data=open('clienti_daune.json').read()
data = json.loads(json_data)
pprint(data)
import json
import pandas as pd
with open("clienti_daune.json") as f:
data = json.load(f)
dataframe = pd.DataFrame(data)
print(dataframe)
FUNCTII
Functii predefinite:
range(), tuple(), list(), set(), dict(), zip(), int(), str(), complex(),
float(), filter(), map(), input(), max(), min(), sum(), open(),
round(), type() etc.
Functii definite de utilizator:
def nume_functie(lista parametri):
“documentation string of the function or docstring - descrie
functia”
[return …]
#definire functie suma
def suma(*nr):
"functie cu numar variabil de parametri"
return sum(nr)
#apel
print(suma(1,2,3))
Functii anonime: lambda [param1 [,param2,.....paramn]]: expresie
Exemple functii (I)
def my_function(x): def my_function(x = def my_function(x,
result = x**2 100): n):
print (result) result = x**2 result = x**n
return result print (result) print (result)
my_function() return result return result
TypeError: my_function() my_function(5) my_function(4,2)
missing 1 required my_function(n=2,x=4)
positional argument: 'x'
FUNCTII
Exemple functii (II)
def plus(*nr): def plus(*args): double = lambda x: x*2
return sum(nr) total = 0 double(5)
for i in args:
total += i suma = lambda x, y: x + y;
print(plus(1, 2, 5, 5, 6, return total print(suma(1,2))
8))
print(plus(1,2,5,5,6,8)) my_list = [1,2,3,4,5,6,7,8,9,10]
tuplu = (1, 2, 5, 5, 6, 8) filtered_list = list(filter(lambda x: (x*2 > 10), my_list))
print(sum(tuplu))
#[6, 7, 8, 9, 10]
FUNCTII
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option("display.max_columns", 20)
df = pd.read_csv('clienti_leasing.csv')
df.boxplot(column = 'AGE', by = 'MARITAL_STATUS')
plt.show()
def discount(df,p_disc,p_age):
df['DISCOUNT']=df.loc[(df['AGE']>p_age),'VENIT_PER_YEAR']*p_disc
return df
print(discount(df,0.1,30))
FUNCTII
import pandas as pd
pd.set_option("display.max_columns",50)
pd.set_option("display.max_rows",100)
def calcul(den_f):
df = pd.read_csv(den_f)
print(df['value'].sum())
df['payment'] = 0.75*df['value']*1.05
df.loc[(df['hour'] >= 16)&(df['hour'] <23),
'payment'] = df['value']*1.25*0.95
df.sort_values(by=['day'])
print('Payment with ToU tariff')
print(df['payment'].sum())
print('Payment with flat tariff')
print(df['value'].sum())
procent = 100-
df['value'].sum()*100/df['payment'].sum()
print (procent)
print(df)
calcul(den_f='februarie_2010.csv')
DE LUCRU (I)
1. Să se creeze o listă de numere întregi pozitive si negative de 10 elemente. Să se filtreze elementele
listei astfel incat acestea sa fie pozitive și să se afișeze lista ordonata crescător.
2. Se da lista de orase de mai jos. Să se realizeze un dictionar care sa grupeze orasele dupa lungimea
denumirii. Dictionarul va avea valorile si cheile ordonate in ordine crescatoare, respectiv alfabetica.
lista_o = ['Vaslui','Cluj', 'Iasi', 'Alba', 'Oradea', 'Arad', 'Craiova', 'Mehedinti', 'Bucuresti',
'Orastie’]
4. Să dau două liste de liste: lista produse aflate pe stoc (lps cu denumire_produs si cantitate) și lista
produse comandate (lpc cu denumire_produs si cantitate). Să se afiseze numele produselor care nu au fost
comandate. Sa se calculeze diferenta dintre cantitatea aflata pe stoc si cantitatea comandata si sa se
actualizeze cantitatea aflata pe stoc. Daca cantitatea comandata este mai mare decat cantitatea aflata pe
stoc, aceasta va fi egala cu 0.
lps=[['tableta',13], ['tv',50], ['smart_phone',4],['laptop_tip1',41], ['desktop',60], ['tastatura',16],
['monitor32inch',28], ['flipchart',6], ['carioca',200]]
lpc=[['tv',52],['laptop_tip1',20], ['desktop',11], ['tastatura',3], ['monitor32inch',11], ['flipchart',1]]
DE LUCRU (III)
5. Să se creeze o listă de dicționare cu următoarele chei: id, denumire,
pret și cantitate pentru produsele: televizor, laptop, frigider.
lista = [{"id":1, "denumire":"tv", "pret":3500, "cantitate":30},
{"id":2, "denumire":"laptop", "pret":10000, "cantitate":65},
{"id":3, "denumire":"frigider", "pret":2500, "cantitate":48}]
Dacă produsele au pretul mai mare decât 5000 sau cantitatea este mai
mare decat 20, să se reduca pretul cu 5%.