我有一个包含多个CSV文件的文件夹。每个文件都有3列('真实','用户' sys')每列在行中有10个时间值(浮点数)。我的目标是从文件夹中读取这些csv文件并制作一个box-whisker图来比较每个csv文件的值。我编写了以下python代码,它给了我多个(等于文件数)单独的图形。通过从循环中删除plt.show(),只显示最后一个图形。
我希望将这些图形合并到一个图形中,并将每个文件名称作为定义哪个盒须用于哪个文件的标签。请帮助。
import csv
import numpy as np
import pandas
import matplotlib.pyplot as plt
import glob
files = glob.glob ('/Users/Desktop/sample/*.csv')
print files
for file in files:
df = pandas.read_csv(file, sep=',')
LABELS = ["real", "user", "sys"]
plt.title('Time Taken by Classifier')
plt.xlabel('Time_Types')
plt.ylabel('Time_Value in (sec)')
df.boxplot()
plt.show()
答案 0 :(得分:0)
你可能想尝试这些方面:
import pandas as pd
data = pd.DataFrame()
for file in files:
df = pandas.read_csv(file, sep=',')
df['file'] = file
data = pd.concat([data, df])
LABELS = ["real", "user", "sys"]
plt.title('Time Taken by Classifier')
plt.xlabel('Time_Types')
plt.ylabel('Time_Value in (sec)')
data.boxplot(by='file')
plt.show()
请参阅pd.DataFrame.boxplot()
docs和underlying matplotlib implementation了解如何使用关键字args修改布局。