Avem date de la Bac. Ce facem cu ele?



July 8th, 2011 by Diana Coman

Cum toată lumea vuiește cu păreri despre rezultatele de la Bacalaureat, eu o să fiu tot aiurea cu drumul și nu zic încă nimic, dar vin, în schimb, cu datele. Ca să le putem studia împreună, că oi veni curând și cu ceva analiză la ele, dar deocamdată, datele.

E drept că datele sunt publice și pe situl ministerului, dar acolo, prin grija deosebită a firmei Siveco, sunt puse într-un așa format idiot încât nu poți face cu ele nimic altceva decât să înjuri. Eventual să te bocești, dacă ești mai slab de înger, sau dacă ești mai rău să vrei să-i dai cu capul de calculator pe cei de-au făcut situl cu pricina. Știți cum aranjează uneori lumea cărțile în bibliotecă după mărime și culoare de ai Sandra Brown și Sanda Marin lângă vreun exemplar rătăcit din Hemingway? Cam așa aranjează și Siveco datele: să arate frumos și să fie complet inutile (dacă vrei altceva decât să le admiri aspectul).

Revenind totuși la datele noastre, aveți aici rezultatele din 2011 într-o arhiva (aprox. 9MB), în banal format csv (atenție că-s separate totuși prin ";" pentru evitarea unor probleme). Menționez că încă mai există mici neajunsuri (sper să ajung să le corectez în zilele următoare), datorate faptului că datele au fost extrase din ghearele glorioasei implementări Siveco: coloana de medie trebuie calculată din notele din celelalte coloane, numele participanților conțin niste semne suplimentare, iar calificativul la ultima probă se află în fapt în coloana d5_nume. Coloanele pentru probe sunt numerotate de la d0 (limba maternă) la d5 (deci d1 = limba română, d2 = limba străină, d3 = materia obligatorie a profilului, d4 = materia la alegere).

Mulțumiri lui Cristian pentru intervenția-i salvatoare: fără el, nu știu când aș fi reușit să ies din labirintul de (flash+javascript)*n de care Siveco are nevoie pentru un simplu tabel. Voi reveni sper în curând și cu analiza datelor. Până atunci vă doresc spor la discuții susținute cu date.

Update: am mai luat odată datele de pe situl ministerului într-un format mai curat și cu mai multe din coloanele originale, puteți descărca arhiva (aprox. 9MB) bac2011.

Comments feed: RSS 2.0

52 Responses to “Avem date de la Bac. Ce facem cu ele?”

  1. Lucian says:

    Daca tot esti in date ... poti face distributia notelor :D, tip histograma.

  2. Diana Coman says:

    @Lucian Da, exact asta vreau sa fac :) Si chiar si pentru anii trecuti, ca-s curioasa rau daca e chiar Gauss de exemplu in toti anii. Zic ca se pot urmari niste lucruri interesante, daca tot e sa discutam.

  3. Mihai B says:

    cum nu ma intereseaza prea mult analiza, am alte intrebari de pus.

    as vrea sa imi explici cum le-ai sortat astfel incat sa le poti extrage pe toate. ca oricum le-ai sorta in functie de medie, sau nume, da pe cateva sute de pagini si ma gandesc ca si prin excel ar fi greu de tras toate pe un singur sheet.

    chiar sunt curios cum ai procedat sa le extragi pe toate de acolo?

  4. Mihai B says:

    adica, daca nu am fost clar, as vrea sa stiu cum pot extrage toata baza lor de date legata de rezultate la bac 2011 folosind excel si in acelasi timp sa le pot si actualiza in timp real, daca e cazul

  5. Diana Coman says:

    @Mihai B Nu le extragi din baza lor de date, ca nu ai acces la ea. Iar din cauza modului in care sunt puse pe sit, nu e prea simplu nici sa le sincronizezi direct. Dar raspunsul la intrebarea ta este, pe scurt: am scris un crawler (mai corect spun un scraper) pentru situl lor, suficient de inteligent incat sa treaca de flash+javascript pana la datele reale si l-am lasat apoi sa ruleze si sa puna totul intr-un format utilizabil. Daca te chiar intereseaza detaliile tehnice, am folosit Scrapy, XPath si Python.

  6. Mihai B says:

    alea-s deja prea programatoriste pentru mine, dar o sa le incerc. ca ma gandesc ca doar exista tutoriale, ceva. :D

  7. Diana Coman says:

    @Mihai B P.S. Sa folosesti Excel cred ca-i o idee proasta in cazul de fata, ca e posibil nici sa nu fie in stare sa lucreze cu atatea date intr-un singur sheet (imi pare ca are o limita care-i mai jos de cele aprox. 212K randuri de aici).

  8. Mihai B says:

    deschide si excel. chiar toate randurile. doar ca d5_scris_f si media
    le citeste ca fiind non-available.

    am incercat sa instalez scapy, da-mi cere python si mi-e teama ca daca imi bag pythhonu'o sa imi ceara anaconda, etc. :D

  9. Diana Coman says:

    @Mihai B Ha ha, pai de aia e mai bine la asa ceva sa pui un Linux, fie si-n masina virtuala daca nu-ti e la indemana altminteri. Tutoriale si forumuri exista, deci spor la invatat! :)

  10. Diana Coman says:

    A, media chiar e N/A: cum ziceam in articol trebuie calculata din note, ca era atat de absconsa printre flashuri si alte alea de m-am lipsit, ca e mai simplu de calculat.

  11. Dr.A says:

    e exclus ca excel sa deschida fisierul altfel decat partial. Recomand mathlab dar e nevoie de curatat un pic din "" si coduri html. Poate merita imprelentat in scraper asta avand in vedere ca o sa intre si contestatiile.

  12. Dr.A says:

    Sugestii:
    &nbsp ar trebui inlocuit cu orice nu contine ; sau separatorul ar trebui definit ";" si nu ; .

  13. Diana Coman says:

    @Dr A Daca e pana acolo, eu recomand R ca bate matlabul din cate le-am folosit eu pe amandoua. Ai dreptate ca mai trebuie curatate, o sa actualizez ceva mai incolo. Intre timp mai aranjez un pic scraperul ca sa curete mai bine si o sa incep sa-l rulez pe anii din urma.

    Treaba cu contestatiile in principiu ar trebui sa fie simpla, ca ar trebui sa apara doar ca un camp separat (pe care l-am luat in fapt, dar nu-i aici ca era gol). Presupunand ca nu schimba acum ceva la format pe situl ministerului, evident.

  14. Open office for the win. Pariu cu voi ca-i mai rapid ca mathlab, si mai stabil. Implementarea de linux, zic.

  15. Dr.A says:

    open office nu deschide nici el mai mult de 65536 linii

  16. Diana Coman says:

    @Mircea Popescu Nu. OpenOffice la capitolul asta imi pare ca-i chiar mai slab decat ultima versiune de Excel (are limita mai jos). Si nu, in nici un caz nu se compara OpenOffice cu R sau Matlab.

  17. gheorghe says:

    Y U hatin' on excel? Niste distributii care arata aproape normale, uneori: http://imgur.com/eRoNw&vMWQp&fDiXb sunt mai multe imagini.

    Cele notate cu 0 sunt neprezentat, iar cele notate cu 11 sunt eliminat din examen. Am facut si o medie generala, dar am obsevat ca e stricata, ca unii n-au nota de la ultima proba.

  18. Cristian says:

    Si doar i-am zis Dianei ca ar fi mai indicat sa le punem intr-o baza de date SQLite intrucat e mai un pic mai capabila decat un CSV chior, iar suport pentru SQLite au destul de multe programe. Am impresia ca exista si driver ODBC, deci fanii MS Office ar putea utiliza Access pentru a o analiza.

    Nici eu n-am putut deschide CSV-ul cu libreoffice-base-3.3.3.1-1.fc15.x86_64.rpm, iar gnumeric-1.10.16-1.fc15.x86_64.rpm a facut spume din cauza separatorului punct si virgula. Mai ramane doar KOffice de incercat.

  19. Diana Coman says:

    @gheorghe E un inceput, dar zic ca daca vrei sa vezi ceva serios ar trebui sa mergi mai in amanunt. Nu uraste nimeni Excel, e si el bun la cate ceva, dar nu la o analiza de date serioasa (ca n-are suficienta capacitate, flexibilitate si mananca mult timp daca e sa repeti ceva analiza/pasi)

    @Cristian Un csv poate fi pus intotdeauna in orice baza de date vrei. Si nu exista ceva mai portabil decat text banal, zic eu.

  20. Dr.A says:

    ai sters din nume ? eu am curatat lista si-mi dau doar vreo 196 de mii de candidati...

  21. Diana Coman says:

    Hmm, nu. Dar cum ai curatat-o?

  22. Dr.A says:

    am importat cate 65.000 de linii odata in open office

  23. Diana Coman says:

    @Dr A Am mai rulat acum o verificare sumara si par ok ca numar (vezi ca mai sunt si diversi chiar cu acelasi nume). Deci pot sa incerc o verificare daca imi zici cum/ce ai curatat doar.

    Oricum, pregatesc o varianta curata sa o pun pana duminica (inclusiv cu contestatiile daca apar pana atunci pe situl ministerului).

  24. Diana Coman says:

    @Dr A Pai deci problema ar fi de la OO? Eu am luat tot fisierul in R si sunt 212763 randuri si par ok/corespunzator cu ce e pe sit.

  25. Dr.A says:

    mnoa .. e posibil ca unele randuri sa nu se termine corect sa apara de acolo probleme. 4000 la 200.000 nu-i mare lucru

  26. Diana Coman says:

    Ce-i drept, se poate. Oricum, am cam rezolvat problema in ultima varianta de scraper zic eu, acum sa rulez pe toti anii si om vedea.

  27. gheorghe says:

    @Diana Coman Deah, doar eram curios sa vad cat de mult se apropie de o distributie normala si deci cam cat e posibil sa se fi copiat. La probele de specialitate sau ce-s alea se pare ca s-ar fi dat drumu la copiat un pic, ca nu-mi vine mie sa cred ca le-a placut tuturor geografia in halul asta.

    Cu excel e cam chin, cred ca o sa le bag intr-un sql server sau ceva sa scot aceeasi chestie dar filtrata dupa localitati, licee si de-astea.

  28. Pai eu zic sa dati un ochi aici, oo haterz!

  29. Cristian says:

    @Diana Coman:
    Ca un fan Unix ce sunt, nu pot decât să fiu în favoarea formatelor text. Mi-aduc aminte și acum aminte cum am citit în cartea The UNIX Programming Environemnt că autorii Unix-ului au preferat formatul text în locul celui binar datorită portabilității sale. Iar pe vremea aia arhitecturile erau ceva mai variate, nu ca în zilele noastre când tineretul nu știe decât de x86 și uneori și de ARM, 'tu-le mama lor!

    Apropo de ARM, și iOS (iPhone OS) și Android utilizează SQLite, deci micuțul sistem de baze de date a devenit destul de popular. Și Firefox îl utilizează de câțiva ani. Pe de altă parte pe Fedora 15 am drivere ODBC și JDBC pentru MySQL, dar n-am pentru SQLite. Iar LibreOffice (OpenOffice.org) Base bineînțeles că nu are suport nativ pentru el. Bine că am în schimb drivere/biblioteci pentru Python, R și Mono.

    Ca să mă leg și de CSV, sunt două mari probleme, ba chiar trei cu el. Unu la mână nu toată lumea folosește chiar același format (dialect). Unii separă câmpurile cu virgulă, alții cu punct și virgulă, iar alții cu taburi sau mai știu eu ce. A doua problemă e codificarea textului. Ce standard folosești: UTF-8, UTF-16, ISO8859-16 sau mai știu eu ce? Ce-i drept problema asta apare și la bazele de date, doar că acolo ai încorporate setările. Ce-a de-a treia problemă e dată de localizare. O să râzi, dar am avut odată probleme la serviciu cu nu știu ce nație care folosea virgula pe post de separator zecimal și se alegea praful de numerele din CSV (și alte setări din fișiere text). În cele din urmă am setat localizarea pe US sau C pentru toată lumea și toți au avut parte de același rahat.

    Să răspund totuși la întrebarea din titlu și anume la ce facem cu datele alea. Ei bine, Base are suport pentru CSV-uri și a mers până și cu CSV-ul ăsta mai ciudat. Niscaiva instrucțiuni pentru doritori:
    - Porniți Base
    - Selectați Connect to an existing database: Text
    - Next
    - Setați Path to text files cu directorul în care se află CSV-ul. Eu de exemplu am ales /tmp/odbc.
    - Selectați 'Comma separated value' files (*.csv)
    - Field separator: ;
    - Text separator: "
    - Decimal separator: .
    - Thousands separator:
    - Next
    - Selectați Yes, register the database for me
    - Bifați Open the databsse for editing
    - Finish
    - Alegeți ce nume vrea mușchiul vostru și salvați

    Teoretic chestia asta ar trebui să se poată face și cu MS Access.

    @Dr. A: am scos între timp o parte din gunoaiele alea.

  30. Dr.A says:

    Si eu. acum csv-ul are 57 MB. In loc de 70.
    urmeaza sa scot numele candidatilor din ficier ca pentru ce ma intereseaza nu-i relevant.

  31. Diana Coman says:

    @Dr A Pai zic poate dai o idee de ce te ocupi ca analiza? Sa nu ne suprapunem, nu de alta, ca e pentru toata lumea :)

  32. Cristian says:

    P.S. Sărăcia aia de Base (sau de Băse?!) nu vede decât 10424 de articole.

  33. Diana Coman says:

    Actualizat cu datele curatate (si cu mai multe din coloanele originale).

    @Cristian Daca folosesti toate rapciugile... :D

  34. Deci pe mine m-ati tinut in moderare si-acuma ma ignorati cu spor ? Huo cenzura!

  35. Diana Coman says:

    @Mircea Popescu Na, ca nu te mai ignoram. Dar de cand e ignorarea cenzura, a?

  36. Dr.A says:

    Eu planui sa fac topul liceelor pe tara si judete.

  37. Diana Coman says:

    @Dr A Bun, asteptam rezultatele deci. Eu acum merg pe distributia notelor si sa incerc sa vad cat de gaussiene sunt de fapt...

  38. Dr.A says:

    Imi pare mie sau fisierul cu medii e mai scurt decat cel cu promovarea (in sensul ca lipsesc specializari)? poti sa-mi explici ce ai scos ?

  39. Diana Coman says:

    @Dr A E mai scurt, da, dar nu lipsesc specializari (daca te uiti la lista de specializari, o sa vezi ca-i fix aceeasi). Motivul pentru care e mai scurt e ca sunt anumite combinatii scoala+specializare la care a fost un singur elev si acela eliminat - caz in care n-aveam ce medie sa calculez, pe cand rata de promovare e calculabila - 0.

  40. Dr.A says:

    in sensul ca am 6849 de sectii/specializari la promovare si doar vreo 3200 la medii. Ori specializari cu promovare 0 sunt doar 1980. Deci e clar ca ceva pe undeva nu pusca.

  41. Diana Coman says:

    Stai, ca la mine se vede altfel, s-o fi bulibasit fisierul. Deci la mine e asa: 6849 intrari pentru promovare (deci ok, cum ai gasit si tu) si 6829 intrari pentru medii (deci diferenta e de 20 de intrari, care sunt cele de care ziceam mai sus, ca am facut un merge, uite aici documentul cu ambele).

  42. Dr.A says:

    fisierul cu medii pe care l-ai pus anterior si pe care l-am publicat ieri e pe jumatate.

  43. Dr.A says:

    Poate reusesti la tine in program sa faci in asa fel ca in numele liceului sa nu apara virgule (sau ghilimele) ca mie astea imi dau dureri de cap la deschidere. Mie imi pare ca un separator ; e mai bun pentru ca e neutru la genul asta de date.

  44. Diana Coman says:

    @Dr A Ufffff, scuze! Ce inseamna daca n-am mai verificat si ce-a ajuns pana pe server... Scuze, e vina mea deci. Cel mai simplu e sa raman cu separatorul ";" ca eu de aceea l-am folosit pe asta intai, dar daca mi s-a plans lumea ca .csv e mai bine cu "," samd.... Hai ca schimb acum separatorul si las doar fisierul complet cu ambele aspecte.

  45. Dr.A says:

    nu intotdeauna cei care cer ceva o fac spre binele lor. Mie imi pare ca folosirea in interiorul campurilor a unor semne care separa campuri e o buna metoda de a strica planificat.

    campurile noastre au . , \ si " in interior
    deci separarea trebuie sa se faca prin ; sau orice alt caracter ce nu e continut de campuri

  46. Diana Coman says:

    @Dr A Ia din nou fisierul cu totul, am schimbat separatorul cu ; Ar trebui sa fie in total 6849 randuri, din care la 20 ai NA pentru medie. Inca odata, imi cer scuze, ca inteleg ca ieri ai muncit pe datele incomplete :(

  47. [...] o primă și scurtă analiză a datelor de la Bacalaureat 2011, să vedem cum stau elevii* cu onestitatea la nivelul întregii țări și apoi, mai în amănunt, [...]

  48. [...] trecuta am aflat ca Diana Coman a reusit sa centralizeze datele de pe situl ministerului intr-o baza de date. Acest lucru nu a fost [...]

  49. [...] priveşte cazul României: analize foarte interesante au fost efectuate de Diana Coman (aici, aici şi aici), precum şi de colegul meu de Ad-Astra Lucian Ancu. Mã mãrginesc sã vi le [...]

  50. [...] doar o săptămână în urmă, ofeream într-un format accesibil datele obținute de pe situl ministerului* privind rezultatele de la Bacalaureat 2011 și invitam la [...]