Python 如何对数据帧字典进行子绘图

Python 如何对数据帧字典进行子绘图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我想从字典中分包16个数据帧,但我尝试了for循环,但不知道如何使用DictDataFrame完成代码: DataFrameDict.keys() : dict_keys([1, 10, 20, 30, 40, 47, 100, 15, 25, 35, 45, 50, 5, 105, 55, 0]) 因此,我想为字典中的每个数据帧对每个列的持续时间(Min)进行子绘图,但我不知道如何处理:DataFrameDict[key]['Duration(Min)] 尝试展平轴阵列并使用zip循环: f

我想从字典中分包16个数据帧,但我尝试了for循环,但不知道如何使用DictDataFrame完成代码:

DataFrameDict.keys() :
dict_keys([1, 10, 20, 30, 40, 47, 100, 15, 25, 35, 45, 50, 5, 105, 55, 0])
因此,我想为字典中的每个数据帧对每个列的持续时间(Min)进行子绘图,但我不知道如何处理:DataFrameDict[key]['Duration(Min)]


尝试展平轴阵列并使用zip循环:

fig = plt.figure()
fig, axes = plt.subplots(nrows=4, ncols=4)

for (key, data), ax in zip(DataFrameDict.items(), axes.ravel()):
    data['Duration (Min)'].plot(ax=ax)

    ax.set_title(f'Data for {key}')

plt.show()

尝试展平轴阵列并使用zip循环:

fig = plt.figure()
fig, axes = plt.subplots(nrows=4, ncols=4)

for (key, data), ax in zip(DataFrameDict.items(), axes.ravel()):
    data['Duration (Min)'].plot(ax=ax)

    ax.set_title(f'Data for {key}')

plt.show()
  • 使用
    .ravel
    展平
    轴阵列
    相当常见。
    • 有关详细的说明,请参阅
  • math.ceil
    将确保当要打印的项目数不能被列数平均整除时,有足够的行
  • for loop
    使用
    idx
    索引正确值,并使用
    key
    绘制每个数据帧,迭代枚举的
    dict键
  • 用于绘制数据帧
将熊猫作为pd导入
将numpy导入为测试数据的np#
输入数学
#测试数据
行=10
键=已排序([1,10,20,30,40,47,100,15,25,35,45,50,5,105,55,0])
df_dict={key:pd.DataFrame({'a':np.random.randint(0,10,size=(行)),'b':np.random.randint(15,25,size=(行)),'Duration(Min)':np.random.randint(30,40,size=(行))}
#给定列数,确定行数
cols=4
行=math.ceil(len(key)/cols)
#创建具有多个轴的图形
图,轴=plt.子批次(nrows=行,ncols=列,figsize=(16,16))
#将轴从4x4阵列转换为16x1阵列
ax_数组=axes.ravel()
#遍历dataframe字典键并使用enumerate
对于idx,输入枚举(键):
df_dict[key]['Duration(Min)].plot(ax=ax_数组[idx],ylabel='Value',title=f'DataFrame:{key}'))
plt.紧_布局()
plt.show()

  • 使用
    .ravel
    展平
    轴阵列
    相当常见。
    • 有关详细的说明,请参阅
  • math.ceil
    将确保当要打印的项目数不能被列数平均整除时,有足够的行
  • for循环
    循环遍历枚举的
    dict键
    ,使用
    idx
    ax_数组
    索引正确的值,并使用
    绘制每个数据帧
  • 用于绘制数据帧
将熊猫作为pd导入
将numpy导入为测试数据的np#
输入数学
#测试数据
行=10
键=已排序([1,10,20,30,40,47,100,15,25,35,45,50,5,105,55,0])
df_dict={key:pd.DataFrame({'a':np.random.randint(0,10,size=(行)),'b':np.random.randint(15,25,size=(行)),'Duration(Min)':np.random.randint(30,40,size=(行))}
#给定列数,确定行数
cols=4
行=math.ceil(len(key)/cols)
#创建具有多个轴的图形
图,轴=plt.子批次(nrows=行,ncols=列,figsize=(16,16))
#将轴从4x4阵列转换为16x1阵列
ax_数组=axes.ravel()
#遍历dataframe字典键并使用enumerate
对于idx,输入枚举(键):
df_dict[key]['Duration(Min)].plot(ax=ax_数组[idx],ylabel='Value',title=f'DataFrame:{key}'))
plt.紧_布局()
plt.show()

我有一个错误:ValueError:要解包的值太多(预期为2)@ThonyNadhir抱歉,应该是
.items()
。已更新。我有以下错误:ValueError:要解压缩的值太多(预期为2)@ThonyNadhir抱歉,应该是
.items()
。更新。
fig = plt.figure()
fig, axes = plt.subplots(nrows=4, ncols=4)

for (key, data), ax in zip(DataFrameDict.items(), axes.ravel()):
    data['Duration (Min)'].plot(ax=ax)

    ax.set_title(f'Data for {key}')

plt.show()