python - 循环遍历多个 CSV 文件并生成多个输出
问题描述
我正在编写一些 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
解决方案
使用 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)
推荐阅读
- java - 如何使用 json 使用 Firebase 中的视频链接
- google-bigquery - 获取多个日期表的 BQ 元数据
- android - 在 TextView 下动态添加按钮
- python - win32com:通过在后台打开 excel 文件来处理它
- php - PHP 不使用 XAMPP (Windows) 执行
- android - 如何获得三个 TextView 值?
- python-3.x - 是否可以根据实际上是单词数组的列中的文本对数据框进行排序?
- python-3.x - 如何使用 Python 查找 Dynamo 数据库数据
- python-pptx - 如何在python中更新pptx文件中的数据
- angular - 使用 AuthGuard 的不同角色的多个 /Dashboard 路由