在python中绘制数据时遇到错误

2024-05-20 14:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想初始化一个dataframe并设置它的列和索引,如下所示,但在这样做时我会遇到一些问题:

import pandas as pd
import numpy as np

import seaborn as sns
import matplotlib.pyplot as plt

record = pd.DataFrame(MAE, columns=dataset, index=classifier).transpose()
plt.figure(figsize=(8, 8))
plt.title('MAE HeatMap Dataset vs Classifier')
sns.heatmap(record, linewidths=0.5, annot=True)
plt.show()

根据上述矩阵定义为:

更新前:

MAE = [[[0], [0], [0]],
       [[0], [0], [0]]]

更新后:

MAE = [[array([ 27.5]), array([ 29.9]), array([ 37.8])],
       [array([ 6.51]), array([ 7.51]), array([ 9.81])]]

数据集为:

da = ['Xtrain','Ytrain']

和cl as:

classifier = ['Ax','Bx','Cx']

执行此行时发生以下错误:

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-45-f0449c7e5b93> in <module>()
     43     return
     44 
---> 45 main()

<ipython-input-45-f0449c7e5b93> in main()
     29         DisplayWTL(dataset[city] + ' R2 Score', WTL_R2[0], classifier)
     30 
---> 31     record = pd.DataFrame(MAE, columns=dataset, index=classifier).transpose()
     32     plt.figure(figsize=(8, 8))
     33     plt.title('MAE HeatMap Dataset vs Classifier')

/home/AAK/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
    303                     if is_named_tuple(data[0]) and columns is None:
    304                         columns = data[0]._fields
--> 305                     arrays, columns = _to_arrays(data, columns, dtype=dtype)
    306                     columns = _ensure_index(columns)
    307 

/home/AAK/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _to_arrays(data, columns, coerce_float, dtype)
   5517     if isinstance(data[0], (list, tuple)):
   5518         return _list_to_arrays(data, columns, coerce_float=coerce_float,
-> 5519                                dtype=dtype)
   5520     elif isinstance(data[0], collections.Mapping):
   5521         return _list_of_dict_to_arrays(data, columns,

/home/AAK/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _list_to_arrays(data, columns, coerce_float, dtype)
   5596         content = list(lib.to_object_array(data).T)
   5597     return _convert_object_array(content, columns, dtype=dtype,
-> 5598                                  coerce_float=coerce_float)
   5599 
   5600 

/home/AAK/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py in _convert_object_array(content, columns, coerce_float, dtype)
   5655             # caller's responsibility to check for this...
   5656             raise AssertionError('%d columns passed, passed data had %s '
-> 5657                                  'columns' % (len(columns), len(content)))
   5658 
   5659     # provide soft conversion of object dtypes

AssertionError: 2 columns passed, passed data had 3 columns

如何在python数据帧中解决这个问题?你知道吗


Tags: columnstoinpandasdatalibasplt
2条回答

答案很简单:

颠倒你的清单如下:

list(map(list, zip(*MAE)))

代码如下所示:

record = pd.DataFrame(list(map(list, zip(*MAE))), columns=dataset, index=classifier).transpose()
plt.figure(figsize=(8, 8))
plt.title('MAE HeatMap Dataset vs Classifier')
sns.heatmap(record, linewidths=0.5, annot=True)

plt.show()

看起来您试图设置包含三列的数据帧,但只为构造函数指定了2。将列标签columns=dataset更改为3,就可以了。例如,更改为da = ['Xtrain', 'Ytrain', 'Smth_else']。你知道吗

相关问题 更多 >