绘制埋在不同目录中的CSV

时间:2017-02-08 02:36:59

标签: python pandas

我正在尝试挖掘我的计算机并在一个图上绘制一堆CSV(我正在使用Python 2.7和Pandas)。

虽然所有CSV文件都具有相同的file.csv名称,但它们位于无数不同的文件夹中。我在下面完成了以下操作,我将CSV包装到数据帧中,然后从特定值范围绘制数据帧。

我想将每个图标记为文件夹名称(即图例指定CSV所在的文件夹目录)

import pandas as pd
from pandas import read_csv
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
import os


class do(object):


   def something(self):

     style.use('ggplot')

     file_1 = r'C:\User\me\PathABC\Folder123\file.csv'
     file_2 = r'C:\User\me\PathABC\Folder456\file.csv'
     file_3 = r'C:\User\me\PathABC\Folder789\file.csv'
     file_4 = r'C:\User\me\PathABC\Folder101112\file.csv'




     df1 = pd.read_csv(file_1,header=None)
     df2 = pd.read_csv(file_2,header=None)
     df3 = pd.read_csv(file_3,header=None)
     df4 = pd.read_csv(file_4,header=None)


     plt.plot(df1[0],df1[1],label='Folder123')
     plt.plot(df2[0],df2[1],label='Folder456')
     plt.plot(df3[0],df3[1],label='Folder789')
     plt.plot(df4[0],df4[1],label='Folder101112')


     plt.xlim([200000,800000])

     plt.legend()
     plt.ylabel('Amplitude')
     plt.xlabel('Hz')

     plt.grid(True,color='k')

     plt.show()


  x=do()
  x.something()
基本上,我想自动化这个过程,以便我可以使用以下逻辑解析我的计算机:

where file.csv exists, plot it
label plot with folder name of where file.csv came from

2 个答案:

答案 0 :(得分:1)

走一条文件路径是一个答案,但是你可以在更简单的情况下使用glob.glob,其中目标文件夹在文件系统中都处于相同的深度。例如,

for filename in glob.glob('somewhere/sheets/*/file.csv')

将遍历file.csv的任何子文件夹中名为somewhere/sheets的所有文件。如果它们都是两个级别,glob.glob('somewhere/sheets/*/*/file.csv')将起作用,如果它们都是一个或两个级别,则可以加入两个glob次调用的列表。

答案 1 :(得分:0)

通过@pycruft查看How to list all files of a directory?并由@Martin Thoma编辑。我会使用walk来获取特定路径中几个文件夹中存在的所有csv文件的完整路径,如下所示:

from os import walk
from os.path import join,splitext
f = []
for (dirpath, dirnames, filenames) in walk(specific_path):
    for filename in filenames:
        if splitext(filename)[1].upper() == '.CSV':
            f.extend([join(dirpath,filename)])