python:ValueError:太多值无法从 Excel 中解压(预计为 2 个)数据

问题描述 投票:0回答:3

我想从 Excel 中获取数据并在 python 中绘制 2D 核密度估计,但它显示“ValueError:解包值太多(预期为 2)”。如何修复它?遵循编码:

# libraries
import matplotlib.pyplot as plt
from scipy.stats import kde
import pandas as pd
 
# create data
x = pd.read_excel(r'C:\Users\Ezra\Desktop\montex.xlsx')
y = pd.read_excel(r'C:\Users\Ezra\Desktop\montey.xlsx')
 
# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents
nbins=500
k = kde.gaussian_kde([x,y])
xi, yi = pd.mgrid[x.min():x.max():nbins*100j, y.min():y.max():nbins*100j]
zi = k(pd.vstack([xi.flatten(), yi.flatten()]))
 
# Make the plot
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), shading='auto')
plt.show()
 
# Change color palette
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), shading='auto', cmap=plt.cm.Greens_r)
plt.show()
python pandas kernel gaussian
3个回答
6
投票

当您从代码中收到错误时,这将有助于提出实际的回溯,尤其是指示示例代码的哪一行导致错误的部分。

当您调用返回多个值的函数时,您可以将其“解包”为单独的变量。

ValueError: too many values to unpack (expected 2)
表示您调用了一个仅返回单个值的函数,但您尝试将返回值解压为两个变量。

例如,考虑这个小 python 脚本:

def returns_1_val(): 
    return 'one'

def returns_2_vals(): 
    return 'one', 'two'

print(returns_2_vals())

# Unpack the return value.
x,y = returns_2_vals()
print('x', x)
print('y', y)

print(returns_1_val())

# This next call fails.  We're "expecting" Python to unpack 2 values into 
# x and y, but it fails because the function only returned one value.   
x,y = returns_1_val()

运行时:

('one', 'two')
x one
y two
one
Traceback (most recent call last):
  File "unpack_err.py", line 11, in <module>
    x,y = returns_1_val()
ValueError: too many values to unpack (expected 2)

更一般的错误消息使其更加清晰。例如,如果您尝试拨打

x,y,z = return_2_vals()
,您会得到

ValueError:没有足够的值来解压(预期为 3 个,实际为 2)


5
投票

我认为汤姆·布莱恩的答案不正确。您的错误显示:““ValueError:解包值太多(预期为 2)”,这是 Tom 给出的相反示例。

Tom 说“ValueError:太多值无法解压(预期为 2 个)意味着您调用了一个仅返回单个值的函数”。我认为这是错误的,这意味着你调用了一个返回超过 2 个值的函数。您的函数可能正在尝试将 2 个以上的值分配给仅 2 个变量。


0
投票

尝试在图形处理单元 (GPU) 上运行它。

© www.soinside.com 2019 - 2024. All rights reserved.