44444444444.
EUGENIA BAHIT
DATA SCIENCE
CU PYTHON
MATERIAL DE STUDIU
Rapoarte și înregistrare:
Curs: http://escuela.eugeniabahit.com | Certificari: http://python.laeci.org
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
REZUMAT
METODE DE MANIPULARE VARIABILE..........................................................................................................5
MANIPULAREA ȘIRURILOR DE TEXT..............................................................................................................5
METODE DE FORMAT......................................................................................................................................5
Prima literă cu majuscule...................................................................................................................................5
CONVERȚI UN ȘIR ÎN MINUSCULE............................................................................................................5
CONVERTĂ UN ȘIR ÎN MAJUSCULE..........................................................................................................6
CONVERSAȚI MAJUSCULE ÎN MINUSCULE ȘI VICE-VERSA...............................................................6
CONVERTĂ UN ȘIR ÎN FORMATUL DE TITL...........................................................................................6
CENTRAȚI UN TEXT......................................................................................................................................6
ALINIAȚI TEXTUL LA STÂNGA..................................................................................................................6
Aliniați textul la dreapta....................................................................................................................................7
COMPLETAREA UNUI TEXT PREVĂTÂND ZEROURI............................................................................7
METODE DE CĂUTARE....................................................................................................................................7
NUMĂRĂ NUMĂR DE APARIȚII ALE UNUI SUBȘIR...............................................................................7
CĂUTAȚI UN SUBȘIR ÎNTR-UN ȘIR...........................................................................................................7
METODE DE VALIDARE...................................................................................................................................8
ȘTIȚI DACĂ UN ȘIR ÎNCEPE CU UN ANUMIT ȘIR...................................................................................8
ȘTIȚI DACĂ UN ȘIR SE Termină CU UN ANUMIT ȘIR..............................................................................8
ȘTIȚI DACĂ UN ȘIR ESTE ALFANUMERIC...............................................................................................8
ȘTIȚI DACĂ UN ȘIR ESTE ALFABETIC......................................................................................................8
ȘTIȚI DACĂ UN ȘIR ESTE NUMERICAL....................................................................................................9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MINUSCULE................................................................................9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MAJUSCULE................................................................................9
ȘTIȚI DACĂ UN ȘIR CONTINE NUMAI SPAȚII ALTE............................................................................10
ȘTIȚI DACĂ UN ȘIR ARE FORMAT DE TITL...........................................................................................10
METODE DE SUBSTITUȚIE............................................................................................................................10
FORMATATE UN ȘIR, ÎNLOCUIȚI DINAMIC TEXTUL..........................................................................10
ÎNLOCUIȚI TEXTUL ÎNTR-UN ȘIR............................................................................................................11
ELIMINAȚI PERSONAJELE DIN STÂNGA ȘI DREPTEA UNUI ȘIR......................................................11
ȘTERGEȚI CARACTERELE DIN STÂNGA UNUI ȘIR.............................................................................11
ELIMINAȚI PERSONAJELE DIN DREAPTA UNUI ȘIR...........................................................................11
METODE DE UNIRE ȘI DIVIZARE................................................................................................................11
ÎNSCRIEȚI-VĂ ITERATIV LA UN SIR.......................................................................................................11
-2-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
RUPE UN LANT IN TREI PARTE, FOLOSIND UN SEPARATOR...........................................................12
RUPEREA UNUI LANȚ ÎN MAI MULTE PĂRȚI, FOLOSIND UN SEPARATOR..................................12
DESPARTAREA UNUI LANȚ ÎN LINII.......................................................................................................12
MANIPULARE LISTĂ ȘI TUPLU........................................................................................................................14
METODE AGREGATE......................................................................................................................................14
ADĂUGAȚI UN ARTICOL LA sfârșitul listei..............................................................................................14
Adăugați mai multe articole la sfârșitul listei..................................................................................................14
ADĂUGAȚI UN ELEMENT ÎNTR-O POZIȚIE DETERMINATĂ.............................................................14
METODE DE ELIMINAREA............................................................................................................................14
ȘTERGEȚI ULTIMUL ARTICOL DIN LISTĂ.............................................................................................14
ȘTERGEȚI UN ELEMENT DUPĂ INDEXUL SĂU....................................................................................15
ȘTERGEȚI UN ELEMENT DUPĂ VALOAREA SA...................................................................................15
METODE DE COMANDA................................................................................................................................15
SORTEAȚI O LISTĂ ÎN INVERS (ORDINE INVERSĂ)............................................................................15
SORTAZĂ O LISTĂ ÎN FORMA ASCENDĂTORĂ....................................................................................15
SORTEAȚI O LISTĂ ÎN FORMA DESCENDĂTORĂ................................................................................15
METODE DE CĂUTARE..................................................................................................................................15
NUMĂRĂ NUMĂRUL DE APARIȚII..........................................................................................................15
OBȚINEȚI NUMĂRUL DE INDEX..............................................................................................................16
ANEXĂ DESPRE LISTE ȘI TUPLE.................................................................................................................16
CONVERSIE DE TIP......................................................................................................................................16
CONCATENAREA COLECȚILOR...............................................................................................................17
VALOARE MAXIMA SI MINIMA...............................................................................................................20
NUMĂRĂ ELEMENTE..................................................................................................................................20
MANIPULAREA DICTIONARULUI...................................................................................................................22
METODE DE ELIMINAREA............................................................................................................................22
GOLȚI UN DICȚIONAR................................................................................................................................22
METODE DE ADUGARE SI CREARE............................................................................................................22
COPIEAZĂ UN DICȚIONAR........................................................................................................................22
CREAȚI UN NOU DICȚIONAR DIN CHEILE LUI A.................................................................................23
SECVENŢĂ.....................................................................................................................................................23
DICTIONARE CONCATENATE..................................................................................................................23
SETĂ O CHEIE ȘI O VALOARE IMPLICITE.............................................................................................23
METODE DE RETURNARE.............................................................................................................................24
OBȚINE VALOAREA CHEIEI......................................................................................................................24
ȘTIȚI DACĂ EXISTA O CHEIE ÎN DICȚIONAR.......................................................................................24
OBȚINEREA CHEILOR ȘI VALORILOR UNUI DICȚIONAR..................................................................24
-3-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
OBȚINEȚI CHEILE UNUI DICȚIONAR......................................................................................................24
OBȚINE VALORILE UNUI DICȚIONAR....................................................................................................25
OBȚINEȚI NUMĂRUL DE ARTICOLE ÎNTR-UN DICȚIONAR..............................................................25
MANIPULAREA SI MANIPULAREA DOSARELOR........................................................................................27
CĂI DE DESCHIDERE A UNUI DOSAR.........................................................................................................27
UNELE METODE ALE OBIECTULUI DOSAR..............................................................................................29
MANIPULAREA FIȘIERELOR CSV...................................................................................................................30
CATEVA EXEMPLE DE FISIERE CSV...........................................................................................................30
LUCRU CU FIȘIERE CSV DIN PYTHON.......................................................................................................32
CITIREA FIȘIERELOR CSV.........................................................................................................................32
SCRIEREA FIȘIERELOR CSV......................................................................................................................37
PROBABILITATE SI STATISTICA CU PYTHON.............................................................................................40
PROBABILITATEA EVENIMENTELOR SIMPLE ȘI COMPUSE MUTUAL EXCLUSIVE ÎN PYTHON.40
SPAȚIU EȘANȚĂ...........................................................................................................................................40
EVENIMENTE SIMPLE SI COMPUSE........................................................................................................40
ATRIBUIREA COTELOR..............................................................................................................................41
EVENIMENTE SIMPLE SE EXCLUSIVE MUTU...................................................................................41
EVENIMENTE COMPUSE DIN EVENIMENTE SIMPLE MUTUAL EXCLUSIVE.............................42
FUNCȚII..........................................................................................................................................................43
PROBABILITATE CONDIȚIONATĂ ÎN PYTHON........................................................................................43
FUNCȚII..........................................................................................................................................................44
EVENIMENTE DEPENDENTE.....................................................................................................................44
TEORIA MULTILOR ÎN PYTHON...........................................................................................................46
EVENIMENTE INDEPENDENTE................................................................................................................46
TEOREMA LUI BAYES ÎN PYTHON..............................................................................................................47
TEOREMA LUI BAYES SI PROBABILITATEA CAUZELOR..................................................................47
DATE: STUDIU DE CAZ...........................................................................................................................47
ANALIZĂ....................................................................................................................................................48
PROCEDURĂ..............................................................................................................................................49
FUNCȚII..........................................................................................................................................................54
LITTURĂ A MULTE......................................................................................................................................54
ANEXA I: CALCULE COMPLEXE.....................................................................................................................60
POPULAȚIE ȘI EȘANȚĂ DE STATISTICĂ: CALCULUL DE......................................................................60
VARIANȚA ȘI DEVIAȚIA STANDARD.........................................................................................................60
PRODUS DIN DOI VECTORI...........................................................................................................................61
CALCULURI DE FRECVENȚĂ RELATIVE, ABSOLUTE ȘI ACUMULATE.............................................61
ANEXA II: CREAREA UNUI MENIU DE OPȚIUNI..........................................................................................63
-4-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
METODE DE MANIPULARE VARIABILE
În Python, fiecare variabilă este considerată un obiect . Pe fiecare obiect pot fi efectuate diferite tipuri de acțiuni
numite metode . Metodele sunt funcții, dar sunt derivate dintr-o variabilă. Prin urmare, aceste funcții sunt
accesate folosind sintaxa:
variabilă.funcție()
În unele cazuri, aceste metode (funcțiile unui obiect) vor accepta parametrii ca orice altă funcție.
variabilă.funcție(parametru)
MANIPULAREA ȘIRURILOR DE TEXT
În continuare, vom vedea principalele metode care pot fi aplicate unui șir de text, organizate pe categorii.
METODE DE FORMAT
Prima literă cu majuscule
Metoda: capitalize()
Returnează: o copie a șirului cu prima literă scrisă cu majuscule
> >> șir = „Bine ați venit la aplicația mea”
> >> rezultat = string.capitalize()
> >> rezultat
bun venit la aplicația mea
CONVERȚI UN ȘIR ÎN MINUSCULE
Metoda: mai jos()
Returnează: o copie a șirului cu minuscule
> >> șir = „Bună lume”
> >> șir. inferior()
-5-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Salut Lume
CONVERTĂ UN ȘIR ÎN MAJUSCULE
Metoda: top()
Returnează: o copie a șirului în majuscule
> >> șir = „Bună lume”
> >> șir. top()
SALUT LUME
CONVERSAȚI MAJUSCULE ÎN MINUSCULE ȘI VICE-VERSA
Metodă: swapcase()
Returnează: o copie a șirului convertită din majuscule în minuscule și invers
> >> șir = „Bună lume”
> >> șir. schimb de caz ()
Salut Lume
CONVERTĂ UN ȘIR ÎN FORMATUL DE TITL
Metoda: title()
Returnează: o copie a șirului convertit
> >> șir = „bună lume”
> >> șir. titlu()
Salut Lume
CENTRAȚI UN TEXT
Metodă: centru (lungime[, „caracter de umplutură”)
Returnează: o copie a șirului centrat
> >> șir = „Bine ați venit în aplicația mea”. Capitalize()
> >> șir. centru(50, "=")
===========Bine ați venit la aplicația mea=============
> >> șir. centru(50, " ")
bun venit la aplicația mea
ALINIAȚI TEXTUL LA STÂNGA
Metodă: ljust(lungime[, „caracter de umplutură”])
Returnează: o copie aliniată la stânga a șirului
> >> șir = „Bine ați venit în aplicația mea”. Capitalize()
>>> șir. ljust(50, "=")
Bun venit la aplicația mea==========================
-6-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Aliniați textul la dreapta
Metodă: rjust(lungime[, „caracter de umplutură”])
Returnează: o copie aliniată la dreapta a șirului
>>> șir = „Bine ați venit în aplicația mea”. Capitalize()
>>> șir. rjust(50, "=")
======================= Bun venit în aplicația mea
>>> șir. rjust(50, " ")
bun venit la aplicația mea
COMPLETAREA UNUI TEXT PREVĂTÂND ZEROURI
Metodă: zfill(lungime)
Returnează: o copie a șirului căptușită cu zerouri la stânga până când atinge lungimea finală indicată
>>> număr_factură = 1575
>>> str(numar_factura). zfill(12)
000000001575
METODE DE CĂUTARE
NUMĂRĂ NUMĂR DE APARIȚII ALE UNUI SUBȘIR
Metodă: count(„subșir”[, start_position, end_position])
Returnează: un număr întreg care reprezintă numărul de apariții ale subșirului în șir
>>> șir = „Bine ați venit în aplicația mea”. Capitalize()
>>> șir. count("a")
3
CĂUTAȚI UN SUBȘIR ÎNTR-UN ȘIR
Metodă: find(„subșir”[, start_position, end_position])
Returnează: un număr întreg care reprezintă poziția de pornire a subșirului din interior
lanţ. Dacă nu îl găsește, returnează -1
>>> șir = „Bine ați venit în aplicația mea”. Capitalize()
>>> șir. gaseste ("al meu")
13
>>> șir. găsiți ("meu", 0, 10)
-1
-7-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
METODE DE VALIDARE
ȘTIȚI DACĂ UN ȘIR ÎNCEPE CU UN ANUMIT ȘIR
Metodă: startswith(„subșir”[, start_position, end_position])
Returnează: adevărat sau fals
> >> șir = „Bine ați venit în aplicația mea”. Capitalize()
> >> șir. începe cu ("Bun venit")
Adevărat
> >> șir. începe cu ("aplicație")
fals
> >> șir. începe cu ("aplicație", 16)
Adevărat
ȘTIȚI DACĂ UN ȘIR SE Termină CU UN ANUMIT ȘIR
Metodă: endswith(„subșir”[, start_position, end_position])
Returnează: adevărat sau fals
> >> șir = „Bine ați venit în aplicația mea”. Capitalize()
> >> șir. se termina cu ("aplicare")
Adevărat
> >> șir. endswith("Bine ai venit")
fals
> >> șir. endswith("Bun venit", 0, 10)
Adevărat
ȘTIȚI DACĂ UN ȘIR ESTE ALFANUMERIC
Metoda: isalnum()
Returnează: adevărat sau fals
> >> șir = "pepegrillo 75"
> >> șir. isalnum()
fals
> >> șir = „pepegrillo”
> >> șir. isalnum()
Adevărat
> >> șir = „pepegrillo75”
> >> șir. isalnum()
Adevărat
ȘTIȚI DACĂ UN ȘIR ESTE ALFABETIC
Metoda: isalpha()
Returnează: adevărat sau fals
> >> șir = "pepegrillo 75"
> >> șir. isalpha()
fals
-8-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
> >> șir = „pepegrillo”
> >> șir. isalpha()
Adevărat
> >> șir = „pepegrillo75”
> >> șir. isalpha()
fals
ȘTIȚI DACĂ UN ȘIR ESTE NUMERICAL
Metoda: isdigit()
Returnează: adevărat sau fals
> >> șir = "pepegrillo 75"
> >> șir. isdigit()
fals
> >> șir = „7584”
> >> șir. isdigit()
Adevărat
> >> șir = „75 84”
> >> șir. isdigit()
fals
> >> șir = "75.84"
> >> șir. isdigit()
fals
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MINUSCULE
Metoda: islower()
Returnează: adevărat sau fals
> >> șir = „jimmy cricket”
> >> șir. este mai jos()
Adevărat
> >> șir = „Jiminy Cricket”
> >> șir. este mai jos()
fals
> >> șir = „Pepegrickillo”
> >> șir. este mai jos()
fals
> >> șir = „pepegrillo75”
> >> șir. este mai jos()
Adevărat
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MAJUSCULE
Metoda: isupper()
Returnează: adevărat sau fals
> >> șir = „JIMNY CRICKET”
> >> șir. isupper()
Adevărat
> >> șir = „Jiminy Cricket”
> >> șir. isupper()
fals
-9-
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
> >> șir = „Pepegrickillo”
> >> șir. isupper()
fals
> >> șir = „PEPEGRILLO”
> >> șir. isupper()
Adevărat
ȘTIȚI DACĂ UN ȘIR CONTINE NUMAI SPAȚII ALTE
Metoda: isspace()
Returnează: adevărat sau fals
> >> șir = „jimmy cricket”
> >> șir. isspace()
fals
> >> șir = " "
> >> șir. isspace()
Adevărat
ȘTIȚI DACĂ UN ȘIR ARE FORMAT DE TITL
Metoda: istitle()
Returnează: adevărat sau fals
> >> șir = „Jiminy Cricket”
> >> șir. istitle()
Adevărat
> >> șir = „Jimmy Cricket”
> >> șir. istitle()
fals
METODE DE SUBSTITUȚIE
FORMATATE UN ȘIR, ÎNLOCUIȚI DINAMIC TEXTUL
Metodă: format(*args, **kwargs)
Returnează: șirul formatat
> >> șir = „Bine ați venit la aplicația mea {0}”
> >> șir. format ("în Python")
bun venit la aplicația mea python
> >> șir = „Suma brută: ${0} + TVA: ${1} = Sumă netă: {2}”
> >> șir. format (100, 21, 121)
Sumă brută: 100 USD + TVA: 21 USD = Sumă netă: 121
> >> string = "Suma brută: ${brut} + TVA: ${iva} = Sumă netă: {net}"
> >> șir. format(brut=100, tva=21, net=121)
Sumă brută: 100 USD + TVA: 21 USD = Sumă netă: 121
> >> șir. format(brut=100, tva=100 * 21 / 100, net=100 * 21 / 100 + 100)
Sumă brută: 100 USD + TVA: 21 USD = Sumă netă: 121
- 10 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
ÎNLOCUIȚI TEXTUL ÎNTR-UN ȘIR
Metodă: înlocuiți ("subșir de căutat", "subșir de înlocuit cu")
Returnează: șirul înlocuit
> >> cautare = "prenume prenume"
> >> replace_by = "Juan Pérez"
> >> „Stimate domnule prenume prenume:”. înlocuiți(căutați, înlocuiți_prin) Stimate domnule Juan Pérez:
ELIMINAȚI PERSONAJELE DIN STÂNGA ȘI DREPTEA UNUI ȘIR
Metoda: strip(["caracter"])
Returnează: șirul înlocuit
> >> șir = " www.eugeniabahit.com "
> >> șir. bandă()
www.eugeniabahit.com
> >> șir. bandă(' ')
www.eugeniabahit.com
ȘTERGEȚI CARACTERELE DIN STÂNGA UNUI ȘIR
Metodă: lstrip([„caracter”])
Returnează: șirul înlocuit
> >> șir = " www.eugeniabahit.com "
> >> șir. lstrip("w." )
eugeniabahit.com
> >> șir = " www.eugeniabahit.com "
> >> șir. lstrip()
www.eugeniabahit.com
ELIMINAȚI PERSONAJELE DIN DREAPTA UNUI ȘIR
Metodă: rstrip([„caracter”])
Returnează: șirul înlocuit
> >> șir = " www.eugeniabahit.com "
> >> șir. rstrip( )
www.eugeniabahit.com
METODE DE UNIRE ȘI DIVIZARE
ÎNSCRIEȚI-VĂ ITERATIV LA UN SIR
Metodă: alăturați (iterabil)
Returnează: șirul îmbinat cu iterabilul (șirul este separat de fiecare dintre elementele iterabilului)
>>> invoice_number_format = ("Nr 0000-0", "-0000 (ID: ", ")")
- 11 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
>>> număr = "275"
> >> invoice_number = număr. join(invoice_number_format)
> >> număr_factură
Nr. 0000-0275-0000 (ID: 275)
RUPE UN LANT IN TREI PARTE, FOLOSIND UN SEPARATOR
Metodă: partiție ("separator")
Returnează: un tuplu de trei elemente în care primul este conținutul șirului înainte de separator, al doilea este
separatorul în sine, iar al treilea este conținutul șirului după separator
> >> tuplu = „http://www.eugeniabahit.com”. partiție ("www.")
> >> tuplu
(„http://”, „www.”, „eugeniabahit.com”)
> >> protocol, separator, domeniu = tuplu
>>>> „Protocol: {0}\nDomeniu: {1}”.format(protocol, domeniu) Protocol: http://
Domeniu: eugeniabahit.com
RUPEREA UNUI LANȚ ÎN MAI MULTE PĂRȚI, FOLOSIND UN SEPARATOR
Metoda: split ("separator")
Returnează: o listă cu toate elementele găsite prin împărțirea șirului cu un separator
>>> cuvinte cheie = „python, ghid, curs, tutorial”. Despică(", ")
> >> cuvinte cheie
['python', 'ghid', 'curs', 'tutorial']
DESPARTAREA UNUI LANȚ ÎN LINII
Metodă: splitlines()
Returnează: o listă în care fiecare element este o fracțiune din șirul împărțit în linii
>>> text = """Rândul 1
randul 2
linia 3
Linia 4 """
> >> text. linii de scindare()
[„Linia 1”, „Linia 2”, „Linia 3”, „Linia 4”]
> >> text = "Rând 1\nLinie 2\nLinie 3"
> >> text. linii de scindare()
[„Linia 1”, „Linia 2”, „Linia 3”]
- 12 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
MANIPULARE LISTĂ ȘI TUPLU
În acest capitol, vom vedea metodele pe care le posedă obiectul listă . Unele dintre ele sunt
disponibile și pentru tuplu .
METODE AGREGATE
ADĂUGAȚI UN ARTICOL LA sfârșitul listei
Metoda: append(„articol nou”)
> >> nume_masculi = ["Alvaro", "Jacinto", "Miguel", "Edgardo", "David"]
> >> nume_de_masculi. append(„Iosif”)
> >> nume_de_masculi
[„Alvaro”, „David”, „Edgardo”, „Jacinto”, „Jose”, „Ricky”, „Jose”]
Adăugați mai multe articole la sfârșitul listei
Metodă: extinde(other_list)
> >> nume_de_masculi. extinde(["Iosif", "Gerardo"])
> >> nume_de_masculi
[„Alvaro”, „David”, „Edgardo”, „Jacinto”, „Jose”, „Ricky”, „Jose”, „Jose”, „Gerardo”]
ADĂUGAȚI UN ELEMENT ÎNTR-O POZIȚIE DETERMINATĂ
Metodă: insert (poziție, „element nou”)
> >> nume_de_masculi. insert(0, "Ricky")
> >> nume_de_masculi
[„Ricky”, „Alvaro”, „David”, „Edgardo”, „Jacinto”, „Jose”, „Ricky”, „Jose”, „Jose”, „Gerardo”]
METODE DE ELIMINAREA
ȘTERGEȚI ULTIMUL ARTICOL DIN LISTĂ
Metoda: pop()
Returnează: elementul eliminat
> >> nume_de_masculi. pop()
"Gerardo"
> >> nume_de_masculi
[„Ricky”, „Alvaro”, „David”, „Edgardo”, „Jacinto”, „Jose”, „Ricky”, „Jose”, „Jose”]
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
ȘTERGEȚI UN ELEMENT DUPĂ INDEXUL SĂU
Metoda: pop(index)
Returnează: elementul eliminat
>>> nume_de_masculi. pop (3)
„Edgardo”
>>> nume_de_masculi
[„Ricky”, „Alvaro”, „David”, „Jacinto”, „Jose”, „Ricky”, „Jose”, „Jose”]
ȘTERGEȚI UN ELEMENT DUPĂ VALOAREA SA
Metoda: elimina ("valoare")
>>> nume_de_masculi. elimina ("Jose")
>>> nume_de_masculi
[„Ricky”, „Alvaro”, „David”, „Jacinto”, „Ricky”, „Jose”, „Jose”]
METODE DE COMANDA
SORTEAȚI O LISTĂ ÎN INVERS (ORDINE INVERSĂ)
Metoda: invers ()
>>> nume_de_masculi. verso()
>>> nume_de_masculi
[„Jose”, „Jose”, „Ricky”, „Jacinto”, „David”, „Alvaro”, „Ricky”]
SORTAZĂ O LISTĂ ÎN FORMA ASCENDĂTORĂ
Metoda: sortare()
>>> nume_de_masculi. fel()
>>> nume_de_masculi
[„Alvaro”, „David”, „Jacinto”, „Jose”, „Jose”, „Ricky”, „Ricky”]
SORTEAȚI O LISTĂ ÎN FORMA DESCENDĂTORĂ
Metodă: sortare(invers=adevărat)
>>> nume_de_masculi. sortare(invers=Adevărat)
>>> nume_de_masculi
[„Ricky”, „Ricky”, „Jose”, „Jose”, „Jacinto”, „David”, „Alvaro”]
METODE DE CĂUTARE
NUMĂRĂ NUMĂRUL DE APARIȚII
Metodă: numărare (element)
>>> nume_masculi = ["Alvaro", "Miguel", "Edgardo", "David", "Miguel"]
- 15 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
>>> nume_de_masculi. count("Miguel") 2 >>> male_names = ("Alvaro", "Miguel", "Edgardo", "David", "Miguel")
>>> nume_de_masculi. conte ("Michael")
2
OBȚINEȚI NUMĂRUL DE INDEX
Metodă: index(element[, start_index, end_index])
>>> nume_de_masculi. index ("Michael") 1
>>> nume_de_masculi. index(„Michael”, 2, 5) 4
ANEXĂ DESPRE LISTE ȘI TUPLE
CONVERSIE DE TIP
În setul de funcții încorporate în Python, este posibil să găsiți două funcții care vă permit să convertiți liste în
tupluri și invers. Aceste funcții sunt list și tuple , pentru a converti tupluri în liste și, respectiv, liste în tuplu.
Una dintre cele mai frecvente utilizări este convertirea tuplurilor în liste, care trebuie modificate. Acest lucru se
întâmplă adesea cu rezultatele obținute dintr-o interogare de bază de date.
>>> tuplu = (1, 2, 3, 4)
>>> tuplu (1, 2, 3, 4)
>>> lista(tuplu)
[1, 2, 3, 4]
>>> lista = [1, 2, 3, 4]
>>> lista [1, 2, 3, 4]
>>> tuplu(lista)
(1, 2, 3, 4)
- 16 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
CONCATENAREA COLECȚILOR
Puteți concatena (sau alătura) două sau mai multe liste sau două sau mai multe tupluri, folosind semnul plus +.
Nu puteți alătura o listă la un tuplu. Colecțiile de alăturat trebuie să fie de același tip.
>>> list1 = [1, 2, 3, 4]
> >> list2 = [3, 4, 5, 6, 7, 8]
> >> lista3 = lista1 + lista2
> >> lista3
[1, 2, 3, 4, 3, 4, 5, 6, 7, 8]
METODE DE MANIPULARE VARIABILE 5
MANIPULAREA ȘIRURILOR DE TEXT 5
METODE DE FORMAT 5
Prima literă cu majuscule 5
CONVERȚI UN ȘIR ÎN MINUSCULE 5
CONVERTĂ UN ȘIR ÎN MAJUSCULE 6
CONVERSAȚI MAJUSCULE ÎN MINUSCULE ȘI VICE-VERSA 6
CONVERTĂ UN ȘIR ÎN FORMATUL DE TITL 6
CENTRAȚI UN TEXT 6
ALINIAȚI TEXTUL LA STÂNGA 6
Aliniați textul la dreapta 7
COMPLETAREA UNUI TEXT PREVĂTÂND ZEROURI 7
METODE DE CĂUTARE 7
NUMĂRĂ NUMĂR DE APARIȚII ALE UNUI SUBȘIR 7
CĂUTAȚI UN SUBȘIR ÎNTR-UN ȘIR 7
METODE DE VALIDARE 8
ȘTIȚI DACĂ UN ȘIR ÎNCEPE CU UN ANUMIT ȘIR 8
ȘTIȚI DACĂ UN ȘIR SE Termină CU UN ANUMIT ȘIR 8
ȘTIȚI DACĂ UN ȘIR ESTE ALFANUMERIC 8
ȘTIȚI DACĂ UN ȘIR ESTE ALFABETIC 8
ȘTIȚI DACĂ UN ȘIR ESTE NUMERICAL 9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MINUSCULE 9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MAJUSCULE 9
ȘTIȚI DACĂ UN ȘIR CONTINE NUMAI SPAȚII ALTE 10
ȘTIȚI DACĂ UN ȘIR ARE FORMAT DE TITL 10
METODE DE SUBSTITUȚIE 10
FORMATATE UN ȘIR, ÎNLOCUIȚI DINAMIC TEXTUL 10
ÎNLOCUIȚI TEXTUL ÎNTR-UN ȘIR 11
ELIMINAȚI PERSONAJELE DIN STÂNGA ȘI DREPTEA UNUI ȘIR 11
- 17 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
ȘTERGEȚI CARACTERELE DIN STÂNGA UNUI ȘIR 11
ELIMINAȚI PERSONAJELE DIN DREAPTA UNUI ȘIR 11
METODE DE UNIRE ȘI DIVIZARE 11
ÎNSCRIEȚI-VĂ ITERATIV LA UN SIR 11
RUPE UN LANT IN TREI PARTE, FOLOSIND UN SEPARATOR 12
RUPEREA UNUI LANȚ ÎN MAI MULTE PĂRȚI, FOLOSIND UN SEPARATOR 12
DESPARTAREA UNUI LANȚ ÎN LINII 12
MANIPULARE LISTĂ ȘI TUPLU 14
METODE AGREGATE 14
ADĂUGAȚI UN ARTICOL LA sfârșitul listei 14
Adăugați mai multe articole la sfârșitul listei 14
ADĂUGAȚI UN ELEMENT ÎNTR-O POZIȚIE DETERMINATĂ 14
METODE DE ELIMINAREA 14
ȘTERGEȚI ULTIMUL ARTICOL DIN LISTĂ 14
ȘTERGEȚI UN ELEMENT DUPĂ INDEXUL SĂU 15
ȘTERGEȚI UN ELEMENT DUPĂ VALOAREA SA 15
METODE DE COMANDA 15
SORTEAȚI O LISTĂ ÎN INVERS (ORDINE INVERSĂ) 15
SORTAZĂ O LISTĂ ÎN FORMA ASCENDĂTORĂ 15
SORTEAȚI O LISTĂ ÎN FORMA DESCENDĂTORĂ 15
METODE DE CĂUTARE 15
NUMĂRĂ NUMĂRUL DE APARIȚII 15
OBȚINEȚI NUMĂRUL DE INDEX 16
ANEXĂ DESPRE LISTE ȘI TUPLE 16
CONVERSIE DE TIP 16
CONCATENAREA COLECȚILOR 17
VALOARE MAXIMA SI MINIMA 20
NUMĂRĂ ELEMENTE 20
MANIPULAREA DICTIONARULUI 22
METODE DE ELIMINAREA 22
GOLȚI UN DICȚIONAR 22
METODE DE ADUGARE SI CREARE 22
COPIEAZĂ UN DICȚIONAR 22
CREAȚI UN NOU DICȚIONAR DIN CHEILE LUI A 23
SECVENŢĂ 23
DICTIONARE CONCATENATE 23
SETĂ O CHEIE ȘI O VALOARE IMPLICITE 23
- 18 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
METODE DE RETURNARE 24
OBȚINE VALOAREA CHEIEI 24
ȘTIȚI DACĂ EXISTA O CHEIE ÎN DICȚIONAR 24
OBȚINEREA CHEILOR ȘI VALORILOR UNUI DICȚIONAR 24
OBȚINEȚI CHEILE UNUI DICȚIONAR 24
OBȚINE VALORILE UNUI DICȚIONAR 25
OBȚINEȚI NUMĂRUL DE ARTICOLE ÎNTR-UN DICȚIONAR 25
MANIPULAREA SI MANIPULAREA DOSARELOR 27
CĂI DE DESCHIDERE A UNUI DOSAR 27
UNELE METODE ALE OBIECTULUI DOSAR 29
MANIPULAREA FIȘIERELOR CSV 30
CATEVA EXEMPLE DE FISIERE CSV 30
LUCRU CU FIȘIERE CSV DIN PYTHON 32
CITIREA FIȘIERELOR CSV 32
SCRIEREA FIȘIERELOR CSV 37
PROBABILITATE SI STATISTICA CU PYTHON 40
PROBABILITATEA EVENIMENTELOR SIMPLE ȘI COMPUSE MUTUAL EXCLUSIVE ÎN PYTHON 40
SPAȚIU EȘANȚĂ 40
EVENIMENTE SIMPLE SI COMPUSE 40
ATRIBUIREA COTELOR 41
EVENIMENTE SIMPLE SE EXCLUSIVE MUTU 41
EVENIMENTE COMPUSE DIN EVENIMENTE SIMPLE MUTUAL EXCLUSIVE 42
FUNCȚII 43
PROBABILITATE CONDIȚIONATĂ ÎN PYTHON 43
FUNCȚII 44
EVENIMENTE DEPENDENTE 44
TEORIA MULTILOR ÎN PYTHON 46
EVENIMENTE INDEPENDENTE 46
TEOREMA LUI BAYES ÎN PYTHON 47
TEOREMA LUI BAYES SI PROBABILITATEA CAUZELOR 47
DATE: STUDIU DE CAZ 47
ANALIZĂ 48
PROCEDURĂ 49
FUNCȚII 54
LITTURĂ A MULTE 54
ANEXA I: CALCULE COMPLEXE 60
POPULAȚIE ȘI EȘANȚĂ DE STATISTICĂ: CALCULUL DE 60
- 19 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
VARIANȚA ȘI DEVIAȚIA STANDARD 60
PRODUS DIN DOI VECTORI 61
CALCULURI DE FRECVENȚĂ RELATIVE, ABSOLUTE ȘI ACUMULATE 61
ANEXA II: CREAREA UNUI MENIU DE OPȚIUNI 63
>
> >> tuplu4 = tuplu1 + tuplu2 + tuplu3
> >> tuplu4
(1, 2, 3, 4, 5, 4, 6, 8, 10, 3, 5, 7, 9)
VALOARE MAXIMA SI MINIMA
Puteți obține valoarea maximă și minimă atât a listelor, cât și a tuplurilor:
> >> max(tuplu4)
10
> >> max(tuplu1)
5
> >> min(tuplu1)
1
> >> max(lista3)
8
> >> min(lista1)
1
NUMĂRĂ ELEMENTE
Funcția len() este utilizată pentru a număra elementele unei liste sau tuplu, precum și caracterele unui șir de text:
> >> len(lista3)
10
> >> len(lista1)
4
- 20 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
MANIPULAREA DICTIONARULUI
METODE DE ELIMINAREA
GOLȚI UN DICȚIONAR
Metoda: clear()
>>> dicționar = {"culoare": "violet", "dimensiune": "XS", "preț": 174,25}
> >> dictionar
{„culoare”: „violet”, „preț”: 174,25, „dimensiune”: „XS”}
> >> dicționar .clear()
> >> dictionar
{}
METODE DE ADUGARE SI CREARE
COPIEAZĂ UN DICȚIONAR
Metoda: copy()
> >> dicționar = {"culoare": "violet",
> >> cămașă = dicționar .copy()
> >> dictionar
{„culoare”: „violet”, „preț”: 174,25,
> >> cămașă {'culoare': 'violet', 'preț':
> >> Dictionary.clear()
„dimensiune”: „XS”, „preț”: 174,25}
> >> dicționar {}
> >> cămașă
„dimensiune”: „XS”}
{„culoare”: „violet”, „preț”:
> >> muscular = camasa
> >> cămașă 174.25, „dimensiune”: „XS”}
{„culoare”: „violet”, „preț”:
> >> muscular {'culoare': 'violet', 'preţ':
>>> shirt.clear()
>>> tricou {} >>> maiou {}
174.25, „dimensiune”: „XS”}
174.25, „dimensiune”: „XS”}
174.25, „dimensiune”: „XS”}
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
CREAȚI UN NOU DICȚIONAR DIN CHEILE LUI A
SECVENŢĂ
Metodă: dict.fromkeys(secvență[, valoare implicită])
>>> secvență = ["culoare", "dimensiune", "brand"]
>>> dicționar1 = dict.fromkeys(secvență)
>>> dictionar1
{'culoare': Niciuna, 'brand': Niciuna, 'dimensiune': Niciuna}
>>> dictionary2 = dict.fromkeys(secvență, „valoare x implicită”)
>>> dictionar2
{'culoare': 'valoare implicită', 'brand': 'valoare implicită', 'mărime': 'valoare implicită'}
DICTIONARE CONCATENATE
Metodă: actualizare (dicționar)
>>> dicționar1 = {"culoare": "verde", "preț": 45}
>>> dicționar2 = {"dimensiune": "M", "brand": "Lacoste"}
>>> dicționar1 .actualizare (dicționar2)
>>> dictionar1
{„culoare”: „verde”, „preț”: 45, „brand”: „Lacoste”, „mărime”: „M”}
SETĂ O CHEIE ȘI O VALOARE IMPLICITE
Metodă: setdefault(„cheie”[, Niciuna|default_value])
Dacă cheia nu există, o creează cu valoarea implicită. Returnează întotdeauna valoarea pentru cheia
transmisă ca parametru.
>>> cămașă = {"culoare": "roz", "brand": "Zara"}
>>> cheie = cămaşă. setdefault("dimensiune", "U")
> >> cheie
'SAU'
> >> cămașă
{„culoare”: „roz”, „brand”: „Zara”, „dimensiune”: „U”}
> >> shirt2 = shirt.copy()
> >> cămașă2
{„culoare”: „roz”, „brand”: „Zara”, „dimensiune”: „U”}
> >> cheie = cămașă2. setdefault(„ștampilat”)
> >> cheie
> >> cămașă2
{„culoare”: „roz”, „model”: niciunul, „brand”: „Zara”, „dimensiune”: „U”}
> >> cheie = cămașă2. setdefault("brand", "Lacoste")
> >> cheie
"Zara"
- 23 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
>>> cămașă2
{„culoare”: „roz”, „model”: niciunul, „brand”: „Zara”, „dimensiune”: „U”}
METODE DE RETURNARE
OBȚINE VALOAREA CHEIEI
Metodă: get(cheie[, „valoare x implicită dacă cheia nu există”])
>>> cămașă. obține(„culoare”)
'roz'
>>> cămașă. obține(„stoc”)
>>> cămașă. get("stoc", "stoc epuizat")
'epuizat'
ȘTIȚI DACĂ EXISTA O CHEIE ÎN DICȚIONAR
Metodă: „cheie” în dicționar
> >> există = „preț” în cămașă
> >> exista
fals
> >> există = „culoare” în cămașă
> >> exista
Adevărat
OBȚINEREA CHEILOR ȘI VALORILOR UNUI DICȚIONAR
Metodă: articole()
dicționar = {'culoare': 'roz', 'brand': 'Zara', 'mărime': 'U'}
pentru cheie, valoare în dictionary.items() :
valoare cheie
Ieșire:
('culoarea roz')
(„brand”, „Zara”)
(„mărime”, „U”)
OBȚINEȚI CHEILE UNUI DICȚIONAR
Metoda: chei()
dicționar = {'culoare': 'roz', 'brand': 'Zara', 'dimensiune': 'U'} pentru cheie în dicționar.keys():
cheie
'marca'
'talie'
'culoare'
Obțineți cheile într-o listă
- 24 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
> >> dicționar = {'culoare': 'roz', 'brand': 'Zara', 'mărime': 'U'}
> >> chei = list(dictionary.keys())
> >> chei
[„culoare”, „brand”, „dimensiune”]
OBȚINE VALORILE UNUI DICȚIONAR
Metoda: valoare()
dicționar = {'culoare': 'roz', 'brand': 'Zara', 'mărime': 'U'}
pentru cheie în dicționar.valori():
cheie
'roz'
"Zara"
'SAU'
Obțineți valori într-o listă
> >> dicționar = {'culoare': 'roz', 'brand': 'Zara', 'mărime': 'U'}
> >> chei = list(dictionary.values())
OBȚINEȚI NUMĂRUL DE ARTICOLE ÎNTR-UN DICȚIONAR
Pentru a număra elementele unui dicționar, ca și în cazul listelor și tuplurilor, este utilizată funcția încorporată
len().
> >> dicționar = {'culoare': 'roz', 'brand': 'Zara', 'mărime': 'U'}
> >> len(dictionar)
3
- 25 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
MANIPULAREA SI MANIPULAREA DOSARELOR
Python vă permite să lucrați la două niveluri diferite în ceea ce privește sistemul de fișiere și
directoare.
Unul dintre ele este prin modulul os , care facilitează lucrul cu întregul sistem de fișiere și
directoare, la nivelul sistemului de operare însuși.
Al doilea nivel este cel care permite lucrul cu fișiere manipulând citirea și scrierea acestora din aplicația sau
scriptul în sine, tratând fiecare fișier ca pe un obiect.
CĂI DE DESCHIDERE A UNUI DOSAR
Modul în care este deschis un fișier este legat de obiectivul final care răspunde la întrebarea „ Pentru ce este
deschis acest fișier?” . Răspunsurile pot fi mai multe: a citi, a scrie sau a citi și a scrie.
De fiecare dată când un fișier este „deschis”, un pointer este creat în memorie .
Acest pointer va poziționa un cursor (sau un punct de acces ) într-o anumită locație din memorie (spus mai
simplu, va poziționa cursorul la un anumit octet al conținutului fișierului).
Acest cursor se va muta în interiorul fișierului pe măsură ce fișierul este citit sau în care este scris.
Când un fișier este deschis în modul de citire, cursorul este poziționat la octetul 0 al fișierului (adică, la începutul
fișierului). După ce fișierul este citit, cursorul se deplasează la octetul final al fișierului (echivalent cu numărul
total de octeți din fișier). Același lucru se întâmplă și când este deschis în modul de scriere. Cursorul se va mișca
pe măsură ce tastați.
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Când doriți să scrieți la sfârșitul unui fișier non-null, este utilizat modul de adăugare . Aceasta deschide fișierul
cu cursorul la sfârșitul fișierului.
Simbolul + ca sufix al unui mod adaugă modul opus modului de deschidere odată ce acțiunea de deschidere este
executată. De exemplu, modul r (citire) cu sufixul + (r+), deschide fișierul pentru citire și, după citire, readuce
cursorul la octetul 0.
Următorul tabel arată diferitele moduri de a deschide un fișier:
Indicator modul de deschidere locația indicatorului
r Numai citire la începutul dosarului
rb Citește numai în modul binar la începutul dosarului
r+ Citire si scriere la începutul dosarului
rb+ Citirea și scrierea în mod binar la începutul dosarului
Scrie doar.
Suprascrie fișierul dacă există.
w la începutul dosarului
Creați fișierul dacă nu există.
Scrieți numai în modul binar. Suprascrie
wb fișierul dacă există. Creați fișierul dacă nu la începutul dosarului
există.
Scrierea și lectura.
w+ Suprascrie fișierul dacă există. la începutul dosarului
Creați fișierul dacă nu există.
Scrierea și citirea în modul binar. Suprascrie
wb+ fișierul dacă există. Creați fișierul dacă nu la începutul dosarului
există.
Dacă fișierul există, la sfârșitul
Adăugat (adăugați conținut). acestuia.
la Creați fișierul dacă nu există. Dacă fișierul nu există, la
început.
Dacă fișierul există, la sfârșitul
Adăugat în modul binar (adăugați conținut). acestuia.
ab Creați fișierul dacă nu există. Dacă fișierul nu există, la
început.
a+ Adăugat (adăugați conținut) și citit. Dacă fișierul există, la sfârșitul
- 28 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
acest.
Creați fișierul dacă nu există. Dacă fișierul nu există, la
început.
Dacă fișierul există, la sfârșitul
Adăugat (adăugați conținut) și citit în modul acestuia.
ab+ binar. Dacă fișierul nu există, la
Creați fișierul dacă nu există. început.
UNELE METODE ALE OBIECTULUI DOSAR
Obiectul fișier, printre metodele sale, are următoarele:
Metodă Descriere
Citiți întregul conținut al unui fișier.
citit([octeți]) Dacă i se trece lungimea în octeți, va citi numai conținutul
până la lungimea dată.
readlines() Citiți toate rândurile unui fișier
scrie (șir) Scrieți șirul în fișier
Secvența va fi orice iterabil ale cărui elemente vor fi scrise
linii de scriere (secvență)
câte una pe linie
ACCESAREA FIȘIERELOR PRIN STRUCTURA WITH Cu structura with și funcția open(), puteți
deschide un fișier în orice mod și puteți lucra cu el, fără a fi nevoie să-l închideți sau să distrugeți pointerul,
deoarece acest lucru este realizat de către structura with.
Citiți un fișier:
cu open("fișier.txt", "r" ) ca fișier: conținut = fișier.read()
Scrieți într-un fișier:
continut = """
Acesta va fi conținutul noului fișier.
Fișierul va avea mai multe rânduri.
- 29 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
"""
cu open("fișier.txt", "r" ) ca fișier: fișier.scrie(conținut)
MANIPULAREA FIȘIERELOR CSV
Formatul CSV își derivă numele din engleza „valori separate prin virgulă” (valori separate prin virgulă),
definite în RFC 4180 . Acestea sunt fișiere text simplu, destinate stocării în masă a datelor. Este unul dintre cele
mai simple formate pentru efectuarea analizei datelor. De fapt, multe formate de fișiere care nu sunt libere (sau
gratuite, dar mai complexe) sunt adesea convertite în CSV pentru a aplica știința datelor complexe în diferite
limbi.
Un fișier CSV este format dintr-un antet care definește numele coloanelor, iar rândurile următoare au datele
corespunzătoare fiecărei coloane, separate prin virgulă. Cu toate acestea, multe alte simboluri pot fi folosite ca
separatori de celule. Printre acestea, tabulatorul și punctul și virgulă sunt la fel de frecvente ca și virgula.
CATEVA EXEMPLE DE FISIERE CSV
Date meteorologice (separate prin ;)
ID;DATE;VV;DV;T;HR;PPT;RS;P
0;2016-03-01 00:00:00;;;9.9;73;;;
1;2016-03-01 00:30:00;;;9.0;67;;;
2;2016-03-01 01:00:00;;;8.3;64;;;
3;2016-03-01 01:30:00;;;8.0;61;;;
4;2016-03-01 02:00:00;;;7.4;62;;;
5;2016-03-01 02:30:00;;;8.3;47;;;
6;2016-03-01 03:00:00;;;7.7;50;;;
7;2016-03-01 03:30:00;;;9.0;39;;;
Scoruri obținute de jucători într-un turneu (separate prin ,) nume, cantitate, an
- 30 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Mary,858,1930
Jose,665,1930
roz,591,1930
Juan Carlos, 522,1930
Antonio,509,1930
Maria Esther,495,1930
Maria Luisa,470,1930
Joanna,453,1930
Ioan,436,1930
Companii înregistrate la Inspectoratul General de Justiție din Argentina (separate prin , și datele între
ghilimele)
"număr_corelativ","tip_corporat","descriere_tip_corporat","motiv_companie","abonament_renunțat","cod_de_de
înregistrare","detaliu_deregistrare"
"10","10","SOCIEDAD COLECTIVE","AA VALLE Y COMPA¥IA","S","42014","APARTINE REGISTRULUI ENTITATILOR
INACTIVE"
"11","10","SOCIEDAD COLECTIVE","A LUCERO YH CARATOLI","S","42014","APARTINE
ÎNREGISTRAREA ENTITĂȚILOR INACTIVE”
"12","10","SOCIEDAD COLLECTIVE","A PUIG E HIJOS","S","42014","APARTINE
ÎNREGISTRAREA ENTITĂȚILOR INACTIVE”
"13","10","SOCIEDAD COLLECTIVE","ACIC A","S","42014","APARTINE ÎNREGISTRULUI
ENTITATI INACTIVE"
"14","10","SOCIEDAD COLLECTIVE","A¥ON BEATRIZ SY CIA","S","42014","APARTINE
ÎNREGISTRAREA ENTITĂȚILOR INACTIVE”
"15","10","SOCIEDAD COLLECTIVE","ABA DIESEL","S","42014","APARTINE ÎNREGISTRULUI
ENTITATI INACTIVE"
„16","10","PARTENERIAT COLECTIV","ABADA L JOSE ȘI JORGE JOSE
ABADAL","S","42014","APARTINE REGISTRULUI ENTITATILOR INACTIVE"
"17","10","SOCIEDAD COLECTIVE","ABADAL JOSE E HIJO","S","42014","APARTINE REGISTRULUI ENTITATILOR
INACTIVE"
"18","10","SOCIEDAD COLLECTIVE","ABATE Y MACIAS","S","42014","APARTINE LA
ÎNREGISTRAREA ENTITĂȚILOR INACTIVE”
De asemenea, este posibil să găsiți date stocate în fișiere text (TXT) cu formate foarte asemănătoare cu ceea ce
se așteaptă să fie găsit într-un CSV. Uneori este posibil să dezvoltați un script de format pentru a corecta aceste
fișiere, astfel încât să puteți lucra cu un CSV.
Observații meteo în TXT
DATA TMAX TMIN NUME
--------------------------------------------------------------------
07122017 28.0 19.0 AEROPARQUE AERO
07122017 26,8 12,4 ALBASTRU AERO
- 31 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
07122017 29.6 7.8 WHITE BAY AERO
07122017 22.7 6.7 BARILOCHE AERO
07122017 3.0 -8,5 BAZĂ BELGRANO II
07122017 2.4 -0.2 BASE CARLINI (EX JUBANY)
07122017 3.9 -0,6 BAZĂ DE SPERĂ
07122017 0.7 -3,6 BAZĂ MARAMBIO
LUCRU CU FIȘIERE CSV DIN PYTHON
Python oferă propriul modul numit csv, care facilitează analizarea datelor din fișierele CSV, atât pentru citire, cât
și pentru scriere.
Acest modul este utilizat în combinație cu structura cu și funcția open pentru a citi sau genera fișierul și modulul
CSV pentru analiza .
CITIREA FIȘIERELOR CSV
Fișier content.csv
0;2016-03-01 00:00:00;;;9.9;73;;;
1;2016-03-01 00:30:00;;;9.0;67;;;
2;2016-03-01 01:00:00;;;8.3;64;;;
3;2016-03-01 01:30:00;;;8.0;61;;;
4;2016-03-01 02:00:00;;;7.4;62;;;
5;2016-03-01 02:30:00;;;8.3;47;;;
6;2016-03-01 03:00:00;;;7.7;50;;;
7;2016-03-01 03:30:00;;;9.0;39;;;
8;2016-03-01 04:00:00;;;8.7;39;;;
din cititorul de import csv
cu open("fișier.csv", "r") ca fișier: document = reader(fișier, delimitator=';', pentru rândul din document:
' '.join(rând) quotechar='"')
Ieșire:
'0 2016-03-01 00:00:00 9.9 73
'1 2016-03-01 00:30:00 9.0 67
'2 2016-03-01 01:00:00 8.3 64
'3 2016-03-01 01:30:00 8.0 61
'4 2016-03-01 02:00:00 7.4 62
'5 2016-03-01 02:30:00 8.3 47
'6 2016-03-01 03:00:00 7.7 50
'7 2016-03-01 03:30:00 9.0 39
'8 2016-03-01 04:00:00 8.7 39
- 32 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Când fișierul CSV are un antet, este necesar să săriți peste antet:
Fișier content.csv
ID;DATE;VV;DV;T;HR;PPT;RS;P
0;2016-03-01 00:00:00;;;9.9;73;;;
1;2016-03-01 00:30:00;;;9.0;67;;;
2;2016-03-01 01:00:00;;;8.3;64;;;
3;2016-03-01 01:30:00;;;8.0;61;;;
4;2016-03-01 02:00:00;;;7.4;62;;;
5;2016-03-01 02:30:00;;;8.3;47;;;
6;2016-03-01 03:00:00;;;7.7;50;;;
7;2016-03-01 03:30:00;;;9.0;39;;;
8;2016-03-01 04:00:00;;;8.7;39;;;
din cititorul de import csv
cu open("fișier.csv", "r") ca fișier: document = reader(fișier, delimitator=';', anteturi = următorul(document)
pentru rândul din document: quotechar='"')
' '.join(rând)
Ieșire:
METODE DE MANIPULARE VARIABILE 5
MANIPULAREA ȘIRURILOR DE TEXT 5
METODE DE FORMAT 5
Prima literă cu majuscule 5
CONVERȚI UN ȘIR ÎN MINUSCULE 5
CONVERTĂ UN ȘIR ÎN MAJUSCULE 6
CONVERSAȚI MAJUSCULE ÎN MINUSCULE ȘI VICE-VERSA 6
CONVERTĂ UN ȘIR ÎN FORMATUL DE TITL 6
CENTRAȚI UN TEXT 6
ALINIAȚI TEXTUL LA STÂNGA 6
Aliniați textul la dreapta 7
COMPLETAREA UNUI TEXT PREVĂTÂND ZEROURI 7
METODE DE CĂUTARE 7
NUMĂRĂ NUMĂR DE APARIȚII ALE UNUI SUBȘIR 7
CĂUTAȚI UN SUBȘIR ÎNTR-UN ȘIR 7
METODE DE VALIDARE 8
ȘTIȚI DACĂ UN ȘIR ÎNCEPE CU UN ANUMIT ȘIR 8
ȘTIȚI DACĂ UN ȘIR SE Termină CU UN ANUMIT ȘIR 8
- 33 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
ȘTIȚI DACĂ UN ȘIR ESTE ALFANUMERIC 8
ȘTIȚI DACĂ UN ȘIR ESTE ALFABETIC 8
ȘTIȚI DACĂ UN ȘIR ESTE NUMERICAL 9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MINUSCULE 9
ȘTIȚI DACĂ UN ȘIR CONTINE DOAR MAJUSCULE 9
ȘTIȚI DACĂ UN ȘIR CONTINE NUMAI SPAȚII ALTE 10
ȘTIȚI DACĂ UN ȘIR ARE FORMAT DE TITL 10
METODE DE SUBSTITUȚIE 10
FORMATATE UN ȘIR, ÎNLOCUIȚI DINAMIC TEXTUL 10
ÎNLOCUIȚI TEXTUL ÎNTR-UN ȘIR 11
ELIMINAȚI PERSONAJELE DIN STÂNGA ȘI DREPTEA UNUI ȘIR 11
ȘTERGEȚI CARACTERELE DIN STÂNGA UNUI ȘIR 11
ELIMINAȚI PERSONAJELE DIN DREAPTA UNUI ȘIR 11
METODE DE UNIRE ȘI DIVIZARE 11
ÎNSCRIEȚI-VĂ ITERATIV LA UN SIR 11
RUPE UN LANT IN TREI PARTE, FOLOSIND UN SEPARATOR 12
RUPEREA UNUI LANȚ ÎN MAI MULTE PĂRȚI, FOLOSIND UN SEPARATOR 12
DESPARTAREA UNUI LANȚ ÎN LINII 12
MANIPULARE LISTĂ ȘI TUPLU 14
METODE AGREGATE 14
ADĂUGAȚI UN ARTICOL LA sfârșitul listei 14
Adăugați mai multe articole la sfârșitul listei 14
ADĂUGAȚI UN ELEMENT ÎNTR-O POZIȚIE DETERMINATĂ 14
METODE DE ELIMINAREA 14
ȘTERGEȚI ULTIMUL ARTICOL DIN LISTĂ 14
ȘTERGEȚI UN ELEMENT DUPĂ INDEXUL SĂU 15
ȘTERGEȚI UN ELEMENT DUPĂ VALOAREA SA 15
METODE DE COMANDA 15
SORTEAȚI O LISTĂ ÎN INVERS (ORDINE INVERSĂ) 15
SORTAZĂ O LISTĂ ÎN FORMA ASCENDĂTORĂ 15
SORTEAȚI O LISTĂ ÎN FORMA DESCENDĂTORĂ 15
METODE DE CĂUTARE 15
NUMĂRĂ NUMĂRUL DE APARIȚII 15
OBȚINEȚI NUMĂRUL DE INDEX 16
ANEXĂ DESPRE LISTE ȘI TUPLE 16
- 34 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
CONVERSIE DE TIP 16
CONCATENAREA COLECȚILOR 17
VALOARE MAXIMA SI MINIMA 20
NUMĂRĂ ELEMENTE 20
MANIPULAREA DICTIONARULUI 22
METODE DE ELIMINAREA 22
GOLȚI UN DICȚIONAR 22
METODE DE ADUGARE SI CREARE 22
COPIEAZĂ UN DICȚIONAR 22
CREAȚI UN NOU DICȚIONAR DIN CHEILE LUI A 23
SECVENŢĂ 23
DICTIONARE CONCATENATE 23
SETĂ O CHEIE ȘI O VALOARE IMPLICITE 23
METODE DE RETURNARE 24
OBȚINE VALOAREA CHEIEI 24
ȘTIȚI DACĂ EXISTA O CHEIE ÎN DICȚIONAR 24
OBȚINEREA CHEILOR ȘI VALORILOR UNUI DICȚIONAR 24
OBȚINEȚI CHEILE UNUI DICȚIONAR 24
OBȚINE VALORILE UNUI DICȚIONAR 25
OBȚINEȚI NUMĂRUL DE ARTICOLE ÎNTR-UN DICȚIONAR 25
MANIPULAREA SI MANIPULAREA DOSARELOR 27
CĂI DE DESCHIDERE A UNUI DOSAR 27
UNELE METODE ALE OBIECTULUI DOSAR 29
MANIPULAREA FIȘIERELOR CSV 30
CATEVA EXEMPLE DE FISIERE CSV 30
LUCRU CU FIȘIERE CSV DIN PYTHON 32
CITIREA FIȘIERELOR CSV 32
SCRIEREA FIȘIERELOR CSV 37
PROBABILITATE SI STATISTICA CU PYTHON 40
PROBABILITATEA EVENIMENTELOR SIMPLE ȘI COMPUSE MUTUAL EXCLUSIVE ÎN
PYTHON 40
SPAȚIU EȘANȚĂ 40
EVENIMENTE SIMPLE SI COMPUSE 40
ATRIBUIREA COTELOR 41
EVENIMENTE SIMPLE SE EXCLUSIVE MUTU 41
- 35 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
EVENIMENTE COMPUSE DIN EVENIMENTE SIMPLE MUTUAL EXCLUSIVE 42
FUNCȚII 43
PROBABILITATE CONDIȚIONATĂ ÎN PYTHON 43
FUNCȚII 44
EVENIMENTE DEPENDENTE 44
TEORIA MULTILOR ÎN PYTHON 46
EVENIMENTE INDEPENDENTE 46
TEOREMA LUI BAYES ÎN PYTHON 47
TEOREMA LUI BAYES SI PROBABILITATEA CAUZELOR 47
DATE: STUDIU DE CAZ 47
ANALIZĂ 48
PROCEDURĂ 49
FUNCȚII 54
LITTURĂ A MULTE 54
ANEXA I: CALCULE COMPLEXE 60
POPULAȚIE ȘI EȘANȚĂ DE STATISTICĂ: CALCULUL DE 60
VARIANȚA ȘI DEVIAȚIA STANDARD 60
PRODUS DIN DOI VECTORI 61
CALCULURI DE FRECVENȚĂ RELATIVE, ABSOLUTE ȘI ACUMULATE 61
ANEXA II: CREAREA UNUI MENIU DE OPȚIUNI 63
O altă modalitate de a citi fișierele CSV cu antete este să utilizați obiectul DictReader în loc de
reader și să accesați astfel doar valoarea coloanelor dorite, după nume:
din csv import DictReader
cu open("fișier.csv", "r") ca fișier: document = DictReader (fișier, delimitator=';', pentru rândul din document:
rând['DATE'] quotechar='"')
- 36 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Ieșire:
'2016-03-01 00:00:00'
'2016-03-01 00:30:00'
'2016-03-01 01:00:00'
'2016-03-01 01:30:00'
'2016-03-01 02:00:00'
'2016-03-01 02:30:00'
'2016-03-01 03:00:00'
'2016-03-01 03:30:00'
'2016-03-01 04:00:00'
SCRIEREA FIȘIERELOR CSV
Scrierea unui CSV fără antet:
din writer de import csv cu open("data.csv", "w") ca fișier:
document = writer(fișier, delimitator=';', quotechar='"') document.writerows(array)
În exemplul de mai sus, o matrice ar putea fi o listă de liste cu același număr de elemente. De
exemplu: matrice = [
[„John”, 373, 1970],
[„Anna”, 124, 1983],
[„Petru”, 901, 1650],
[„Trandafir”, 300, 2000],
[„Joan”, 75, 1975],
]
Cele de mai sus ar genera un fișier numit data.csv cu următorul conținut:
eugenia@bella:~$ cat data.csv
Ioan;373;1970
Anne;124;1983
Petru;901;1650
Roz;300;2000
Joanna;75;1975
- 37 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Scrierea unui CSV cu antet:
În acest caz, matricea de scris va trebui să fie o listă de dicționare ale căror chei se potrivesc cu
anteturile indicate.
matrice = [
dict(player='John', points=373, year=1970), dict(player='Anna', points=124, year=1983),
dict(player='Peter', points=901, year=1650) , dict(player='Rosa', points=300, year=2000), dict(player='Joan',
points=75, year=1975), ] din csv import DictWriter
anteturi = ['player', 'points', 'year'] cu open("data.csv", "w") ca fișier:
document = DictWriter(fișier, delimitator=';', nume quotechar='"',
câmpuri=anteturi)
document.writeheader()
document.writerrows(matrice)
Funcții statistice simple
Pe listele și tuplurile obținute sau nu dintr-un CSV, pot fi efectuate funcții statistice simple precum
următoarele:
număra articolele len (colecție) sumă
adauga elemente (colecție) max
obține un număr mai mare (colecție) min
obține un număr mai mic (colecție)
- 38 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
PROBABILITATE SI STATISTICA CU PYTHON
PROBABILITATEA EVENIMENTELOR SIMPLE ȘI COMPUSE MUTUAL
EXCLUSIVE ÎN PYTHON
SPAȚIU EȘANȚĂ
Un spațiu eșantion este un set de evenimente posibile, cum ar fi cele care ar putea rezulta din
aruncarea unui zar:
E=(1,2,3,4,5,6)
spațiu_eșantion = [1, 2, 3, 4, 5, 6]
Fiecare element dintr-un spațiu de probă este denumit punct de probă . Numărul de puncte de
eșantionare este notat cu n astfel încât pentru spațiul de eșantion E=11,2,3,4,5,6/
, n=6 .
n = len(sample_space)
EVENIMENTE SIMPLE SI COMPUSE
Un eveniment este un set de rezultate într-un spațiu eșantion. De exemplu:
• aruncarea unui zar este un eveniment
• Probabilitatea ca numărul 5 să apară în respectiva aruncare este un eveniment simplu A =
{5} și este exclusivă : dacă apare 5, niciun alt număr nu poate apărea simultan.
• probabilitatea ca la tragere la sorti să apară un număr impar este evenimentul compus
B=11,3,5}
care la rândul lor va depinde de evenimente
exclusive simple ^ = {1} , B2 = {2} și B3 = {3}
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
ATRIBUIREA COTELOR
Atribuirea probabilității este una care oferă modele matematice pentru a calcula șansele ca anumite
evenimente să apară sau nu.
Probabilitatea unui eveniment se notează cu P( eveniment)
.
Evenimentele pot fi:
• simplu sau compus
• reciproc exclusiv sau independent
EVENIMENTE SIMPLE SE EXCLUSIVE MUTU
Dacă luăm în considerare un spațiu eșantion A , fiecare dintre punctele eșantionului k , va fi notat cu
Ak și probabilitatea lor, desemnată ca P(Ak) , va fi determinată de:
P(A,) = -
Nu
probabilitate = 1,0 / n
În Python , cel puțin un element al ecuației trebuie să fie un număr real dacă ceea ce este
necesar ca rezultat este un număr real.
Probabilitatea fiecărui punct eșantion, ca evenimente care se exclud reciproc, este aceeași pentru
fiecare eveniment.
P^) = P(5) = P(4) = P(3) = P(2) = P(1)
- 41 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
EVENIMENTE COMPUSE DIN EVENIMENTE SIMPLE MUTUAL
EXCLUSIVE
Când evenimentele simple care alcătuiesc evenimentul compus A se exclud reciproc, probabilitatea
evenimentului compus va fi dată de suma probabilităților fiecărui eveniment simplu P(Ak) , astfel
încât:
P(A) = P(A1)—P(A2)——P(Ak)
De exemplu, pentru a estima probabilitatea ca un număr par să apară la o singură aruncare a zarului,
obțineți evenimentul .4 = {2. 4,. 6}
, dat de suma
probabilităților fiecăruia dintre evenimentele simple P(2)—P(3)—P(4, ale spațiului eșantion
E=11,2,3,4,5,6}
astfel încât:
P(A) = P(2) - P(4) +P(6)
P(A) =1+1+1=8
P(A) - |
3
În primul rezultat 6 (în a doua etapă, înainte de a găsi cel mai mare comun
1
divizor [GCD] și reduceți fracția la 2 ), numitorul este echivalent cu numărul de evenimente simple
din cadrul evenimentului compus «numere pare» și se notează cu h . Numitorul, 6 , este n , totalul
tuturor evenimentelor din spațiul eșantion. În acest fel, probabilitatea unui eveniment compus A din
evenimente care se exclud reciproc este dată de câtul lui h și n astfel încât:
p(a) = • n
numere_pare = [i pentru i în spațiul_eșantion dacă i % 2 este 0] h = len(numere_pare) probabilitate =
float(h) / n
- 42 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Un eveniment compus poate fi notat prin unirea evenimentelor sale simple (simbolul u , citit ca
„o”), astfel încât:
P(A, u A u ...A,) = P(A, ) + P(A2) + ...A,
De exemplu, pentru cazul evenimentului „numere pare”, se obține că:
P(2U4U6 ) = P(2)+P(4)+P(6)
P(2U4U6) = 1++1+1 =8
P(2 U 4 U 6) = |
Astfel încât P(2U4U 6)
este un eveniment și P(2) , P( 4) și P(6) sunt probabilitățile de
cele trei evenimente care o compun. Într-un context nou, U 4 U 6)
ar putea fi
tratat ca un eveniment A.
FUNCȚII
# Probabilitatea unor evenimente simple care se exclud reciproc pssme = lambda e: 1.0 / len(e) #
Probabilitatea unor evenimente compuse care se exclud reciproc def pscme(e, sc):
n = len(e)
return len(sc) / float(n)
PROBABILITATE CONDIȚIONATĂ ÎN PYTHON
B= {2,4,6}
c. Probabilitatea lui B: P(B) =$=6=2
d. Probabilitatea de intersecție:
P(ARB) = P(A)P(B)
P(A n B) = 1 I
P(AnB) = I
e = eșantion_space = [1, 2, 3, 4, 5, 6] n = len(e) # total eșantion
# probabilitatea A
a = [i pentru i în e dacă i % 2 nu este 0] pa = len(a) / float(n)
- 43 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
# probabilitatea lui B
b = [i pentru i în e dacă i % 2 este 0]
bp = len(b) / float(n)
# probabilitatea de intersectare a evenimentelor pi = pa * pb
FUNCȚII
# Probabilitate condiționată: evenimente dependente def pscd(e, a, b):
i = listă(mulțimea(a).intersecția(b))
pi = pscme(e, i)
pa = pscme(e, a)
return pi/pa
# Probabilitate condiționată: evenimente independente def psci(e, a, b):
pa = pscme(e, a)
pb = pscme(e, b)
return pa * bp
EVENIMENTE DEPENDENTE
Se referă la probabilitatea ca două evenimente să apară simultan, deoarece al doilea eveniment
depinde de apariția primului.
Probabilitatea ca B să apară dacă apare A se notează cu P(BA) și se citește „probabilitatea ca B dat
A” , astfel încât:
P (B I^ _
1
■P(A)
Unde PA n B)
este probabilitatea intersectării evenimentelor lui A și B
— definită ca: P{A n B) = P(A)P(BA,
—, astfel încât intersecția este un eveniment
nou compus din evenimente simple. În exemplul de mai jos, ar fi egal cu 11,3} (deoarece 1 și 3 sunt
atât în A cât și în B ).
Exemplu : Care este probabilitatea ca la aruncarea unui zar să rezulte un număr impar mai mic de 4?
- 44 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Aruncarea zarurilor este un eveniment în sine. Vrem să aflăm probabilitatea lui B = {1.2.3} (număr
mai mic decât 4) având în vedere că A=(1,3,5 (număr impar) a apărut în spațiul eșantionar E = {1.2.
3. 4,5,6} .
spațiu_eșantion = [1, 2, 3, 4, 5, 6]
a = [i pentru i în spațiul_eșantion dacă i % 2 nu este 0]
b = [i pentru i în spațiul_eșantion dacă i < 4]
Pentru a calcula probabilitatea unei intersecții, mai întâi găsiți intersecția:
An ={1,3}
intersect = [i pentru i în a dacă i în b]
Și apoi, probabilitatea noului eveniment compus este calculată:
112 1
P(AnB)=P(1)+P(3)=+=é=, b0O3
sau, ce este la fel:
poand_1-2_1
#6 3
De asemenea, este necesar să se obțină probabilitatea lui A , ținând cont de faptul că
este, de asemenea, un eveniment compus:
p_I_2_1
In final, se obtine ca:
P(B|A) = P427
P(B|.A) = 1/2
P(BA) =5=0,6
e = spațiu_probă = [1, 2, 3, 4, 5, 6]
a = [i pentru i în e dacă i % 2 nu este 0] # numere impare
b = [i pentru i în și dacă i < 4] # numere mai mici de 4
- 45 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
intersect = [i pentru i în a dacă i în b] # intersecția lui A și B
n = len(e) # eșantion total
ha = len(a) # numărul total de evenimente simple din A
hintersec = len(intersec) # numărul total de evenimente simple la intersecție
# probabilitatea de intersectie
probabilitate_intersec = float(hintersec) / n
# probabilitatea de „a”
probabilitate_a = float(ha) / n
# probabilitate condițională
probabilitate_b_dată_a = probabilitate_interceptare / probabilitate_a
TEORIA MULTILOR ÎN PYTHON
Când obținem intersecția a două evenimente compuse, am folosit o metodă manuală spunând:
returnează „i” pentru fiecare „i” din lista „a” dacă este în lista „b”.
Cu toate acestea, deoarece fiecare eveniment compus este o mulțime și Python oferă un tip de date
numit set, este posibil să obțineți intersecția prin manipularea evenimentelor compuse ca seturi
Python. Cu set puteți converti orice iterabil într-un set și puteți efectua operațiuni de set, cum ar fi
unirea și intersecția, atunci când este necesar. intersecție = listă(set(a).intersection(b))
Aici setul obținut este convertit într-o listă pentru a se termina pentru a fi în concordanță cu restul
codului și pentru ca elementul rezultat să suporte operațiunile obișnuite și tratamentul unei liste.
Când aveți îndoieli cu privire la utilizarea listelor sau seturilor, trebuie aplicat principiul simplității
și implementată cea mai simplă soluție.
EVENIMENTE INDEPENDENTE
Spre deosebire de cazul precedent, aici probabilitatea ca B să apară nu este afectată de apariția lui
A . De exemplu, probabilitatea de a arunca un zar
- 46 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
iar obținerea unui număr par (evenimentul B) nu este afectată de faptul că un număr impar
(evenimentul A) a fost aruncat la o aruncare anterioară. Probabilitatea lui B este independentă de A
și este dată de produsul probabilității ambelor evenimente:
P(AnB) = P(A)P(B)
Aici intersecția este probabilitatea ca ambele evenimente să convergă.
Calculată probabilitatea ambelor evenimente independente, acestea se înmulțesc obținând:
a. Spațiu de probă (pentru ambele evenimente):
E = {1,2,3,4,5,0}
b. Probabilitatea A:
.4= {1,3,5}
P(A) = h = 2 = 1
TEOREMA LUI BAYES ÎN PYTHON
TEOREMA LUI BAYES SI PROBABILITATEA CAUZELOR
Având în vedere o serie de evenimente Ak a căror sumă totală este un spațiu eșantion E și orice
eveniment B , Teorema lui Bayes ne permite să cunoaștem probabilitatea ca fiecare eveniment Ak al
lui E , să fie cauza lui B . Din acest motiv, este cunoscută și sub numele de probabilitatea
cauzelor .
DATE: STUDIU DE CAZ
Având în vedere un oraș de 50.000 de locuitori , cu următoarea distribuție:
- 47 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
fetelor Copii femei Bărbați
11000 9000 16000 14000
Și, un raport de 9.000 de cazuri de gripă , distribuite după cum urmează:
Fete Băieți Femei Bărbați
2000 1500 3000 2500
Se urmărește obținerea probabilității ca cauza contractării gripei să fie faptul că aparțineți unui
anumit sector demografic (de exemplu, sectorul demografic format din băieți sau fete).
ANALIZĂ
Din cele menționate mai sus se poate obține că:
• Orașul (total absolut de locuitori) este spațiul eșantion E .
• Numărul de fete, băieți, femei și bărbați este fiecare dintre evenimentele Ak din spațiul
eșantion E
• Ca valoare a lui n luăm suma spațiului eșantion 2 Aa , astfel încât
n = 50000
• Valoarea lui h pentru evenimentele Ak este fiecare dintre valorile date în tabelul de
distribuție a populației.
• A avea gripă este evenimentul B.
• Tabelul de distribuție a cazurilor de gripă corespunde intersecțiilor evenimentului B cu
fiecare eveniment Ak , adică fiecare Akn B
Conform calculului de probabilitate care se aplică, se va putea obține:
- 48 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
• Probabilitatea de a fi fată, băiat, femeie sau bărbat în oraș, prin P(Ak) . Este considerată o
probabilitate anterioară .
• Probabilitatea de a fi fată, băiat, femeie sau bărbat și de a avea gripă, obținută cu P(Ak B) și
considerată probabilitate condiționată .
• Probabilitatea ca orice locuitor, indiferent de sectorul căruia îi aparține, să aibă gripă, se
obține cu
Nu
P(B)=>P(A)P(BA,)
k=1 și este considerată o probabilitate totală.
• Probabilitatea ca cineva cu gripă să fie fată, băiat, femeie sau bărbat este găsită folosind
teorema lui Bayes . Această probabilitate este considerată probabilitate a posteriori ,
permițând răspunsuri la întrebări precum : care este probabilitatea ca un nou caz de gripă să
fie la un băiat sau o fată?
O modalitate eficientă și ordonată de a obține o probabilitate posterioară cu teorema lui Bayes este
să obțineți mai întâi cele trei probabilități anterioare: anterioară, condiționată și totală.
AVERTIZARE:
de acum înainte, map(float, <list>) va fi folosită în codul sursă pentru a converti elementele
unei liste în numere reale, atâta timp cât acest lucru nu supraîncărcă codul.
PROCEDURĂ
1. Calcul de probabilitate anterior
Randamente: probabilitatea ca un locuitor să aparțină unui anumit sector demografic.
- 49 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Formulă:
Informatie necesara:
hk = date din tabelul de distribuție a populației
n = este întotdeauna numărul total al spațiului eșantion (50.000)
Rezultate:
m) = = 0.22
50000 probabilitate fifetiță
9000
P(A2) = 50000
= 0.18
probabilitate ficopil
16000
= 0.32
50000
probabilitate fifemei
14000 = 0.28
50000 probabilitate fiom
Cod Python:
locuitori = hartă(float, [11000, 9000, 16000, 14000])
n = suma(locuitori)
pa = [h / n pentru h în locuitori]
2. probabilitate condițională
Returnări: probabilitatea de a avea gripă aparținând unui sector demografic
specific.
Certitudine: Ak (sectorul demografic)
Obiectiv: B (probabilitatea de a avea gripă)
- 50 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
P(AknB)
P(BAk)= P(A,)
Formulă:
Informatie necesara:
h=B,
P(AknB) =
h = intersecții (date din tabelul de distribuție a cazurilor de gripă)
Rezultate:
. .....
P(BA1)= LANA 1
0 18 0.22 ' șansa de a face gripă în copilărie
IWO
P(BI A) = 50000 = 0.16
0.18
șansa de a face gripă în copilărie
3000
P(BI A3) = wooo __0 19
0.32 '
șansa de a face gripă ca femeie
2500
P(BI A) = LÂNĂ ___0 18
0.28 ' probabilitatea de a avea gripă ca bărbat
Cod Python:
afectat = hartă(float, [2000, 1500, 3000, 2500]) pi = [k / n pentru k în afectat]
pba = [pi[i] / pa[i] pentru i în interval(len(pi))]
3. probabilitate totală
Returnări: probabilitatea ca oricare dintre locuitori, indiferent de sectorul demografic căruia îi
aparțin, să aibă gripă.
- 51 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
Nu
P(B) = >P(A,) P(BA,)
Formulă: k=1
Informatie necesara:
probabilitate anterioară
probabilitate condițională
Rezultate:
P(B) = PA,) PBA)) PBA)) (])+() PB])
P(B") = 0,22 ■ 0,18-0,18 ■ 0,16+0,32 ■ 0,19 — 0,28 ■ 0,18
PIB] = 0,04 - 0,03 - 0,06 - 0,05
P(B) = 0,18
Cod Python:
produse = [pa[i] * pba[i] pentru i în interval(len(pa))] pb = suma(produse)
Observatii :
(a) rețineți că în ieșirea anterioară va exista o diferență de .01 față de soluția manuală. Acest lucru
se datorează rotunjirii făcute în soluția manuală. Această diferență poate fi eradicată prin utilizarea a
3 zecimale în valorile probabilității condiționate (în loc de 2) în soluția manuală.
- 52 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
(b) probabilitatea de a NU avea gripă va fi dată de 1 - P(B'l astfel încât
1 -0,18 = 0,82 dar nu va fi necesar să îl utilizați pentru acest exemplu cu
teorema lui Bayes.
4. probabilitate posterioară
Randamente: probabilitatea de a aparține unui anumit sector demografic și de a avea gripă.
Certitudine: B (ai gripa)
Țintă: Ak (probabilitatea de a aparține unui anumit grup demografic)
_ . 2P(A,)P(BA+)
Formulă: k=1
Informatie necesara:
PAk) P(BAk,
= produsul obţinut în fiecare dintre termenii probabilităţii totale
Nu
2P(AL)P(B|A)
k=1 = probabilitatea globală
Rezultate:
= 0.22
probabilitatea de a fi o fată cu gripă
0.03
P(A2B)= 0.18
= 0.16
probabilitatea de a fi un copil cu gripă
- 53 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
0.06 —
P(A3B)= = 0.33
0,18 probabilitate de a fi o femeie cu gripă
0.05 -
P(A4B)= = 0.27
0,18 probabilitate de a fi bărbat să aibă gripă
Cod Python:
pab = [p / pb pentru p în produse]
FUNCȚII
# Teorema lui Bayes
def bayes(e, b):
n = float(suma(e))
pa = [h / n pentru h în e]
pi = [k/n pentru k în b]
pba = [pi[i] / pa[i] pentru i în interval(len(pi))]
prods = [pa[i] * pba[i] pentru i în interval(len(pa))]
bpt = suma(produse)
pab = [p / pb pentru p în produse]
retur pab
LITTURĂ A MULTE
[0] Probabilitate și statistică, Murray Spiegel. McGraw-Hill, Mexic 1988. ISBN: 968-451-102-7
- 54 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
ANEXA I: CALCULE COMPLEXE
POPULAȚIE ȘI EȘANȚĂ DE STATISTICĂ: CALCULUL DE
VARIANȚA ȘI DEVIAȚIA STANDARD
din import matematică sqrt
mostre = [12, 23, 24, 22, 10, 17] # liste de exemple
n = len(eșantioane)
medie = suma(eșantioane) / float(n)
Jumătat
e
varianţa populaţiei
2 _ H(,2)2
" Nu
varianța eșantionului
abaterea standard a probei
abaterea standard a populației
diferențe = [xi - medie pentru xi în eșantioane]
puteri = [x ** 2 pentru x în diferențe]
suma = suma(puterile)
varianță_eșantion = sumă / (n - 1) varianță_populație = sumă / n
abatere_eșantion = sqrt(varianță_eșantion) abatere_populație = sqrt(varianță_populație)
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
PRODUS DIN DOI VECTORI
vector1 = [3, 0]
vvector2 = [4, 3]
pe = sumă([x * y pentru x, y în zip(vector1, vector2)])
CALCULURI DE FRECVENȚĂ RELATIVE, ABSOLUTE ȘI ACUMULATE
# FRECVENTA ABSOLUTA
# De câte ori apare o valoare într-o probă
mostre = [1, 2, 3, 4, 3, 2, 6, 7, 3, 3, 1, 8, 5, 9] absolut = []
frecvențe = []
pentru n în eșantioane:
dacă nu n în absolute:
absolute.apend(n)
fi = samples.count(n)
frecvențe.apend(fi)
N = suma(frecvențele) # == len(eșantioane)
# FRECVENTA RELATIVA
# Coeficient între frecvența absolută și N relativ = [float(fi) / N pentru fi în frecvențe] sumrelative =
rotund(sum(relativ)) # == 1
# FRECVENTA CUMULATIVA
# Suma tuturor frecvențelor mai mică sau egală cu frecvențele absolute.sort()
cumulativ = [sum(frecvențe[:i+1]) pentru i, fi în enumerate(frecvențe)]
# FRECVENTA RELATIVA CUMULATIVA
# Coeficient între frecvența cumulativă și cantitatea totală de date cumulate = [float(f) / N pentru f în
cumulat]
- 61 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
ANEXA II: CREAREA UNUI MENIU DE OPȚIUNI
În scripting , poate fi util să oferiți utilizatorului un meniu de opțiuni și ca scriptul să acționeze
asupra opțiunii alese de utilizator. Iată un truc pentru a rezolva acest lucru într-un mod simplu și
inteligent.
1) În primul rând, întregul script trebuie organizat în funcții.
2) În al doilea rând, este necesar ca toate funcțiile să aibă documentația corespunzătoare, care să
definească exact ce face funcția:
def read_file():
"""Citiți fișierul CSV"""
returneaza "citeste"
def write_file():
"""Scrieți fișierul CSV"""
returneaza "scrie"
def _add_numbers(lista):
"""Suma numerele unei liste""" returnează "privat"
3) În continuare, se definește o listă cu numele tuturor funcțiilor care vor fi accesibile de către
utilizator, din meniu:
funcții = [ 'read_file' , 'write_file' ]
Trucul va fi să automatizezi atât generarea meniului, cât și apelul la funcție.
Pentru a automatiza generarea meniului , trucul este să folosiți:
▪ Lista de la pasul 3
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
Introducere în Data Science cu Python - Şcoala de Informatică Eugenia Bahit
▪ Funcția locals().
▪ Atributul doc
număr = 1 # va fi folosit ulterior pentru a accesa funcția
meniu = „Alegeți o opțiune:\n”
pentru funcții în funcții:
meniu += "\t{}. {}\n".format(număr, locals()[funcție].__doc__) număr = număr + 1 # număr de incremente
la fiecare iterație
ecou (meniu)
opțiune = int(get("Opțiunea ta: "))
# echo and get: hack-uri învățate în cursul introductiv
În final, pentru a accesa dinamic funcția aleasă de utilizator, trucul va fi să folosești opțiunea aleasă
de utilizator, ca index pentru a accesa numele funcției din listă, și să apelezi din nou localnicii pentru
a apela funcția:
function = functions[option – 1] locals() # obține numele funcției
[function]() # funcția este apelată prin locals()
- 64 -
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire
4.0
(C) 2011 - 2018 Eugenia Bahit. Creative Commons Atribuire 4.0
CERTIFICAT
Arată cât de mult ai învățat!
Dacă ați ajuns la finalul cursului puteți obține o triplă certificare:
- Certificat de participare (eliberat de școala Eugenia Bahit)
- Certificat de realizare (eliberat de CLA Linux)
- Aprobare de certificare (eliberată de LAECI)
Aflați de la profesorul dvs. sau vizitați site-ul web de certificare la http://python.eugeniabahit.org .
Dacă trebuie să vă pregătiți examenul, vă puteți înscrie la
Curs de știință a datelor cu Python la
Şcoala de Informatică Eugenia Bahit
www.eugeniabahit.com