cerco di manipolare un grande file CSV utilizzando Panda, quando ho scritto questoPandas leggere csv dalla memoria
df = pd.read_csv(strFileName,sep='\t',delimiter='\t')
solleva "pandas.parser.CParserError:. Dati creazione di token errore Errore C: out of memory " wc -l indica che ci sono 13822117 linee, ho bisogno di aggregare su questo frame di dati del file csv, c'è un modo per gestire quest'altro, quindi dividere il csv in diversi file e scrivere codici per unire i risultati? Qualche suggerimento su come farlo? Grazie
L'ingresso è così:
columns=[ka,kb_1,kb_2,timeofEvent,timeInterval]
0:'3M' '2345' '2345' '2014-10-5',3000
1:'3M' '2958' '2152' '2015-3-22',5000
2:'GE' '2183' '2183' '2012-12-31',515
3:'3M' '2958' '2958' '2015-3-10',395
4:'GE' '2183' '2285' '2015-4-19',1925
5:'GE' '2598' '2598' '2015-3-17',1915
E l'uscita desiderata è così:
columns=[ka,kb,errorNum,errorRate,totalNum of records]
'3M','2345',0,0%,1
'3M','2958',1,50%,2
'GE','2183',1,50%,2
'GE','2598',0,0%,1
se il set di dati è piccolo, il codice di seguito potrebbe essere utilizzato come fornito da un'altra
df2 = df.groupby(['ka','kb_1'])['isError'].agg({ 'errorNum': 'sum',
'recordNum': 'count' })
df2['errorRate'] = df2['errorNum']/df2['recordNum']
ka kb_1 recordNum errorNum errorRate
3M 2345 1 0 0.0
2958 2 1 0.5
GE 2183 2 1 0.5
2598 1 0 0.0
(definizione di Record errore: quando kb_1 = kb_2, il record corrispondente viene trattata come abnor mal record)
Non è necessario specificare 'delimitatore' poiché' sep' è già fornito. Inoltre, 'pd.read_table()' assume 'sep = '\ t'', quindi puoi chiamarlo invece di' pd.read_csv() '. – chrisaycock