Создать класс, который создает словарь из чтения в нескольких файлах CSV - Python - PullRequest
1 голос
/ 08 октября 2019

У меня есть 24 CSV-файла, которые в настоящее время находятся в каталоге папки. Цель состоит в том, чтобы прочитать все файлы CSV и сохранить их как отдельные кадры данных pandas. По просьбе моего клиента они хотят, чтобы весь наш код был в объектно-ориентированном программировании. Я новичок в ООП, и я был бы признателен за любую помощь.

В настоящее время я пытаюсь создать класс, который будет читать в моих файлах и сохранять их в виде словаря через цикл for. С ключом, являющимся именем файла, а значением, являющимся фреймом данных pandas

, у меня уже есть список путей к файлам, хранящихся в переменной с именем fns

Это то, что у меня есть для кодадо сих пор я пытаюсь выяснить логику цикла, чтобы мне не приходилось каждый раз вызывать новый экземпляр класса.

fns = glob.glob(path + "*.csv")
enc = 'ISO-8859-1'

# create class

class MyFile:

    def __init__(self, file_path):
        self.file = file_path

    def ParseName(self):
        self.name_me = self.file.split('\\')[-1].strip('.csv')

    def Read_CSV(self):
        self.data_csv = pd.read_csv(self.file,delimiter='\t',
                                    low_memory=False, encoding= enc)

Моя цель - получить словарь, подобный этому:

{'filename1': DataFrame, 'filename2': DataFrame, .... 'filename24': DataFrame}

Я ценю всю помощь!

1 Ответ

1 голос
/ 08 октября 2019

Пример объектно-ориентированного CsvStorage:

import glob
import pandas as pd
from os.path import basename

class CsvStorage:

    _dfs = {}

    def __init__(self, path):
        for f in glob.glob(path):
            self._dfs[basename(f)] = pd.read_csv(f, encoding='ISO-8859-1')

    def get_dataframes(self):
        if not self._dfs:
            raise ValueError('No dataframes. Load data first')

        return self._dfs

files_path = '*/FILE_*.csv'   # adjust to your actual path pattern
csv_store = CsvStorage(files_path)
dfs = csv_store.get_dataframes()

print(dfs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...