Μια πολύ πρόχειρη προσέγγιση στις βαθμολογίες ΕΠΑΛ 2023 και εφόσον το αντικείμενο είναι στην python, η επεξεργασία γίνεται με python (πως το σκέφτηκα!)

Θα χρησιμοποιήσουμε το jupyter notebook για το εφετζιλίκι ... καλά η αλήθεια είναι πως με το jupyter μπορούμε να δούμε σε slides σχόλια και κώδικα

Kάνουμε εισαγωγή pandas, numpy και matplotlib βιβλιοθήκες που θα χρειαστούμε.Το pandas χρειάζεται για τα dataframes.

In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Θα διαβάσουμε το αρχείο με όλα τα στατιστικά το οποίο μπορείτε να το βρείτε: https://docs.google.com/spreadsheets/d/18yIxa7CYK5YUldaAy9dKZn9Lb8NngzxTx2JHc3cSXeY/edit?usp=drive_link (το έχω αλλάξει λίγο στην επικεφαλίδα σε σχέση με αυτό που θα βρείτε από το υπουργείο)

In [2]:
data1 = pd.read_csv('ΕΠΑΛ23.csv', skiprows = 1)
data1.shape
Out[2]:
(72, 29)

Υπάρχουν αρκετές στήλες που με ενοχλούν τώρα οπότε θα τις σβήσουμε

In [3]:
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
Out[3]:
(72, 15)

Να βρούμε που υπάρχει το μάθημα το οποίο μας ενδιαφέρει

In [4]:
data1[data1['ΜΑΘΗΜΑ'].str.startswith('ΠΡΟΓ')]
Out[4]:
ΜΑΘΗΜΑ ΕΙΔΙΚΟΤΗΤΑ προσέλευση κλάση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.

In [5]:
df = data1.iloc[[43,47],:]
df= df.reset_index()

#σβήσιμο στηλών που μας είναι άχρηστες τώρα
df.drop(labels=['index',"ΜΑΘΗΜΑ"], axis=1, inplace = True)
df.shape
Out[5]:
(2, 14)
In [6]:
df
Out[6]:
ΕΙΔΙΚΟΤΗΤΑ προσέλευση κλάση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 το πλήθος κάθε κλάσης. Θα υπολογίσουμε τον μέσο όρο της βαθμολογίας για κάθε ειδικότητα με τον παρακάτω μπακαλοκώδικα:

In [7]:
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 

Παρακάτω θα κάνουμε και ένα διάγραμμα για το πλήθος των κλάσεων για τις δύο ειδικότητες μαζί (σπάω τον κώδικα γιατί δεν χωράει καλά το γράφημα)

In [8]:
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]
In [9]:
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!