Вот полный рабочий пример того, чего вы хотите достичь:
import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
df_1 = pd.DataFrame({'2010':[10,11,12,13],'2011':[14,18,14,15],'2012':[12,13,14,13]})
df_2 = pd.DataFrame({'2010':[10,11,12,13],'2011':[14,18,14,15],'2012':[12,13,14,13]})
df_3 = pd.DataFrame({'2010':[10,11,12,13],'2011':[14,18,14,15],'2012':[12,13,14,13]})
list_df = [df_1,df_2,df_3]
for i in range(len(list_df)):
ax = plt.subplot(len(list_df[i]),len(list(list_df[i])),i+1)
for j in list_df[i]:
ax.plot(list_df[i].index,list_df[i][j])
Редактировать:
Учитывая ваш ответ, который, кажется, полностью решает проблему, я бы изменил несколько строк на сделайте это немного более эффективным. Ниже кода я выложу некоторую информацию о производительности:
для i в диапазоне (df1.shape 1 ): for i in range(len(df.columns)):
leg_text = df1.columns.tolist() #What's the use of this line?
Сравнение скорости между shape
, len
и некоторыми другими методами:
ns = np.power(10, np.arange(5))
results = pd.DataFrame(
columns=ns,
index=pd.MultiIndex.from_product(
[['len', 'len(tolist)', 'len(values)', 'shape'],
ns]))
dfs = {(n, m): pd.DataFrame(np.zeros((n, m))) for n in ns for m in ns}
for n, m in dfs.keys():
df = dfs[(n, m)]
results.loc[('len',n),m] = timeit('len(df.columns)', 'from __main__ import df', number=10000)
results.loc[('len(tolist)', n), m] = timeit('len(df.columns.tolist())', 'from __main__ import df', number=10000)
results.loc[('len(values)', n), m] = timeit('len(df.columns.values)', 'from __main__ import df', number=10000)
results.loc[('shape', n), m] = timeit('df.values.shape[1]', 'from __main__ import df', number=10000)
fig, axes = plt.subplots(2, 3, figsize=(9, 6), sharex=True, sharey=True)
for i, (m, col) in enumerate(results.iteritems()):
r, c = i // 3, i % 3
col.unstack(0).plot.bar(ax=axes[r, c], title=m)
Вывод:
1 10 100 1000 10000
len 1 0.0038 0.0046 0.0032 0.0037 0.0035
len 10 0.0032 0.0032 0.0032 0.0034 0.0035
len 100 0.0032 0.0052 0.0052 0.0053 0.0035
len 1000 0.0037 0.0036 0.0041 0.0039 0.0043
len 10000 0.0040 0.0038 0.0045 0.0043 0.0123
len(tolist) 1 0.0051 0.0075 0.0175 0.1629 1.6579
len(tolist) 10 0.0051 0.0059 0.0175 0.1588 1.9253
len(tolist) 100 0.0049 0.0097 0.0196 0.1635 1.7422
len(tolist) 1000 0.0053 0.0065 0.0198 0.1831 1.9897
len(tolist) 10000 0.0057 0.0069 0.0218 0.1995 2.2426
len(values) 1 0.0083 0.0097 0.0073 0.0074 0.0074
len(values) 10 0.0073 0.0072 0.0073 0.0107 0.0087
len(values) 100 0.0075 0.0094 0.0109 0.0072 0.0081
len(values) 1000 0.0081 0.0082 0.0081 0.0085 0.0088
len(values) 10000 0.0087 0.0084 0.0103 0.0101 0.0327
shape 1 0.1108 0.0838 0.0789 0.0779 0.0780
shape 10 0.0764 0.0770 0.0771 0.1118 0.0806
shape 100 0.0952 0.0826 0.1013 0.0800 0.0889
shape 1000 0.0881 0.0863 0.0867 0.0938 0.1063
shape 10000 0.0905 0.0999 0.1043 0.1013 0.2384