迭代地将列名作为参数传递给plot()函数pandas

时间:2018-04-19 16:42:29

标签: pandas matplotlib iteration data-visualization data-science

我想迭代地将col名称分配给我拥有的每个列名的值s。我已经尝试了一切,但无法通过这个。以下代码引发错误:

for i in continuous_data.columns :
   plt.figure()
   continuous_data.plot(x="Lattitude", y="Longtitude", kind="scatter",alpha=0.4,figsize=(12,10),c="Price",colormap="gist_rainbow",s=continuous_data.i,colorbar=True)
   plt.legend()

错误是:

    ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-2489dccddba7> in <module>()
      1 for i in continuous_data.columns :
      2     plt.figure()
----> 3     continuous_data.plot(x="Lattitude", y="Longtitude", kind="scatter", alpha=0.4,figsize=(12,10),c="Price",colormap="gist_rainbow",s=continuous_data.i,colorbar=True)
      4     plt.legend()

/opt/conda/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
   3612             if name in self._info_axis:
   3613                 return self[name]
-> 3614             return object.__getattribute__(self, name)
   3615 
   3616     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'i'

<matplotlib.figure.Figure at 0x7ff9c144aa58>

当我执行以下操作时,它会产生正确的列名:

    for i in continuous_data.columns:
    print(i)
Rooms
Price
Distance
Postcode
Bedroom2
Bathroom
Car
BuildingArea
Landsize
Lattitude
Longtitude
Propertycount

你们能帮助我吗?在Kaggle上链接到内核是:https://www.kaggle.com/shinydhar/melbourne-housing-analysis

1 个答案:

答案 0 :(得分:1)

问题在于

s=continuous_data.i

对于您而言,显而易见的是,它意味着您要重复的列i。对于熊猫来说,想想,这是

s=continuous_data['i']

并且您的DataFrame显然没有这样的列(并且它不是您的意思)。

只需将其替换为

即可
s=continuous_data[i]