Closed dennisangemi closed 2 years ago
Caro @dennisangemi , per queste cose uso Miller:
# salta le prime tre righe
<Enna.csv tail -n +3 | \
# estrai ciò che non contiene "Totale" in Età (-x restituisce tutto ciò che non soddisfa il filtro)
mlr --csv filter -x '$Età=="Totale"'
Ho però la sensazione che ci hai provato. Su cosa hai sbattuto?
@dennisangemi facendo una rapida analisi del file, penso ti possa bastare la riga di comando e filtrare tutto ciò che non contiene ,Tota
<Enna.csv grep -v ',Tota'
O cancellare ciò che lo contiene
<Enna.csv sed '/,Tota/d'
Alternativa con pandas:
import pandas as pd
df = pd.read_csv('Enna.csv', header=2)
df2 = df.drop(df[df['Età'] == "Totale"].index)
df2.to_csv('Enna_clean.csv', index=False)
n.b. con header=2 si saltano le prime 2 righe del csv, non so se possono servirti!
Alternativa con VisiData
# salta le prime tre righe e apri file con VisiData
<Enna.csv tail -n +3 | vd -f csv
all'interno di VisiData:
Eta
usando i tasti freccia;|
Tota
e pigia invio (hai selezionato tutte le righe che contengono, in Eta, un testo Tota)g
e poi d
per eliminare le righe selezionatectrl +s
per salvareper queste cose uso Miller: Ho però la sensazione che ci hai provato. Su cosa hai sbattuto?
carissimo @aborruso, non riuscivo (e non riesco) a selezionare la colonna "Età", per colpa della "à" (?). Miller mi restituisce questo errore
mlr: cannot parse DSL expression.
Parse error on token "à" at line 1 columnn 4.
Please check for missing semicolon.
Expected one of:
$ ; { = > >> | ||= ^^= &&= ??= ???= |= &= ^= <<= >>= >>>= += .= -= *= /=
//= %= **= ? || ^^ && ?? ??? =~ !=~ == != <=> >= < <= ^ & << >>> + - .+
.- * / // % .* ./ .// . ** [ [[ [[[
Credo di avere un problema di encoding anche se chardet
mi resitituisce utf-8 with confidence 0.9690625
.
Per quanto riguarda la seconda soluzione che mi hai suggerito
<Enna.csv grep -v ',Tota'
è bellissima ma purtroppo elimina anche l'header (perchè contiene "Totale"). Dovrei salvarlo su un file temporaneo e poi fare il merging.
Grazie mille anche a @pigreco e @gabacode ; info preziossisime che inserirò nella ricetta. Tuttavia utilizzerò versione bash, non solo per far contento @aborruso, ma anche perchè il "passaggio che mi manca" è parte di uno script bash abbastanza corposo che condividerò non appena finirò ;)
è bellissima ma purtroppo elimina anche l'header (perchè contiene "Totale"). Dovrei salvarlo su un file temporaneo e poi fare il merging.
Iniziamo da qui: la prima riga contiene ,Tota
? Ne sei certo? E soprattutto l'hai provato?
Io ho scaricato il file che hai indicato, l'ho estratto e non ho alcun problema.
Che versione di Miller hai (mlr --version
)?
Sorvolando alcune sviste (mie) in relazione al file che ho indicato, la carta vincente è stata lanciare
<Enna.csv grep -v ',Totale,'
Grazie @aborruso
Ricetta scritta qui https://github.com/opendatasicilia/tansignari-md/commit/b21d33c2acd93ebb7cfc383818da6376f8ffdf9e
https://tansignari.opendatasicilia.it/ricette/csv-tsv/rimuovere_totale/
Scusate se è poco approfondita ma vado di fretta. Fell free to modify
Grazie @gabacode @pigreco @aborruso <3
Sera! Mi sono imbattuto in un file CSV (popolazione residente di ISTAT) che contiene delle righe con il "Totale"; come faccio a rimuoverle? Thx