Documente Academic
Documente Profesional
Documente Cultură
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-
-3-
-4-
numite metode . Metodele sunt funcții, dar sunt derivate dintr-o variabilă. Prin urmare, aceste funcții sunt
variabilă.funcție()
În unele cazuri, aceste metode (funcțiile unui obiect) vor accepta parametrii ca orice altă funcție.
variabilă.funcție(parametru)
METODE DE FORMAT
-5-
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=============
-6-
METODE DE CĂUTARE
-7-
METODE DE VALIDARE
-8-
-9-
METODE DE SUBSTITUȚIE
> >> ș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
- 10 -
- 11 -
- 12 -
METODE AGREGATE
METODE DE ELIMINAREA
>>> nume_de_masculi
[„Ricky”, „Alvaro”, „David”, „Jacinto”, „Jose”, „Ricky”, „Jose”, „Jose”]
METODE DE COMANDA
METODE DE CĂUTARE
- 15 -
>>> nume_de_masculi. count("Miguel") 2 >>> male_names = ("Alvaro", "Miguel", "Edgardo", "David", "Miguel")
>>> nume_de_masculi. conte ("Michael")
2
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
>>> lista(tuplu)
[1, 2, 3, 4]
>>> tuplu(lista)
(1, 2, 3, 4)
- 16 -
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.
- 17 -
- 18 -
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 -
NUMĂRĂ ELEMENTE
Funcția len() este utilizată pentru a număra elementele unei liste sau tuplu, precum și caracterele unui șir de text:
- 20 -
GOLȚI UN DICȚIONAR
Metoda: clear()
>>> dicționar = {"culoare": "violet", "dimensiune": "XS", "preț": 174,25}
> >> dictionar
{„culoare”: „violet”, „preț”: 174,25, „dimensiune”: „XS”}
COPIEAZĂ UN DICȚIONAR
Metoda: copy()
> >> dicționar = {"culoare": "violet",
> >> cămașă = dicționar .copy()
> >> dictionar
{„culoare”: „violet”, „preț”: 174,25,
>>> shirt.clear()
>>> tricou {} >>> maiou {}
174.25, „dimensiune”: „XS”}
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”}
Dacă cheia nu există, o creează cu valoarea implicită. Returnează întotdeauna valoarea pentru cheia
transmisă ca parametru.
- 23 -
>>> cămașă2
{„culoare”: „roz”, „model”: niciunul, „brand”: „Zara”, „dimensiune”: „U”}
METODE DE RETURNARE
- 24 -
- 25 -
directoare.
Unul dintre ele este prin modulul os , care facilitează lucrul cu întregul sistem de fișiere și
Al doilea nivel este cel care permite lucrul cu fișiere manipulând citirea și scrierea acestora din aplicația sau
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
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â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.
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.
- 28 -
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.
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
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:
continut = """
Acesta va fi conținutul noului fișier.
Fișierul va avea mai multe rânduri.
- 29 -
"""
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.
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;;;
- 30 -
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
- 31 -
ș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
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;;;
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:
- 32 -
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;;;
Ieșire:
- 33 -
- 34 -
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 -
O altă modalitate de a citi fișierele CSV cu antete este să utilizați obiectul DictReader în loc de
cu open("fișier.csv", "r") ca fișier: document = DictReader (fișier, delimitator=';', pentru rândul din document:
rând['DATE'] quotechar='"')
- 36 -
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'
În exemplul de mai sus, o matrice ar putea fi o listă de liste cu același număr de elemente. De
exemplu: matrice = [
- 37 -
Î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
Pe listele și tuplurile obținute sau nu dintr-un CSV, pot fi efectuate funcții statistice simple precum
următoarele:
- 38 -
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
n = len(sample_space)
ATRIBUIREA COTELOR
Atribuirea probabilității este una care oferă modele matematice pentru a calcula șansele ca anumite
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.
- 41 -
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,
, dat de suma
E=11,2,3,4,5,6}
astfel încât:
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
- 42 -
Un eveniment compus poate fi notat prin unirea evenimentelor sale simple (simbolul u , citit ca
P(2U4U6 ) = P(2)+P(4)+P(6)
P(2U4U6) = 1++1+1 =8
P(2 U 4 U 6) = |
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)
d. Probabilitatea de intersecție:
P(ARB) = P(A)P(B)
P(A n B) = 1 I
P(AnB) = I
# probabilitatea A
a = [i pentru i în e dacă i % 2 nu este 0] pa = len(a) / float(n)
- 43 -
# probabilitatea lui B
b = [i pentru i în e dacă i % 2 este 0]
bp = len(b) / float(n)
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
EVENIMENTE DEPENDENTE
Se referă la probabilitatea ca două evenimente să apară simultan, deoarece al doilea eveniment
A” , astfel încât:
P (B I^ _
1
■P(A)
Unde PA n B)
este probabilitatea intersectării evenimentelor lui A și B
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 -
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]
An ={1,3}
112 1
P(AnB)=P(1)+P(3)=+=é=, b0O3
poand_1-2_1
#6 3
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]
- 45 -
# 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
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
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
EVENIMENTE INDEPENDENTE
Spre deosebire de cazul precedent, aici probabilitatea ca B să apară nu este afectată de apariția lui
- 46 -
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)
E = {1,2,3,4,5,0}
b. Probabilitatea A:
.4= {1,3,5}
P(A) = h = 2 = 1
lui E , să fie cauza lui B . Din acest motiv, este cunoscută și sub numele de probabilitatea
cauzelor .
- 47 -
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ă:
• Valoarea lui h pentru evenimentele Ak este fiecare dintre valorile date în tabelul de
distribuție a populației.
- 48 -
• 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ă .
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ă
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
- 49 -
Formulă:
Informatie necesara:
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:
2. probabilitate condițională
- 50 -
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:
3. probabilitate totală
- 51 -
Nu
P(B) = >P(A,) P(BA,)
Formulă: k=1
Informatie necesara:
probabilitate anterioară
probabilitate condițională
Rezultate:
P(B) = 0,18
Cod Python:
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
- 52 -
4. probabilitate posterioară
_ . 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 -
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:
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 -
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
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)]
- 61 -
asupra opțiunii alese de utilizator. Iată un truc pentru a rezolva acest lucru într-un mod simplu și
inteligent.
2) În al doilea rând, este necesar ca toate funcțiile să aibă documentația corespunzătoare, care să
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
▪ Lista de la pasul 3
▪ Funcția locals().
▪ Atributul doc
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:
- 64 -