我正在尝试挖掘我的计算机并在一个图上绘制一堆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
答案 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)])