Leistungsunterschied in pandas read_table vs. read_csv vs. from_csv vs. read_excel?

8

Ich tendiere dazu, .csv-Dateien in Pandas zu importieren, aber manchmal kann ich Daten in anderen Formaten erhalten, um DataFrame -Objekte zu erstellen.

Heute habe ich gerade von read_table als "generischem" Importeur für andere Formate erfahren und frage mich, ob es signifikante Leistungsunterschiede zwischen den verschiedenen Methoden in Pandas zum Lesen von .csv-Dateien gibt, z. read_table , from_csv , read_excel .

  1. Haben diese anderen Methoden eine bessere Leistung als read_csv ?
  2. Ist read_csv sehr verschieden von from_csv für die Erstellung von DataFrame ?
pylang 11.07.2015, 22:43
quelle

2 Antworten

19
  1. read_table ist read_csv mit sep=',' ersetzt durch sep='\t' , sie sind zwei dünne Wrapper um die gleiche Funktion, so dass die Leistung identisch ist. read_excel verwendet das Paket xlrd , um xls- und xlsx-Dateien in einen DataFrame zu lesen. Es verarbeitet keine csv-Dateien.
  2. from_csv ruft read_table auf, also nein.
Daniel Boline 11.07.2015, 23:49
quelle
4
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123performance ___ Für Fragen zur Messung oder Verbesserung der Code- und Anwendungseffizienz. ___ tag123csv ___ Comma-Separated Values ​​oder Character-Separated Values ​​(CSV) ist ein standardmäßiges "Flat File Database" -Format zum Speichern tabellarischer Daten im Klartext, das aus einer optionalen Kopfzeile besteht, in der die durch Kommas, Tabulatoren oder andere Felder abgegrenzten Tabellenfelder aufgeführt sind Trennzeichen, gefolgt von einer oder mehreren Zeilen (durch Zeilentrennung getrennt), die die Tabellensätze als getrennte Listen der Werte darstellen. Newlines und Trennzeichen können in (zitierten) Feldern erscheinen. ___ antwort43903727 ___

Ich habe festgestellt, dass CSV und tabulatorgetrennter Text (.txt) in Lese- und Schreibgeschwindigkeit gleichwertig sind, beide sind viel schneller als das Lesen und Schreiben von MS Excel-Dateien. Excel-Format komprimiert jedoch die Dateigröße sehr.

Für dieselbe 320-MB-CSV-Datei (16 MB .xlsx) (i7-7700k, SSD, läuft Anaconda Python 3.5.3, Pandas 0.19.2)

Verwenden Sie die Standardkonvention import pandas as pd

2 Sekunden zum Lesen von .csv df = pd.read_csv('foo.csv') (gleich für pd.read_table)

15,3 Sekunden zum Lesen von .xlsx df = pd.read_excel('foo.xlsx')

10,5 Sekunden, um .csv df.to_csv('bar.csv', index=False) zu schreiben (gleich für .txt)

34,5 Sekunden, um .xlsx df.to_excel('bar.xlsx', sheet_name='Sheet1', index=False)

zu schreiben

Sie können Ihre Datenrahmen in tabstoppgetrennte Textdateien schreiben:

df.to_csv('bar.txt', sep='\t', index=False)

    
___ answer31362987 ___
  1. %code% ist %code% mit %code% ersetzt durch %code% , sie sind zwei dünne Wrapper um die gleiche Funktion, so dass die Leistung identisch ist. %code% verwendet das Paket %code% , um xls- und xlsx-Dateien in einen DataFrame zu lesen. Es verarbeitet keine csv-Dateien.
  2. %code% ruft %code% auf, also nein.
___ tag123pandas ___ Pandas ist eine Python-Bibliothek für die Manipulation und Analyse von Panel-Daten, z. multidimensionale Zeitreihen- und Querschnittsdatensätze, die häufig in Statistiken, experimentellen wissenschaftlichen Ergebnissen, Ökonometrie oder Finanzen zu finden sind. WICHTIG: Wenn Sie eine Frage mit diesem Tag stellen, markieren Sie bitte Ihre Fragen (in dieser Reihenfolge): [tag: python]; [tag: pandas]; [Etikett: Datenrahmen] / [Etikett: Serie]; (optional) [tag: groupby] / [tag: merge] / etc., abhängig von Ihren spezifischen Anforderungen. ___ qstnhdr ___ Leistungsunterschied in pandas read_table vs. read_csv vs. from_csv vs. read_excel? ___ tag123dataframe ___ Ein Datenrahmen ist eine tabellarische Datenstruktur. Normalerweise enthält es Daten, bei denen Zeilen Beobachtungen und Spalten verschiedene Variablen sind. Während "data frame" oder "dataframe" für dieses Konzept in mehreren Sprachen verwendet wird (R, Apache Spark, deedle, Maple, die Pandas-Bibliothek in Python und die DataFrames-Bibliothek in Julia), ist "Tabelle" der in MATLAB und SQL. ___ qstntxt ___

Ich tendiere dazu, .csv-Dateien in Pandas zu importieren, aber manchmal kann ich Daten in anderen Formaten erhalten, um %code% -Objekte zu erstellen.

Heute habe ich gerade von %code% als "generischem" Importeur für andere Formate erfahren und frage mich, ob es signifikante Leistungsunterschiede zwischen den verschiedenen Methoden in Pandas zum Lesen von .csv-Dateien gibt, z. %code% , %code% , %code% .

  1. Haben diese anderen Methoden eine bessere Leistung als %code% ?
  2. Ist %code% sehr verschieden von %code% für die Erstellung von %code% ?
___
griffinc 10.05.2017 22:33
quelle