【发布时间】:2021-03-01 08:09:49
【问题描述】:
我有 pandas DataFrames,它有一个“x”列和一个“y”列,它们代表表面中的点,然后是许多具有这些点属性的列。从这里我需要创建矩阵来绘制这些数据。这是我目前正在做的 MWE:
import pandas
import numpy
import matplotlib.pyplot as plt
df = pandas.DataFrame(
{
'x': [1,1,1,2,2,2,3,3,3],
'y': [4,5,6,4,5,6,4,5,6],
'z': [1,2,3,4,5,6,7,8,9],
}
)
x_values = sorted(set(df['x']))
y_values = sorted(set(df['y']))
xx, yy = numpy.meshgrid(x_values, y_values)
zz = numpy.zeros(xx.shape)
zz[:] = float('NaN')
for nx,x in enumerate(x_values):
for ny,y in enumerate(y_values):
zz[ny,nx] = float(df.loc[(df['x']==x) & (df['y']==y), 'z'])
plt.pcolormesh(xx,yy,zz)
plt.show()
这可行,但速度很慢(当 df 有 100 万行时)。有没有更好的方法呢?
【问题讨论】:
标签: python pandas dataframe matrix