簡體   English   中英

導入並分析 Phyton 中的多個 CSV 文件

[英]Import and analyze multiple CSV files in Phyton

我在分析 Python 3.7 中的幾個 CSV 文件時有點麻煩。 我將這些文件放在一個文件夾中,並通過“filedialog.askopenfilename(multiple=True)”指定其路徑。

此時我啟動了一個for循環來分析循環中需要的文件,這就是腳本的目標。 我可以看到,該腳本確實占用了所有 N 個文件,但它只對最后一個文件執行了操作。 另外,我不想將所有文件與 Pandas 連接到 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(files) 打印它們時,它會打印出文件夾中的所有 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 31distal.csv),當我要求打印分析的 CSV 的名稱時,我得到“深度 31 遠端",確實我沒有其他文件的 output 。 可能我在 for 循環中遺漏了一些東西,但我無法弄清楚在哪里。

非常感謝那些願意提供幫助的人!

安德烈亞

顯然,您需要將所有內容都放入循環中。 這里發生的是您 go 遍歷所有文件,並且循環僅保留您的list_import最新記錄,該記錄進入 dataframe 創建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM