Matura Computer Science study materials
Matura Computer Science study resources

Czyszczenie wyników próbnej matury w arkuszu

Matura Computer Science · Put your knowledge to work in context.

All case studies

Czyszczenie wyników próbnej matury w arkuszu

Nauczyciel analizuje wyniki próbnej matury z informatyki w arkuszu. Plik CSV ma 1200 wierszy i kolumny: id, klasa, zad1...zad10, suma. Każde zadanie ma inną maksymalną liczbę punktów, a suma w pliku została policzona ręcznie i w 37 wierszach nie zgadza się z sumą zadań. W kolumnach zadań 58 komórek zawiera tekst brak, 14 uczniów ma zduplikowany id, a 5 klas ma inne wielkie/małe litery. Próg zdania to 30% maksymalnej liczby punktów. Arkusz ma policzyć średni wynik ważony punktacją zadań, odsetek zdających i listę uczniów wymagających poprawy. Wcześniejsza formuła AVERAGE ignorowała brak, przez co zawyżała średnią. Zespół chce najpierw oczyścić dane, potem policzyć wskaźniki, a na końcu zapisać krótki skrypt w Pythonie do powtarzalnego przetwarzania. Trzeba zdecydować, co zrobić z brakującymi punktami i duplikatami oraz gdzie zaokrąglać.

1. Jak oczyścić dane przed obliczeniami? Wskaż decyzje dla `brak` i duplikatów.

Read the worked answer

Najpierw rozdzielamy brak danych od zera punktów. brak nie może być automatycznie traktowane jako 0, bo może oznaczać nieobecność, brak odpowiedzi albo błąd eksportu. Trzeba ustalić politykę: jeśli brak oznacza brak odpowiedzi, to dla wyniku ucznia liczymy 0, ale zapisujemy flagę; jeśli oznacza brak danych o uczniu, wyłączamy wiersz z analizy i raportujemy liczbę wyłączeń. Duplikaty id nie mogą być usuwane bez sprawdzenia: jeśli wiersze są identyczne, scalamy je; jeśli różnią się punktacją, wybieramy nowszy wpis lub oznaczamy do ręcznej weryfikacji. Klasy normalizujemy np. przez trim i upper, żeby 3a i 3A były tą samą klasą. Kolumnę suma traktujemy jako podejrzaną i przeliczamy ją z zadań; rozbieżności raportujemy, a nie nadpisujemy po cichu.

2. Zaproponuj obliczenie średniego wyniku ważonego i odsetka zdających.

Read the worked answer

Maksymalna suma to suma maksimów zadań, np. 50. Wynik ucznia to suma punktów z zadań po zastosowaniu polityki dla brak. Średni wynik ważony to suma wszystkich punktów podzielona przez liczbę uczniów i maksimum, a nie średnia z procentów, bo zadania mają różne wagi. W arkuszu można dodać kolumnę pomocniczą =IF(ISNUMBER(B2),B2,0) dla każdego zadania, potem =SUM(...), a zdawalność =IF(suma>=0,3*maks;1;0). Odsetek zdających to =SUM(zdane)/COUNT(id). W Pythonie: wczytaj CSV, znormalizuj klasy, rozstrzygnij duplikaty, zamień brak zgodnie z polityką, policz total, max_total, pass = total >= 0.3*max_total, a na końcu wypisz średnią i odsetek. Nie licz średniej z już zaokrąglonych procentów, bo narastają błędy.

3. Gdzie zaokrąglać i dlaczego? Podaj przykład błędu.

Read the worked answer

Zaokrąglamy tylko do prezentacji, po wykonaniu wszystkich obliczeń. Próg zdania trzeba porównywać z dokładną wartością, a nie z zaokrąglonym procentem. Przykład: maksimum 50 pkt, próg 30% to 15 pkt. Uczeń ma 14,95 pkt, czyli 29,9%. Po zaokrągleniu do liczby całkowitej procentów otrzymamy 30%, ale uczeń nie zdał, bo 14,95 < 15. Gdyby porównać zaokrąglony procent, zostałby błędnie uznany za zdającego. Podobnie średnia klasy powinna być liczona z pełnych sum, a dopiero wynik końcowy pokazany z jednym miejscem po przecinku. W arkuszu warto użyć ROUND tylko w komórce prezentacyjnej, a w komórkach decyzyjnych pozostawić wartość dokładną.