Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环浏览多个CSV文件并生成多个输出_Python_Loops_Csv_Dataframe_Jupyter Notebook - Fatal编程技术网

Python 循环浏览多个CSV文件并生成多个输出

Python 循环浏览多个CSV文件并生成多个输出,python,loops,csv,dataframe,jupyter-notebook,Python,Loops,Csv,Dataframe,Jupyter Notebook,我正在编写一些python脚本,它打开一个.csv文件,定义数据框架,运行一些分析(例如,聚合数据、拆分列、查找平均值等),并将分析的输出绘制在图形上。输出将是一个图形(.png文件)和一个csv文件,在原始文件名的末尾添加了单词“_ANALYSIS” 我在Jupyter笔记本中将其设置为循环函数: #import multiple csv files import glob import pandas as pd import numpy as np from pytz import all

我正在编写一些python脚本,它打开一个.csv文件,定义数据框架,运行一些分析(例如,聚合数据、拆分列、查找平均值等),并将分析的输出绘制在图形上。输出将是一个图形(.png文件)和一个csv文件,在原始文件名的末尾添加了单词“_ANALYSIS”

我在Jupyter笔记本中将其设置为循环函数:

#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

使用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)

df.to_csv
的文件名是一个静态字符串,因此每次循环后它都会被覆盖。
plt.savefig('*.pnmg')也是如此
非常感谢!这个能放在最上面吗?我猜第四行
df.fillna(0,inplace=True)
将放在
#图形分析的一些输出之后
…它将替换您的循环。还有,
df.fillna
替换行
df.replace(0,np.nan)
太好了!快速问题:
Path(folder)
是否会被替换为
“C:\Users\Renaldo.Moonu\Desktop\folder name”
?啊,你应该首先声明变量
folder=“C:\Users\Renaldo.Moonu\Desktop\folder name”
,所以它看起来像这样:
folder=“C:\Users\Renaldo.Moonu\Desktop\SSP3\SomeFolder”作为Path(folder).glob)中的文件('*.csv'):