gpt4 book ai didi

python - 类型错误 : 'range' object is not callable

转载 作者:行者123 更新时间:2023-12-01 08:38:59 27 4
gpt4 key购买 nike

我一直在绘制一些图,然后我收到以下代码的上述错误:

    lag = range(0, 31)
djia_acf = []
for l in lag:
djia_acf.append(djia_df['Close'].autocorr(l))


plt.figure(figsize = (5.5, 5.5))
g = sns.pointplot(x=lag, y=djia_acf, markers = '.')
g.set_title('Autocorrelation function for DJIA')
g.set_xlabel('Lag in terms of number of trading days')
g.set_ylabel('Autocorrelation Function')
g.set_xticklabels(lag, rotation = 90)

TypeError Traceback (most recent call last)
<ipython-input-42-3ca28bdcaeea> in <module>()
1 plt.figure(figsize = (5.5, 5.5))
----> 2 g = sns.pointplot(x=lag, y=djia_acf, markers = '.')
3 g.set_title('Autocorrelation function for DJIA')
4 g.set_xlabel('Lag in terms of number of trading days')
5 g.set_ylabel('Autocorrelation Function')

/home/aspiring1/anaconda3/lib/python3.6/site-packages/seaborn/categorical.py in pointplot(x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, markers, linestyles, dodge, join, scale, orient, color, palette, ax, errwidth, capsize, **kwargs)
3065 estimator, ci, n_boot, units,
3066 markers, linestyles, dodge, join, scale,
-> 3067 orient, color, palette, errwidth, capsize)
3068
3069 if ax is None:

/home/aspiring1/anaconda3/lib/python3.6/site-packages/seaborn/categorical.py in __init__(self, x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, markers, linestyles, dodge, join, scale, orient, color, palette, errwidth, capsize)
1607 """Initialize the plotter."""
1608 self.establish_variables(x, y, hue, data, orient,
-> 1609 order, hue_order, units)
1610 self.establish_colors(color, palette, 1)
1611 self.estimate_statistic(estimator, ci, n_boot)

/home/aspiring1/anaconda3/lib/python3.6/site-packages/seaborn/categorical.py in establish_variables(self, x, y, hue, data, orient, order, hue_order, units)
201 # Group the numeric data
202 plot_data, value_label = self._group_longform(vals, groups,
--> 203 group_names)
204
205 # Now handle the hue levels for nested ordering

/home/aspiring1/anaconda3/lib/python3.6/site-packages/seaborn/categorical.py in _group_longform(self, vals, grouper, order)
243
244 # Group the val data
--> 245 grouped_vals = vals.groupby(grouper)
246 out_data = []
247 for g in order:

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py in groupby(self, by, axis, level, as_index, sort, group_keys, squeeze, **kwargs)
4269 return groupby(self, by=by, axis=axis, level=level, as_index=as_index,
4270 sort=sort, group_keys=group_keys, squeeze=squeeze,
-> 4271 **kwargs)
4272
4273 def asfreq(self, freq, method=None, how=None, normalize=False,

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py in groupby(obj, by, **kwds)
1624 raise TypeError('invalid type: %s' % type(obj))
1625
-> 1626 return klass(obj, by, **kwds)
1627
1628

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py in __init__(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, **kwargs)
390 level=level,
391 sort=sort,
--> 392 mutated=self.mutated)
393
394 self.obj = obj

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py in _get_grouper(obj, key, axis, level, sort, mutated)
2636 sort=sort,
2637 in_axis=in_axis) \
-> 2638 if not isinstance(gpr, Grouping) else gpr
2639
2640 groupings.append(ping)

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/groupby.py in __init__(self, index, grouper, obj, name, level, sort, in_axis)
2418 t = self.name or str(type(self.grouper))
2419 raise ValueError("Grouper for '%s' not 1-dimensional" % t)
-> 2420 self.grouper = self.index.map(self.grouper)
2421 if not (hasattr(self.grouper, "__len__") and
2422 len(self.grouper) == len(self.index)):

/home/aspiring1/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py in map(self, mapper)
2725 """
2726 from .multi import MultiIndex
-> 2727 mapped_values = self._arrmap(self.values, mapper)
2728 attributes = self._get_attributes_dict()
2729 if mapped_values.size and isinstance(mapped_values[0], tuple):

pandas/_libs/algos_common_helper.pxi in pandas._libs.algos.arrmap_int64 (pandas/_libs/algos.c:41758)()

TypeError: 'range' object is not callable

<matplotlib.figure.Figure at 0x7f1fa7c2ab70>

在上面的代码中,我只是尝试使用seaborn绘制点图,但它给出了范围对象不可调用的错误,我见过类似的帖子,其中有错误

"list object is not callable"

但是,在这里我看不到我的范围对象 lag 被调用的任何地方。使用 x = np.array(lag) 为我提供了所需的图,并附加了以下输出,不知道为什么?

[<matplotlib.text.Text at 0x7f1fa7d38208>,
<matplotlib.text.Text at 0x7f1fa7d38ef0>,
<matplotlib.text.Text at 0x7f1fa7c61208>,
<matplotlib.text.Text at 0x7f1fa7c61cc0>,
<matplotlib.text.Text at 0x7f1fa7c696d8>,
<matplotlib.text.Text at 0x7f1fa7c711d0>,
<matplotlib.text.Text at 0x7f1fa7c71c88>,
<matplotlib.text.Text at 0x7f1fa7c75780>,
<matplotlib.text.Text at 0x7f1fa7c7c278>,
<matplotlib.text.Text at 0x7f1fa7c7cd30>,
<matplotlib.text.Text at 0x7f1fa7c02828>,
<matplotlib.text.Text at 0x7f1fa7c08320>,
<matplotlib.text.Text at 0x7f1fa7c08dd8>,
<matplotlib.text.Text at 0x7f1fa7c0c8d0>,
<matplotlib.text.Text at 0x7f1fa7c123c8>,
<matplotlib.text.Text at 0x7f1fa7c12e80>,
<matplotlib.text.Text at 0x7f1fa7c1a978>,
<matplotlib.text.Text at 0x7f1fa7c1e470>,
<matplotlib.text.Text at 0x7f1fa7c1ef28>,
<matplotlib.text.Text at 0x7f1fa7c25a20>,
<matplotlib.text.Text at 0x7f1fa7c2a518>,
<matplotlib.text.Text at 0x7f1fa7c2afd0>,
<matplotlib.text.Text at 0x7f1fa7c31ac8>,
<matplotlib.text.Text at 0x7f1fa7c385c0>,
<matplotlib.text.Text at 0x7f1fa7c3d0b8>,
<matplotlib.text.Text at 0x7f1fa7c3db70>,
<matplotlib.text.Text at 0x7f1fa7bc5668>,
<matplotlib.text.Text at 0x7f1fa7bc9160>,
<matplotlib.text.Text at 0x7f1fa7bc9c18>,
<matplotlib.text.Text at 0x7f1fa7bce710>,
<matplotlib.text.Text at 0x7f1fa7bd4208>]

我使用 matplotlib.pyplot 绘制了绘图,它将范围对象作为 x 值,如下所示:

inflation = pd.read_excel('inflation-consumer-prices-annual.xlsx', parse_dates=['Year'])
plt.figure(figsize=(5.5, 5.5))
plt.plot(range(1960,2017), inflation['India'], linestyle='-', marker='*',
color='r')
plt.plot(range(1960,2017), inflation['United States'], linestyle='-',
marker='.', color='b')
plt.legend(['India','United States'], loc=1)
plt.title('Inflation in Consumer Price Index')
plt.ylabel('Inflation')
plt.xlabel('Years')

因此,我不知道为什么会收到 TypeError,因为它与 matplotlib.pyplot 一起使用,并且被调用的范围对象没有任何意义。

最佳答案

在 python 3 中,range 返回一个迭代器,而不是列表本身。因此,以下内容不适用于 python 3。但是,它适用于 python 2。

import seaborn as sns
import matplotlib.pyplot as plt

x = range(9)
y = [1,2,3]*3
sns.pointplot(x=x, y=y, markers = '.')

plt.show()

但是,您可以通过 list(range(...)) 将任何范围转换为列表。因此,以下工作正常。

import seaborn as sns
import matplotlib.pyplot as plt

x = list(range(9))
y = [1,2,3]*3
sns.pointplot(x=x, y=y, markers = '.')

plt.show()

关于python - 类型错误 : 'range' object is not callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com