Struttura del progetto di analisi in Python

1

Sto per imbarcarmi in un grande progetto di analisi / estrazione dati, che intendo fare con Python.

I miei dati da analizzare sono formati da file di livello 1 che includono alcuni dettagli. e ogni file punta a diversi file di livello 2. Ciascuno di questi file di livello 2 include ulteriori dettagli e riferimenti a file PDF (livello 3) che potrebbero dover essere analizzati. E ovviamente ci sono molti riferimenti incrociati, dettagli in conflitto, ecc., Che dovranno essere curati manualmente in seguito in modo tracciabile.

Per aggiungere la beffa al danno, l'estrazione deve essere ripetuta su più dataset che differiscono sostanzialmente (quindi la maggior parte del codice di estrazione dovrà essere riscritta). I dati sono quindi destinati a entrare in un database adatto dove dovrebbe essere strutturato su tutto il set di dati per una facile presentazione.

Sto cercando alcuni consigli su come strutturare ed eseguire tutto questo. Intendevo avere ad es. uno script per ogni passaggio (ovvero uno script per l'estrazione dei dati dal livello 1, popolamento del database. Script per il livello 2 utilizza il database come base per i file da analizzare ulteriormente, ecc.).

I miei pensieri sulla struttura dei file sono i seguenti:

/rawdata  # this is where all input data is located.
    /2009  # and the different datasets, collected by different teams
    /2010  # in different formats, in several different years. *sigh*
/docs  # probably needed for different documentations...
/XX  # for lack of a better name, where the extraction takes place.
    database.db  # common database for depositing extracted data.
    /2009
        step1.py
        step2.py
/manual_curation  # something to track how manual curation was performed.
/output  # contains code for generating the end product in a presentable manner (e.g. pdf-files, web-site, etc.).

Tutto questo è naturalmente contenuto in un repository git o SVN.

Per quanto riguarda il database, è mia impressione che ci siano molte relazioni, motivo per cui sto guardando un database SQLite. In precedenza ho utilizzato SQLite in diversi progetti. Sono anche esperto in programmazione in Python, tuttavia , strutturare i file ed eseguire le analisi in modo coerente non è qualcosa di cui posso vantarmi.

Qualunque consiglio ed esperienza in questo tipo di installazione sarebbe molto gradito!

(PS. Questo è un duplicato del mio link perché ho appena trovato questa comunità e ho pensato che potrebbe essere un posto più adatto per chiedere.)

    
posta MrGumble 15.07.2015 - 18:09
fonte

1 risposta

1

Vedo questo tipo di progetto come una pipeline di dati. Solitamente tendo a scrivere script individuali per gestire singoli passaggi (ad esempio, normalizzare il formato 2009, normalizzare il formato 2010, elaborare dati normalizzati, ecc.), Quindi coordinare questi passaggi con un sistema di compilazione.
Ho usato GNU Make in passato, ma recentemente ho usato Doit e mi piace molto.
Se i dati sono veramente grandi, potresti voler esaminare l'elaborazione su AWS, possibilmente con il prodotto datapipeline

    
risposta data 15.07.2015 - 22:03
fonte

Leggi altre domande sui tag