Matèria: Programació
Nivell: 1r Batxillerat
Breu descripció del rol que ocupa dins el projecte global:
Com a professors de Tecnologia, hem utilitzat 5 sessions de 2h de les classes de Programació per a la implementació del projecte de qualitat de l'aire a les aules, tal com es detalla en la seqüenciació i en el guió de treball a l'aula, compartit amb l'alumnat a Google Classroom i detallat a continuació.
A les activitats de programació de les estacions i anàlisi de dades hem fet codocència amb els companys de les altres optatives del mateix nivell: Reptes de Biologia i Geologia, i Robòtica
INTRODUCCIÓ
Python és una excel·lent opció per fer anàlisi de dades. Amb l'ús de llibreries com Pandas, NumPy i Matplotlib, podem llegir, manipular i visualitzar les dades de manera efectiva. A més, hi ha altres llibreries especialitzades com SciPy per a càlculs científics i scikit-learn per a l'aprenetatge automàtic.
Des de l'optativa de Programació, i a partir de les dades obtingudes pels companys de Reptes, portarem a terme aquest anàlisi a través de Python. Mantindrem comunicació amb els companys de robòtica per demanar la programació de l'estació sota demanda dels nostres requeriments.
ACTIVITATS PROGRAMADES
Durant les cinc sessions destinades a l'anàlisi de les dades que ens han facilitat des de Reptes de Biologia i Geologia, gràcies a la programació duta a terme a l'optativa de Robòtica, la feina feta amb les dades de l'estació és aquesta:
SESSIÓ 1. ADEQUACIÓ DEL FITXER:
Un cop has rebut el fixer amb les dades que ha mesurat l'estació de mesura, canvia l'estructura original (mostrat a la imatge), eliminant les cel·les en blanc que hi ha entre les lectures. Pots fer servir el full de càlcul de Google o Libre Office Calc, per exemple.
SESSIÓ 1. ELIMINACIÓ DE VARIABLES NO REPRESENTATIVES
Fixa't que les dades del camp 4, són de valor nul. Identifica en el programa facilitat pels companys de Robòtica, a quina variable correspon i còpia les dades d'aquesta columna en un altre full. Recorda: no és convenient esborrar dades!
SESSIÓ 2. PUNTS I COMES
Substitueix en totes les dades, les "comes" dels decimals per punts. Investiga per quin motiu, els llenguatges de programació com Python, prefereixen utilitzar els punts "." per representar els nombres decimals.
SESSIÓ 2. FITXER CSV
Un cop dutes a terme les activitats anteriors, exporta el fitxer amb l'extensió .CSV. Realitza una petita recerca sobre el significat d'aquesta extensió, i investiga si Python admet altres extensions per representar dades d'un full de càlcul.
SESSIONS 2 i 3. GENERACIÓ DEL CODI EN PYTHON
A partir de l'estructura del programa facilitada, finalitza el programa per a la lectura del codi (Activitat 1).
Has d'afegir les instruccions corresponents perquè el programa dugui a terme aquestes tasques:
a. Obrir el fitxer de dades.CSV com a lectura.
b. Emmagatzema les dades de Temperatura en una variable de tipus llista. Has de tenir en compte que les dades de la llista són String i s'han de canviar de format (Activitat 2 i 3).
SESSIÓ 4. ELABORACIÓ DEL GRÀFIC
Envia la llista amb les dades ja numèriques a la funció fes el gràfic fent servir la llibreria matplotlib.
Personalitza'l de manera que tinguis títol del gràfic, dels eixos i insereix la graella al fons. Investiga altres possibles personalitzacions.
SESSIÓ 5. ESTADÍSTICA AMB PYTHON
Amb la llibreria statistics (que has d'importar) pots calcular els paràmetres estadístics bàsics (mitjana, mediana, quartils, màxim, mínim o desviació estàndard, per exemple).
A més hi pots afegir un boxplot que dibuixa caixes que representen els diferents quartils Q1,Q2 (mediana) i Q3 abans calculats. Personalitza'l com has fet abans amb el gràfic dels punts.
Exemple de programa elaborat per l'alumnat de Programació (representació i anàlisi estadística de les dades de soroll a l'aula).
import matplotlib.pyplot as plt
import statistics
def llegir_arxiu(soroll):
sorollNum = []
with open(soroll, "r") as file1: # s'obre l'arxiu per llegir les dades.
valorsSoroll = file1.readlines()
for value in valorsSoroll:
sorollNum.append(eval(value.strip()))
sorollNum = sorollNum[:-1] #leliminem l'últim valor (és un zero)
return sorollNum
def ferGrafic (soroll):
# coloquem els punts
plt.plot(soroll) #scatter
# mostrem eixos de coordenades
plt.grid(True, which='both')
# anomenem la gràfica
plt.title('Gráfica sensor de soroll')
# anomenem eix t
plt.xlabel('Temps (t)')
# anomenem eix %
plt.ylabel('Percentatge (%)')
# color de fons de la gràfica
plt.gcf().set_facecolor('lightgrey')
# color de la linea
plt.plot(soroll, color='#0066cc')
# color dels punts
plt.scatter(range(len(soroll)), soroll, color='#00ff00')
# función para mostrar el plot
plt.show()
def estadistica (soroll):
print ("Mitjana: ", round(statistics.mean (soroll),2))
print ("Mediana: ", round (statistics.median (soroll), 2))
print ("Quartils: ", statistics.quantiles(soroll, n=4))
print ("Màxim: ", max (soroll))
print ("Mínim: ", min (soroll))
print ("Desviació estàndar: ", round(statistics.stdev (soroll),2))
plt.boxplot(soroll) #boxplot
plt.title('boxplot de soroll')
plt.show()
#Programa principal
elSoroll = llegir_arxiu("01_soroll.csv")
for element in elSoroll:
print (element)
ferGrafic (elSoroll)
estadistica (elSoroll)