Automatizzare il nome degli array

di il
6 risposte

Automatizzare il nome degli array

Buongiorno a tutti. Ho fatto questo piccolo codice che carica un file csv, salva i dati per colonna su diversi array.

Ecco, poichè l'esempio contiene 4 colonne è gestibile. Ma il file originale contiene piu di 500 colonne.
Come fare ad automatizzare la parte all'interno dell'else???

L'idea ovviamente è fare un ciclo con il %f ma questo è un metodo solo per le stringhe mentre io dovrei modificare con un ciclo il nome dell'array. E' fattibile oppure devo scrivere 500 volte la stessa cosa simile???

Incollo il codice:

import csv
az_0=[]
az_1=[]
az_2=[]
az_3=[]
az_4=[]

with open('test_db.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=';')
line_count = 0


for row in csv_reader:
if line_count == 0:
print(f'Nomi delle colonne: {", ".join(row)}')
line_count += 1
else:
az_0.append(row[0])
az_1.append(row[1])
az_2.append(row[2])
az_3.append(row[3])
az_4.append(row[4])

6 Risposte

  • Re: Automatizzare il nome degli array

    Stai sbagliando TOTALMENTE approccio.

    Per manipolare file CSV in modo comodo, c'e' la libreria "pandas". COMUNQUE e' una libreria complicata, che richiede anche la conoscenza della libreria "numpy".

    Quindi al momento, l'utilizzo di liste e' preferibile.

    PERO' devi studiare di PIU', perche' un file CSV, caricato con la libreria "csv" di Python, e'

    una lista di liste di stringhe
  • Re: Automatizzare il nome degli array

    Ahhhhhh ok. Quindi salvo solo stringhe e non integer per cui poi è impossibile fare "calcoli".

    Si, devo studiare mooolto di più sono solo all'inizio.
    Grazie a tutti
  • Re: Automatizzare il nome degli array

    Per capire bene dove "sbaglio" sono andato avanti nella mia idea in modo da sbatterci la testa e capire bene e sopratutto imparare.
    Sembra funzionare, nel senso che ho convertito in float i valori della lista e ciò mi permette di fare calcoli (ho provato a fare nuova variabile come somma di due o più valori della lista e mi viene risultato corretto)
    RImane il problema che scriverne 5 va bene anceh se la scrittura del codice non è il massimo, ma scriverne 500 e gestirli è diverso.
  • Re: Automatizzare il nome degli array

    Lo sbaglio è proprio l'approccio che hai dato al problema.
    Se hai dei dati in forma tabellare devi pensare ad una matrice e non ad una serie di liste.
    Se i dati sono tutti numerici orientati sull'uso di numpy.
    Se i dati invece sono eterogenei ti tocca pandas.
  • Re: Automatizzare il nome degli array

    Ok ora ho capito bene. Con numpy quindi ho un approccio matriciale tipo R mentre con il mio vecchio approccio gestirei tantissimi array separati fra loro.
    Il mio db ha sulla prima colonna colonna le date mentre sulle altre colonne abbiamo dati esclusivamente di tipo float.
  • Re: Automatizzare il nome degli array

    @Superqwe attento a dare consigli sbagliati!
    Da nessuna parte c'e' scritto che non si possa usare una lista di liste di nuneri.
    numpy implementa in modo efficiente operazioni su tensori, MA se hai pochi dati e non devi fare cose complicate NON SERVE complicarsi la vita con librerie complesse.

    Non serve usare l'obice da 120 per sparare ad un passero. Basta la fionda

    @prem88, anche nel tuo case, attento ai paragoni sbagliati. L'oggetto per eccellenza di R e' il dataframe che corrisponde a pandas.
    Come Qualunque linguaggio di programmazione, anche R supporta vettori e le matrici. Ma il concetto di tensore lo trovi in Matlab e IDL
Devi accedere o registrarti per scrivere nel forum
6 risposte