在Phyton中导入和分析多个CSV文件

2024-05-28 22:48:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在分析Python3.7中的几个CSV文件时有点麻烦。 我将这些文件放在文件夹中,并通过“filedialog.askopenfilename(multiple=True)”指定其路径

此时,我启动了for循环来分析循环中所需的文件,这是脚本的目标。 我能看到的是,这个脚本确实获取了所有的N个文件,但它只对最后一个文件执行了操作。另外,我不想将所有文件连接到DF中:代码在每个文件上都能很好地工作,我只想让执行速度加快,使其只运行一次,而不是十次左右

代码如下:

import csv
import numpy as np
from pylinac.core.profile import SingleProfile
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'auto')
import matplotlib.pyplot as plt
from scipy import interpolate
import matplotlib.patches as patches
import pandas as pd

root = tk.Tk()
root.lift()
root.focus_force()
root.wm_attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',True)
root.withdraw()

read_files = filedialog.askopenfilename(multiple=True)

#csv selection

for files in read_files:
    print(files)
    ascii_files = os.path.basename(files)
    split_filenames = ascii_files.split(".", 1)
    field = split_filenames[0]
    with open(files, newline='') as f:
            reader = csv.reader(f)
            list_import = list(reader)

#here start CSV postprocessing ...
#delete the first two rows of cvs file

    del list_import[0]
    del list_import[0]

df = pd.DataFrame(list_import)
first_column=df.columns[0]
df=df.drop([first_column], axis=1)
unif_map=df.to_numpy(dtype=float) 
# analysis continue...

它正在处理所有文件,因为当我要求用print(文件)打印这些文件时,它会打印出文件夹中的所有csv文件名:

C:/trial/depth 23 distal.csv
C:/trial/depth 24 distal.csv
C:/trial/depth 25 distal.csv
C:/trial/depth 26 distal.csv
C:/trial/depth 27 distal.csv
C:/trial/depth 28 distal.csv
C:/trial/depth 29 distal.csv
C:/trial/depth 30 distal.csv
C:/trial/depth 31 distal.csv

但我猜它只分析最后一个文件,实际上它只显示与最后一个文件相关的数字(C:/trial/depth 31 Distactive.csv),当我要求打印分析的csv名称时,我得到了“depth 31 Distactive”,实际上我没有其他文件的输出。 可能我在for循环中遗漏了一些东西,但我无法确定在哪里

非常感谢那些想要帮助的人

安德烈


Tags: 文件csvfromimporttruedfformatplotlib

热门问题