Projekt

Obecné

Profil

Akce

DatasetProcessing » Historie » Revize 9

« Předchozí | Revize 9/10 (rozdíl) | Další »
Petr Hlaváč, 2020-05-27 10:03


DatasetProcessing

Složka obsahuje implementace processoru pro jednotlivé datasety. Processory jsou dynamicky importovány je tedy proto nutné dodržet pojemnování "dataset-name"_processor.py.

Připravený date_dic naplně následovně

date_dict klíč -> datum ve formát YYYY-mm-dd-hh
date_dict hodnota -> data_dict (další dictionary)
data_dict klíč -> název zařízení
data_dict hodnota -> CSVUtils.CSVDataline

při tvorbě CSVUtils.CSVDataline probíhá kontrola validity dat.
při exportu dat do CSV se následně kontroluje jestli objekty jsou opravdu ze třídy CSVUtils.csv_data_line!!

Po implementování metody je nutné změnit Return None na Return date_dict

Generovaný Processor

from Utilities.CSV import csv_data_line

def process_file(filename):
    """ 
    Method that take path to crawled file and outputs date dictionary:
    Date dictionary is a dictionary where keys are dates in format YYYY-mm-dd-hh (2018-04-08-15)
    and value is dictionary where keys are devices (specified in configuration file)
    and value is CSVDataLine.csv_data_line with device,date and occurrence

    Args:
    filename: name of processed file

    Returns:
    None if not implemented
    date_dict when implemented
    """ 
    date_dict = dict()

    #with open(filename, "r") as file:
    print("You must implements process_file method first!")
    return None

Vzorově implementovaný processor

Struktura open dat koloběžek ve staženém csv je "22.08.2018 12:27:00";"stojan-Machovka";210;1 "DATUM";"JMENO_STOJANU";"CISLO_KONKRETNÍHO_STOJANU";"STAV".

Potřebná data pro zobrazení v mapě jsou specifikovány v Utilities.CSVUtils.csv_data_line a jsou to název, datum (YYYY-dd-mm-hh) a četnost

Processor tedy postupuje následovně

  1. Otevře soubor a čte ho po řádcích
  2. Rozdělí si data z řádky po sloupcích splitem se separátorem (;)
  3. Na první pozici máme datum ten převedeme na požadovaný formát funkcí implementovanou v Utilities.date_formating.py
  4. Jako název devicu zvolíme název stojanu tedy druhý sloupec"
  5. Četnost je inkrementována na základě počtu záznamu v dané hodině.

Když už máme všechny potřebná data vytvoříme si slovník, kde klíčem bude datum a hodnotou další slovník,
kde klíčem je název zařízení a hodnotou objekt třídy z Utilities.CSVUtils.csv_data_line.

Ukázka výstupního slovníku
V této ukázce je vidět validní výstupní slovník.

Kód

from Utilities.CSV import csv_data_line
from Utilities import date_formating

def process_file(filename):
    """ 
    Method that take path to crawled file and outputs date dictionary:
    Date dictionary is a dictionary where keys are dates in format YYYY-mm-dd-hh (2018-04-08-15)
    and value is dictionary where keys are devices (specified in configuration file)
    and value is CSVDataLine.csv_data_line with device,date and occurrence

    Args:
    filename: name of processed file

    Returns:
    None if not implemented
    date_dict when implemented
    """ 
    date_dict = dict()

    with open(filename, "r") as file:

        for line in file:

            array = line.split(";")

            date = date_formating.date_time_formatter(array[0][1:-1])
            name = array[1][1:-1]

            if date not in date_dict:
                date_dict[date] = dict()

            if name in date_dict[date]:
                date_dict[date][name].occurrence += 1
            else:
                date_dict[date][name] = csv_data_line.CSVDataLine(name, date, 1)

    return date_dict

Aktualizováno uživatelem Petr Hlaváč před asi 4 roky(ů) · 9 revizí