我对python3不是很有经验,因为我还在学习所以如果我的要求非常明显,我会提前道歉。 所以我有两个文件(.xlsx和.csv),其中一些数据列在不同的DataFrame中。
exp=pd.read_excel('filepath/something.xlsx', keep_default_na=False)
sim=pd.read_csv('filepath/something.csv', keep_default_na=False)
看起来像这样:
print(exp.dataframe_from_exp1)
0 2.2
1 1.0
2 2.0
3 2.7
4 3.5
5 1.3
6 2.2
7 3.0
8 2.1
9 1.7
10 2.5
Name: dataframe_from_exp1, dtype: float64
print(sim[[dataframe_from_sim1]])
dataframe_from_sim1
0 2.1
1 1.3
2 2.4
3 2.9
4 2.4
5 2.8
6 2.8
7 3.6
8 2.2
9 2.7
10 2.5
然后我使用他们的名字将它们安排在字典中:
comparison = {}
comparison['dataframe_from_sim1'] = 'dataframe_from_exp1'
comparison['dataframe_from_sim2'] = 'dataframe_from_exp2'
等等。然后,我想要的是在双条图中绘制每个dataframe_from_sim及其对应的dataframe_from_exp,这样我就可以比较给定的11个案例中每个变量的值,并在for
循环中进行。像这样:
N=11
x = np.arange(N)
width = 0.35
for key, value in comparison.items():
fig, ax = plt.subplots()
bar1=ax.bar(x, key, width, color='r')
bar2=ax.bar(x + width, value, width, color='b')
plt.show()
但是,当然,这不起作用。所以,如果你能帮助我,我会非常感激!
答案 0 :(得分:0)
如果您试图并排查看这些值,则以下内容将起作用:
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure()
exp = pd.read_excel('filepath/something.xlsx', keep_default_na=False)
sim = pd.read_csv('filepath/something.csv', keep_default_na=False)
exp.plot.bar(color='red', ax=fig.gca(), position=0, width=0.3)
sim.plot.bar(color='blue', ax=fig.gca(), position=1, width=0.3)
plt.show()
给你:
这可以扩展为在多对文件上工作,如下所示:
import matplotlib.pyplot as plt
import pandas as pd
import glob
for xlsx_filename in glob.glob('*.xlsx'):
name, ext = os.path.splitext(xlsx_filename)
csv_filename = '{}.csv'.format(name)
if os.path.exists(csv_filename):
exp = pd.read_csv(csv_filename, keep_default_na=False)
sim = pd.read_excel(xlsx_filename, keep_default_na=False)
fig = plt.figure(name)
exp.plot.bar(color='red', ax=fig.gca(), position=0, width=0.3)
sim.plot.bar(color='blue', ax=fig.gca(), position=1, width=0.3)
plt.title(name)
plt.show()
这会搜索.xlsx
和.csv
个文件名对。只处理具有匹配对的文件。