Python Pandas列由数组组成,使用plt.imshow()绘制此列

Python Pandas列由数组组成,使用plt.imshow()绘制此列,python,pandas,dataframe,matplotlib,imshow,Python,Pandas,Dataframe,Matplotlib,Imshow,所以我有一些数据是以一种稍微不寻常的方式构造的。下面是我正在使用的示例: import numpy as np import pandas as pd dict = {'data': [[1,2,3], [2,3,4], [3,4,5]], 'parameter': [10, 11, 12]} df = pd.DataFrame(dict) 换句话说,df['data']中的每一行都包含一个数组 我需要使用matplotlib的imshow()函数来绘制此图,但在df['data']中使用数

所以我有一些数据是以一种稍微不寻常的方式构造的。下面是我正在使用的示例:

import numpy as np
import pandas as pd

dict = {'data': [[1,2,3], [2,3,4], [3,4,5]], 'parameter': [10, 11, 12]}
df = pd.DataFrame(dict)
换句话说,
df['data']
中的每一行都包含一个数组

我需要使用matplotlib的
imshow()
函数来绘制此图,但在
df['data']
中使用数组时遇到困难。我尝试过使用
df['data'].to_numpy()
,但这会返回一个
dtype=object
,imshow无法处理。我在尝试绘制时遇到以下错误:

TypeError:无法将dtype对象的图像数据转换为浮点

确切地说,这就是我试图运行的:

import pylab as plt
plt.imshow(df['data'].to_numpy())
我四处阅读,似乎找不到有类似例子的人

需要明确的是:我需要从DataFrame转到imshow,我不能直接从代码中的字典进行绘图。我也不想在新列表中添加任何内容,因为我的数据集很大,会大大降低速度


编辑1:

回答评论中的一个问题,这就是我想要的情节类型。x轴包含
df['data']
中的数组,而y轴最终将是
df['parameter']


编辑2:

我想我需要进一步澄清我的问题。我想准确地再现这个情节

为了绘制此图,我做了以下工作:

rows = []
for i in df['data']: 
    rows.append(i)
plt.imshow(rows)

这个解决方案适用于我的数据,但我正在寻找一种更有效的方法来做同样的事情。i、 例如,一种不涉及循环和附加的方法。

您可以执行以下操作:

rows = []
for i in df['data']: 
    rows.append(i)
plt.imshow(rows)
用于将
数据
列取消列出到不同的行,然后打印

x = df.explode('data').reset_index()
plt.imshow(x[['data','parameter']].to_numpy().astype('float').T)
这将产生:

基本上,
x[['data','parameter']].to_numpy().astype('float').T
将为您提供所需的numpy数组,您可以在其中根据需要进行绘图

根据用户评论进行编辑: 这将产生:


您想要什么样的绘图?把它画成方阵?是否有些列表会有不同的大小?@DavidS,我添加了一个编辑。让我知道这是否澄清了我的目标。x轴是否由
df['data']中的展平数组组成?
如果是,范围是否由整个(
df['data']
)列中展平数组的值范围组成?@theSekyi,x轴与我上面的布局完全相同。i、 例如,
y=df['parameter'][0]
x=df['data'][0]
,其中x和y分别是x轴和y轴的值。这是一个很好的解决方案,但不是我想要的。请查看我的最新编辑。@NoVa所以你不想使用
参数
?我想,但为了简单起见,我们说不。我只是在我的第一个示例中使用它,以便更好地复制我的数据<代码>参数实际上只是一个y型标签,它对绘图没有影响。嗯。。。我遇到了以下错误:
TypeError:dtype对象的图像数据无法转换为float
。这行代码正确地提取了数组,但我仍然保留着最初的错误。