Pandas Lesen csv-out of memory

Ich versuche, Sie zu manipulieren, eine große CSV-Datei mit den Pandas, wenn ich dies schrieb,

df = pd.read_csv(strFileName,sep='\t',delimiter='\t')

wirft er "pandas.parser.CParserError: Fehler tokenisierung von Daten. C error: out of memory"
wc -l gibt es 13822117 Zeilen, ich brauche die Summe auf das csv-Datei-Daten-frame, gibt es eine Möglichkeit, um dieses andere dann teilen Sie die csv-Datei auf mehrere Dateien und schreiben-codes Zusammenführen der Ergebnisse? Irgendwelche Vorschläge, wie das zu tun? Dank

Die Eingabe ist wie folgt:

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

Und die gewünschte Ausgabe wie diese:

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

wenn der Datensatz klein ist, wird der folgende code verwendet werden könnte, wie es von der anderen

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

(definition von Fehler Datensatz: wenn kb_1!=kb_2,wird der entsprechende Datensatz wird behandelt, als anormale Datensatz)

  • Keine Notwendigkeit, geben Sie delimiter seit sep ist bereits vorhanden. Auch pd.read_table() übernimmt sep='\t', so konnte man nur aufrufen, dass anstelle der pd.read_csv().
InformationsquelleAutor sunxd | 2015-05-14
Schreibe einen Kommentar