【发布时间】:2021-04-26 15:59:28
【问题描述】:
所以我的数据结构有点不寻常。这是我正在使用的示例:
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 to imshow,我不能直接从代码中的字典中绘图。我也不想对新列表进行任何附加,因为我的数据集很大并且会大大减慢速度。
编辑 1:
要回答 cmets 中的问题,这是我所追求的情节类型。 x 轴包含df['data'] 中的数组,而y 轴最终将是df['parameter']。
编辑 2:
我想我需要进一步澄清我的问题。我希望准确地重现这个情节。
为了制作这个情节,我做了以下事情:
rows = []
for i in df['data']:
rows.append(i)
plt.imshow(rows)
此解决方案适用于我的数据,但我正在寻找一种更有效的方式来做同样的事情。即不涉及循环和追加的方法。
【问题讨论】:
-
你想要什么样的情节?只是将其绘制为方阵?会不会是某些列表的大小不同?
-
@DavidS,我添加了一个编辑。如果这能阐明我的目标,请告诉我。
-
x 轴是否包含来自
df['data']?的展平数组如果是,该范围是否包含来自整个(df['data']) 列的展平数组的值范围?跨度> -
@theSekyi,x 轴与我在上面列出的完全一样。即,
y=df['parameter'][0]和x=df['data'][0],其中 x 和 y 分别是 x 轴和 y 轴值。
标签: python pandas dataframe matplotlib imshow