Documente Academic
Documente Profesional
Documente Cultură
PYTHON 2
ACCESARE DATE DIN FISIERE (I)
Fișiere: .txt, .csv, xlsx, .json
f = open("C:/Data1.txt")
Fișiere text print(f.read())
Funcția open() returnează un obiect de tip fișier.
Metoda read() citește conținutul fișierului.
Funcția open()care doi parametri: numele fișierului sau calea și modul în care poate fi accesat:
"r" - Read - implicit. Deschide fișierul pentru citire, apare eroare dacă fișierul nu există.
"a" - Append - Deschide fișierul pentru adăugare, creează fișierul dacă nu există.
"w" - Write - Deschide fișierul pentru scriere, creează fișierul dacă nu există.
"x" - Create - creează fișierul, apare eroare dacă fișierul există.
Suplimentar, se pot specifica:
"t" - Text - Implicit. Modul text
"b" - Binary - Modul binar (de ex. imagine)
import csv
with open('clienti_leasing.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print (row)
import pandas as pd
df = pd.read_csv('clienti_leasing.csv')
print(df)
ACCESARE DATE DIN FISIERE (III)
Fișiere .xlsx
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)
NUMPY
• NumPy prescurtarea pentru Numerical Python sau calcule numerice Python.
• NumPy contine:
- Tipul de obiect multidimensional ndarray (n-dimensional array)
- Functii pentru calcule cu vectori sau operatii matematice cu vectori
- Instrumente pentru citirea si scrierea seturilor de date bazate pe vectori
- operatii din algebra liniara, transformata Fourier si generare de numere
aleatoare
- API pentru C sau C++
MATPLOTLIB & SCIPY
• Matplotlib este cea mai populara biblioteca Python pentru realizarea reprezentarilor grafice
• SciPy reprezinta o colectie de pachete pentru rezolvarea unor probleme standard din diferite
domenii
- scipy.integrate: Ofera rutine pentru integrare numerica si calculul ecuatiilor
diferentiale;
- scipy.linalg: Rutine din algebra relationala, prelucrarea avansata matricelor, fiind
superior pachetului numpy.linalg;
- scipy.optimize. Functii de optimizare (minimizare) si algoritmi de identificare a
drumului critic;
- scipy.signal. Instrumente de procesare a semnalului;
- scipy.sparse. Calcule cu matrice si sisteme de ecuatii liniare (sparse);
- scipy.special. O biblioteca Fortran pentru implementarea celor mai populare functii
matematice, cum ar fi functia gamma;
- scipy.stats. Distributii de probabilitati, teste statistice, statistici descriptive.
SCIKIT-LEARN
• Instrumente pentru machine learning in Python, ce includ submodule pentru diverse modele:
• Clasificare: SVM, nearest neighbors, random forest, logistic regression etc.
• Regresia: Lasso, ridge regression etc.
• Clustering: k-means, spectral clustering etc.
• Reducerea dimensionalitatii (Dimensionality reduction): PCA (Principal Component Analysis),
feature selection, matrix factorization etc.
• Selectie model: GridSearch, cross-validation, metrics
• Preprocesare: Feature extraction, feature engineering, scalare, normalizare
STATSMODELS
• In comparatie cu scikit-learn, statsmodels continue algoritmi clasici din statistica si
econometrie. Include submodule, cum ar fi:
• Regresie: liniara, modele liniare generalizate , modele liniare robuste, linear mixed effects
models etc.
• ANOVA
• Analize pe serii de timp: AR, ARMA, ARIMA, VAR etc.
• Nonparametric methods: Kernel density estimation, kernel regression
• Rezultatele analizelor realizate cu statsmodels sunt axate pe indicatori statistici, p-values, in
timp ce rezultatele analizelor efectuate cu scikit-learn, se axeaza mai mult pe predictii.
PACHETUL PANDAS (I)
Contine structuri de date (Dataframe), orientate pe coloane, si instrumente pentru
manipularea datelor, proiectate pentru a realiza mai rapid si mai usor curatarea si
analiza datelor in Python;
data.to_csv("output.csv")
print (type(data.head(5)))
print (type(data.iloc[:,1]))
LOC (I)
• loc : selecteaza linii si coloane dupa denumirea liniilor/colonelor
• Sintaxa: data.loc[<row selection>, <column selection>]
import pandas as pd
data = pd.read_csv('https://s3-eu-west-1.amazonaws.com/shanebucket/downloads/uk-500.csv')
#fixarea indexului pe coloana first_name
data.set_index("first_name", inplace=True)
#selectarea inregistrarilor, fiind afisata doar inregistrarile corespunzatoare
print(data.loc["Antonio"])
print(data.loc[["Antonio", "Peter"]])
import pandas as pd
data = pd.read_csv('https://s3-eu-west-1.amazonaws.com/shanebucket/downloads/uk-500.csv')
#fixarea indexului pe coloana first_name
data.set_index("first_name", inplace=True)
#selectarea coloanelor, implicit first_name este afisata
print(data.loc[["Antonio", "Peter"],['last_name', 'address', 'city']])
import pandas as pd
data = pd.read_csv('https://s3-eu-west-1.amazonaws.com/shanebucket/downloads/uk-500.csv')
#fixarea indexului pe coloana first_name
data.set_index("last_name", inplace=True)
print(data.loc[['Andrade', 'Veness'], 'city':'email'])
print(data.loc['Andrade':'Veness', ['first_name', 'address', 'city']])
LOC (II)
import pandas as pd
data = pd.read_csv('https://s3-eu-west-1.amazonaws.com/shanebucket/downloads/uk-500.csv')
print(data.loc[data['first_name'] == 'Antonio'])
import pandas as pd
data = pd.read_csv('https://s3-eu-west-1.amazonaws.com/shanebucket/downloads/uk-500.csv')
print(data.loc[data['email'].str.endswith("hotmail.com"), 'phone1':'email'])
import pandas as pd
data = pd.read_csv('clienti_leasing.csv')
print(data.loc[data['PRESCORING'] == 7,'NAME_CLIENT'])
• Drop() poate sterge inregistrarile pe baza unor expresii. Stergerea inregistrarilor care contin “ROL“. In
cazul stergerii bazate pe expresii, se va seta mai intai coloana indexata (CURRENCY) :
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv')
df = df.set_index("CURRENCY")
df = df.drop("ROL", axis=0)
print(df)
• Pentru a sterge inregistrarile in functie de pozitia sau indexul acestora, se utilizeaza iloc. Stergerea
primelor cinci inregistrari utilizand iloc
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv')
df = df.iloc[5:,].drop
print(df)
REDENUMIREA COLOANELOR (RENAME)
• Redenumirea coloanelor in pandas se realizeaza in doua moduri prin intermediul functiei rename.
• Redenumirea prin maparea denumilor vechi cu denumirile noi, astfel {“denumire_veche”:
“denumire_noua”, …}
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv')
df.rename(columns={"ID_CLIENT": "COD"}, inplace=True)
print(df)
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv')
df.rename(columns={"ID_CLIENT": "COD","AGE": "VARSTA"}, inplace=True)
print(df)
• Redenumirea printr-o functie care sa schimbe denumirile coloanelor si care se aplica pentru fiecare
coloana.
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv')
df = df.rename(columns=str.lower)
#df = df.rename(columns=lambda x: x.lower().replace(' ', '_'))
print(df)
FUNCTII SERIES
import pandas as pd
df =
pd.read_csv('clienti_leasing.csv',usecols=['NAME_CLIENT','JOB','SEX','DEPOSI
T_AMOUNT','AGE’])
import pandas as pd
df =
pd.read_csv('clienti_leasing20.csv',usecols=['NAME_CLIENT','JOB','SEX','VENIT_PER_YEAR
'])
print(df['VENIT_PER_YEAR'])
print(df['VENIT_PER_YEAR'].fillna(0))
import pandas as pd
df =
pd.read_csv('clienti_leasing20.csv',usecols=['NAME_CLIENT','JOB','SEX','VENIT_PER_YEAR
'])
print(df['VENIT_PER_YEAR'])
values = df['VENIT_PER_YEAR'].mean()
print(df['VENIT_PER_YEAR'].fillna(value=values))
PRELUCRARE DATE TRADITIONAL VS. PANDAS
from pprint import pprint
import pandas as pd
df = pd.read_csv('clienti_daune.csv')
set_clienti=[]
for index, row in df.iterrows():
if row['VALOARE_DAUNA'] > 1000:
set_clienti.append(row)
pprint (set_clienti)
v_marca = input("Introduceti marca: ");
print ("Marca selectata este : ", v_marca)
total_daune=0
for row in set_clienti:
if str(row['MARCA']).find(v_marca.upper())!=-1:
total_daune=total_daune+row['VALOARE_DAUNA']
print ("Valoarea totala a daunelor pentru marca", v_marca, " este: ", total_daune)
/
print ("Valoarea totala a daunelor pentru marca", v_marca, " este: ",
df['VALOARE_DAUNA'][(df['MARCA'] == v_marca) & (df['VALOARE_DAUNA'] >1000)].sum())
EXPORTUL (SALVAREA) SETURILOR PANDAS
• Functia to_csv pentru a salva un set de date intr-un fisier .csv
• Functia to_excel pentru a salva un set de date intr-un fisier Microsoft Excel
• Salvarea prelucrarilor intr-un fisier .csv
• Eliminarea indexului implicit Pandas la nivelul inregistrarilor, se realizeaza cu optiunea index=False.
• Pentru a evita probleme de afisare a caracterelor, se poate utiliza optiunea encoding.
data.to_csv("output_filename.csv", index=False, encoding='utf8’)
• Salvarea prelucrarilor intr-un fisier Excel necesita instalarea pachetului “openpyxl” sau "xlsxwriter".
data.to_excel("output_excel_file.xlsx", sheet_name="Sheet 1", index=False)
TO_CSV
from pprint import pprint
import pandas as pd
df = pd.read_csv('clienti_daune.csv')
set_clienti=[]
for index, row in df.iterrows():
if row['VALOARE_DAUNA'] > 2000:
set_clienti.append(row['ID_CLIENT'])
pprint (set_clienti)
df = pd.DataFrame(set_clienti)
df.to_csv("output_clienti.csv")
/
df=df.loc[df['VALOARE_DAUNA']>2000,'ID_CLIENT']
print(df)
df.to_csv("output_clienti.csv")
PRELUCRARE DATE PANDAS (I)
from pprint import pprint
import pandas as pd
df = pd.read_csv('clienti_daune.csv')
df.to_csv('clienti_daune_mod.csv')
df.to_csv('clienti_daune_mod.csv')
PRELUCRARE DATE PANDAS (II)
import pandas as pd
df = pd.read_csv('clienti_leasing20.csv’)
df['coloana_noua'] = pd.Series()
df.loc[df['JOB']=='Inginer','coloana_noua']=df['VENIT_PER_YEAR']*0.1
df.loc[df['JOB']=='Profesor','coloana_noua']=df['VENIT_PER_YEAR']*0.15
df.loc[(df['JOB']!='Profesor')&(df['JOB']!='Inginer'),'coloana_noua’]=0
print(df)
RECAPITULARE
• Care este diferenta majora dintre Pandas si NumPy?
• Cum sunt stocate datele in Pandas, dar in Numpy?
• Ce rol au loc si iloc? Prin ce difera?
• Cum se realizeaza actualizarea unei valori in Pandas, dar stergerea?
• Ce functie utilizam pentru salvarea seturilor de date in fisiere csv?
• Ce rol are inplace = True?
• Cum putem trata valorile lipsa (NULL)?
• Enumerati cateva functii care pot fi utilizate pe seriile Pandas Python?
• Ce putem face cu pachetul Matplotlib?
SURSE BIBLIOGRAFICE
• https://pandas.pydata.org/pandas-docs/version/0.21/comparison_with_sql.html
• https://www.shanelynn.ie/python-pandas-read_csv-load-data-from-csv-files/
• https://www.shanelynn.ie/select-pandas-dataframe-rows-and-columns-using-iloc-loc-and-ix/
• https://pandas.pydata.org/pandas-docs/version/0.21/api.html#id2
• https://matplotlib.org/gallery/index.html
• https://www.datascience.com/blog/k-means-clustering
• Python for Data Analysis, DATA WRANGLING WITH PANDAS, NUMPY, AND IPYTHON,
Wes McKinney, 2nd edition, 2012, Ed. O’REILLY
• Data Science from Scratch, FIRST PRINCIPLES WITH PYTHON, Joel Grus, 2015, Ed.
O’REILLY
• Python Data Science Handbook, ESSENTIAL TOOLS FOR WORKING WITH DATA, Jake
VanderPlas, 2016, Ed. O’REILLY