Μια πολύ πρόχειρη προσέγγιση στις βαθμολογίες ΕΠΑΛ 2023 και εφόσον το αντικείμενο είναι στην python, η επεξεργασία γίνεται με python (πως το σκέφτηκα!)
Θα χρησιμοποιήσουμε το jupyter notebook για το εφετζιλίκι ... καλά η αλήθεια είναι πως με το jupyter μπορούμε να δούμε σε slides σχόλια και κώδικα
Kάνουμε εισαγωγή pandas, numpy και matplotlib βιβλιοθήκες που θα χρειαστούμε.Το pandas χρειάζεται για τα dataframes.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Θα διαβάσουμε το αρχείο με όλα τα στατιστικά το οποίο μπορείτε να το βρείτε: https://docs.google.com/spreadsheets/d/18yIxa7CYK5YUldaAy9dKZn9Lb8NngzxTx2JHc3cSXeY/edit?usp=drive_link (το έχω αλλάξει λίγο στην επικεφαλίδα σε σχέση με αυτό που θα βρείτε από το υπουργείο)
data1 = pd.read_csv('ΕΠΑΛ23.csv', skiprows = 1)
data1.shape
(72, 29)
Υπάρχουν αρκετές στήλες που με ενοχλούν τώρα οπότε θα τις σβήσουμε
data1.drop(labels=["ΑΝΑΒΑΘΜΟΛΟΓΗΣΕΙΣ_n","ΑΝΑΒΑΘΜΟΛΟΓΗΣΕΙΣ_f"],
axis=1, inplace = True)
#σβήσιμο των στηλών των σχετικών συχνοτήτων
svou = [col for col in data1.columns if col.endswith('_f')]
data1.drop(columns = svou, axis =1, inplace = True)
data1.shape
(72, 15)
Να βρούμε που υπάρχει το μάθημα το οποίο μας ενδιαφέρει
data1[data1['ΜΑΘΗΜΑ'].str.startswith('ΠΡΟΓ')]
ΜΑΘΗΜΑ | ΕΙΔΙΚΟΤΗΤΑ | προσέλευση | κλάση1_n | κλάση2_n | κλάση3_n | κλάση4_n | κλάση5_n | κλάση6_n | κλάση7_n | κλάση8_n | κλάση9_n | κλάση10_n | κλάση11_n | κλάση12_n | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
43 | ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ | ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ | 1365 | 372 | 318 | 65 | 62 | 61 | 59 | 56 | 66 | 54 | 62 | 83 | 107 |
47 | ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ | ΤΕΧΝΙΚΟΣ Η/Υ ΚΑΙ ΔΙΚΤΥΩΝ Η/Υ | 630 | 221 | 165 | 27 | 25 | 28 | 19 | 20 | 24 | 20 | 20 | 30 | 31 |
Βρήκαμε δύο φορές το μάθημα μέσα στο αρχείο (δεν ξέρω το δίνει άλλη ειδικότητα; ) και θα κρατήσουμε αυτές τις γραμμές που μας ενδιαφέρουν σε ένα νέο dataframe.
df = data1.iloc[[43,47],:]
df= df.reset_index()
#σβήσιμο στηλών που μας είναι άχρηστες τώρα
df.drop(labels=['index',"ΜΑΘΗΜΑ"], axis=1, inplace = True)
df.shape
(2, 14)
df
ΕΙΔΙΚΟΤΗΤΑ | προσέλευση | κλάση1_n | κλάση2_n | κλάση3_n | κλάση4_n | κλάση5_n | κλάση6_n | κλάση7_n | κλάση8_n | κλάση9_n | κλάση10_n | κλάση11_n | κλάση12_n | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ | 1365 | 372 | 318 | 65 | 62 | 61 | 59 | 56 | 66 | 54 | 62 | 83 | 107 |
1 | ΤΕΧΝΙΚΟΣ Η/Υ ΚΑΙ ΔΙΚΤΥΩΝ Η/Υ | 630 | 221 | 165 | 27 | 25 | 28 | 19 | 20 | 24 | 20 | 20 | 30 | 31 |
Έχουμε λοιπόν δύο φορές το μάθημα σε 2 γραμμές των 14 στηλών. Η πρώτη στήλη είναι η ειδικότητα, η επόμενη είναι η προσέλευση και οι υπόλοιπες 12 το πλήθος κάθε κλάσης. Θα υπολογίσουμε τον μέσο όρο της βαθμολογίας για κάθε ειδικότητα με τον παρακάτω μπακαλοκώδικα:
x_pos=[2.5,7.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5]
for i in range(2):
grapta = df.iloc[i,1]
mo=np.sum(df.iloc[i,2:14]*x_pos)/grapta
print('ειδικότητα:', df.iloc[i,0], ' γραπτά:',
df.iloc[i,1], 'μο:', mo ,'\n')
ειδικότητα: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ γραπτά: 1365 μο: 10.038461538461538 ειδικότητα: ΤΕΧΝΙΚΟΣ Η/Υ ΚΑΙ ΔΙΚΤΥΩΝ Η/Υ γραπτά: 630 μο: 8.68095238095238
Παρακάτω θα κάνουμε και ένα διάγραμμα για το πλήθος των κλάσεων για τις δύο ειδικότητες μαζί (σπάω τον κώδικα γιατί δεν χωράει καλά το γράφημα)
df.drop(labels=["προσέλευση"], axis=1, inplace = True)
new = df.iloc[:,1:].sum().values
x = ['0-5','5-10','10-11','11-12','12-13','13-14','14-15','15-16','16-17','17-18','18-19','19-20']
#width=[5,5,1,1,1,1,1,1,1,1,1,1]
width=[1,1,1,1,1,1,1,1,1,1,1,1]
x_pos=[1,2,3,4,5,6,7,8,9,10,11,12]
plt.style.use('fivethirtyeight')
plt.ylabel('πλήθος')
plt.grid(axis='x')
plt.xticks(fontsize=7)
plt.rcParams["figure.figsize"] = (8,14)
plt.bar(x_pos, new, width = width, color='yellowgreen',
edgecolor='black',alpha=0.5,label='ΕΠΑΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2023')
plt.xticks(x_pos,x)
plt.legend(loc='upper right')
plt.show()
la fine!