Ich möchte mehrere CSV-Dateien (Hunderte von Dateien, Hunderte von Zeilen jeder, aber mit der gleichen Anzahl von Spalten) aus einem Zielverzeichnis in einem einzigen Python Pandas DataFrame lesen.Beschleunigen Sie den Prozess des Importierens mehrerer CSV in Python Dataframe
Der Code unter ich schrieb funktioniert aber zu langsam.Es dauert Minuten, um 30 Dateien auszuführen (wie lange sollte ich warten, wenn ich alle meine Dateien laden). Was kann ich ändern, damit es schneller funktioniert?
Außerdem, in replace
Funktion, ich möchte ein "_" (weiß nicht die Codierung, aber nicht eine normale) zu einem "-" (normale utf-8), wie kann ich damit tun ? Ich benutze coding=latin-1
, weil ich französische Akzente in den Dateien habe.
#coding=latin-1
import pandas as pd
import glob
pd.set_option('expand_frame_repr', False)
path = r'D:\Python27\mypfe\data_test'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_, index_col = None, header = 0, sep = ';', dayfirst = True,
parse_dates=['HeurePrevue','HeureDebutTrajet','HeureArriveeSurSite','HeureEffective'])
df.drop(labels=['aPaye','MethodePaiement','ArgentPercu'],axis=1,inplace=True)
df['Sens'].replace("\n", "-", inplace=True,regex=True)
list_.append(df)
print "fichier lu:",file_
frame = pd.concat(list_)
print frame
Können Sie einfach alle Dateien miteinander verketten, bevor Sie jemals zu Python kommen? Auf diese Weise wird nur eine Datei gelesen? Eine Alternative wäre, die Dateien zusammen zu zippen, was Ihnen einen wahlfreien Zugriff mit den Vorteilen des Dateicaches des Betriebssystems ermöglicht. – chrisaycock
Ich verstehe nicht wirklich, wie man verkettet, bevor man zu Python kommt. Um alle Dateien in eine CSV-Datei zu machen? Und für 'zip', in welchem Schritt? – ch36r5s
Ja, erstellen Sie eine große CSV-Datei oder erstellen Sie eine ZIP-Datei. Diese haben nichts mit Python zu tun; Sie müssen dies extern zu Python tun. Sobald Sie eine Datei mit allen Daten haben, lassen Sie Ihr Python-Skript diese Datei direkt lesen. – chrisaycock