Циклический просмотр нескольких файлов CSV и создание нескольких выходов - PullRequest
0 голосов
/ 06 ноября 2018

Я пишу некоторый скрипт на python, который открывает файл .csv, определяет фрейм данных, запускает некоторый анализ (например, агрегирует данные, разбивает столбцы, находит средние значения и т. Д.) И отображает результаты анализа на графике. Выходными данными будут как график (файл .png), так и файл csv со словом «_ANALYSIS», добавленным к исходному имени файла в конце.

В Jupyter Notebook я настроил это как функцию цикла:

#import multiple csv files

import glob
import pandas as pd
import numpy as np
from pytz import all_timezones
import matplotlib.pyplot as plt

files = glob.glob('folder/*.csv')
for file in files:
    df = pd.read_csv(file)

    #START OF THE ANALYSIS
    #Multiple lines of code starts here


    #GRAPH some outputs from the analysis
    df2 = df.replace(0, np.nan)
    fig, ax = plt.subplots()
    df2.groupby('Day_type').plot(x = 'Time', y = 'avg_vt', ax=ax, grid=True)


    #OUTPUT FILES: graph + csv file
    plt.savefig('*.png', index = False)
    file_name="file"+str(i+1)+"_ANALYSIS"
    df.to_csv('file1_ANALYSIS.csv', index = False)

К сожалению, он не производит никаких выходных данных. Нет проблем с самим кодом анализа, так как я пробовал его до добавления функции цикла.

Спасибо, R

1 Ответ

0 голосов
/ 06 ноября 2018

немного элегантнее с pathlib

from pathlib import Path

folder="C:\Users\Renaldo.Moonu\Desktop\folder name"
for file in Path(folder).glob('*.csv'):
    df = pd.read_csv(file)
    df.fillna(0, inplace=True)
    fig, ax = plt.subplots()
    df.groupby('Day_type').plot(x = 'Time', y = 'avg_vt', ax=ax, grid=True)

    plt.savefig(file.with_suffix('.png'), index = False)
    df.to_csv(file.with_suffix('.csv'), index = False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...