Le fichier csv peut être divisé par heure ou par attribut, je l'ai donc implémenté pour que ces fichiers puissent être lus sur une seule ligne. Les fonctions souhaitées sont les suivantes. -Lisez tous les fichiers csv dans le dossier. -Il est également possible de cibler uniquement les fichiers csv contenant des caractères spécifiés. -Autoriser les répertoires subordonnés à inclure.
・ Windows10 64 bits ・ Python 3.8.3 ・ Pandas 0.25.3 ・ Seaborn 0.11.0
Divisez les données d'iris (150 éléments) en 4 et enregistrez-les en tant que fichier csv (dossier «principal» directement sous le lecteur E). Enregistrez également le même fichier dans le dossier «sous» du dossier «principal».
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)
En conséquence, je l'ai implémenté avec la fonction suivante.
import glob
import pandas as pd
def read_csv(path, encode, sub_check=False, target_name=None):
#Obtenez le chemin de tous les fichiers csv dans le dossier avec la liste
#sub_check=Si True, cible les sous-dossiers
target_files = glob.glob(path+r'\**\*.csv', recursive=True) if sub_check else glob.glob(path+r'\*.csv')
#Pour stocker des fichiers après la fusion
merged_file = pd.DataFrame()
#Combinez tous les fichiers csv cibles
for filepath in target_files:
#Si le nom de fichier ne contient pas les caractères spécifiés, il sera exclu.
filename = filepath.split('\\')[-1]
if target_name!=None and target_name not in filename: continue
#Lire un fichier csv
input_file = pd.read_csv(filepath, encoding=encode, sep=",", engine='python')
#Combinez un fichier csv dans le fichier csv précédemment lu
merged_file = pd.concat([merged_file, input_file], axis=0)
#Réinitialiser l'index du DataFrame après avoir rejoint
merged_file = merged_file.reset_index(drop=True)
return merged_file
Tous les fichiers csv (150 éléments) dans un dossier peuvent être lus.
Lorsque "1" était spécifié pour nom_cible, les fichiers csv (38 cas) contenant "1" dans le nom pouvaient être lus.
Si sub_check = True, tous les fichiers csv (300 éléments), y compris le dossier «sous» dans le répertoire inférieur, peuvent être lus.
Merci pour la navigation.
Recommended Posts