簡體   English   中英

在python中繪制數據時遇到錯誤

[英]Error encounter while ploting the data in python

我想初始化一個數據框並設置它的列和索引,如下所示,但是這樣做時我會遇到一些問題:

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為:

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數據幀中解決此問題?

看起來您嘗試設置包含三列的數據框,但僅向構造函數指定2。 將列標簽的columns=dataset更改為3,就可以了。 例如,更改為da = ['Xtrain', 'Ytrain', 'Smth_else']

答案很簡單:

像這樣反轉您的列表:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM