Die CSV-Datei kann nach Zeit oder Attribut unterteilt sein, daher habe ich sie implementiert, damit diese Dateien in einer Zeile gelesen werden können. Die gewünschten Funktionen sind wie folgt. -Lesen Sie alle CSV-Dateien im Ordner. -Es ist auch möglich, nur CSV-Dateien mit bestimmten Zeichen als Ziel festzulegen.
・ Windows10 64bit ・ Python 3.8.3 ・ Pandas 0.25.3 ・ Seaborn 0.11.0
Teilen Sie die Irisdaten (150 Elemente) in 4 und speichern Sie sie als CSV-Datei ("Haupt" -Ordner direkt unter dem E-Laufwerk). Speichern Sie dieselbe Datei auch im Ordner "sub" im Ordner "main".
import seaborn as sns
data = sns.load_dataset('iris')
import os
os.makedirs(r'E:\main', exist_ok=True)
for i in range(4):
st = int(0 if i==0 else (len(data)/4)*i)
en = int((len(data)/4)*(i+1))
data.iloc[st:en].to_csv(r'E:\main\iris{}.csv'.format(i), encoding='cp932', index=False)
os.makedirs(r'E:\main\sub', exist_ok=True)
for i in range(4):
st = int(0 if i==0 else (len(data)/4)*i)
en = int((len(data)/4)*(i+1))
data.iloc[st:en].to_csv(r'E:\main\sub\iris{}.csv'.format(i+4), encoding='cp932', index=False)
Als Ergebnis habe ich es mit der folgenden Funktion implementiert.
import glob
import pandas as pd
def read_csv(path, encode, sub_check=False, target_name=None):
#Rufen Sie den Pfad aller CSV-Dateien im Ordner mit der Liste ab
#sub_check=Wenn True, Zielunterordner
target_files = glob.glob(path+r'\**\*.csv', recursive=True) if sub_check else glob.glob(path+r'\*.csv')
#Zum Speichern von Dateien nach dem Zusammenführen
merged_file = pd.DataFrame()
#Kombinieren Sie alle Ziel-CSV-Dateien
for filepath in target_files:
#Wenn der Dateiname nicht die angegebenen Zeichen enthält, wird er ausgeschlossen.
filename = filepath.split('\\')[-1]
if target_name!=None and target_name not in filename: continue
#Lesen Sie eine CSV-Datei
input_file = pd.read_csv(filepath, encoding=encode, sep=",", engine='python')
#Kombinieren Sie eine CSV-Datei mit der zuvor gelesenen CSV-Datei
merged_file = pd.concat([merged_file, input_file], axis=0)
#Setzen Sie den Index des DataFrame nach dem Beitritt zurück
merged_file = merged_file.reset_index(drop=True)
return merged_file
Alle CSV-Dateien (150 Elemente) in einem Ordner konnten gelesen werden.
Wenn für target_name "1" angegeben wurde, konnten CSV-Dateien (38 Fälle) gelesen werden, deren Name "1" enthält.
Wenn sub_check = True, können alle CSV-Dateien (300 Elemente) einschließlich des Ordners "sub" im unteren Verzeichnis gelesen werden.
Vielen Dank für das Surfen.
Recommended Posts