pandas 使用回路创建多个打印[重复]

rryofs0p  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(73)
    • 此问题在此处已有答案**:

(13个答案)
昨天关门了。
我有一个数据集,我想用子图绘制所有列的散点图,最后一列是结果。

fig, ax = plt.subplots(figsize=(10, 6))
for i in range(len(columns)-1):
    columns = df.columns[i]
    ax.scatter(x = df[columns], y = df['Result'])
    plt.xlabel(columns[i])
    plt.ylabel("Result")

plt.show

我尝试使用子图来制作散点图,但它给了我这个错误

IndexError                                Traceback (most recent call last)
/var/folders/pn/ly3sp5n508v11pnffllvyl6h0000gn/T/ipykernel_34526/1242862654.py in <module>
     18 fig, ax = plt.subplots(figsize=(10, 6))
     19 for i in range(len(columns)-1):
---> 20     columns = df.columns[i]
     21     ax.scatter(x = df[columns], y = df['Result'])
     22     plt.xlabel(columns[i])

~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/indexes/base.py in __getitem__(self, key)
   5051             # GH#44051 exclude bool, which would return a 2d ndarray
   5052             key = com.cast_scalar_indexer(key, warn_float=True)
-> 5053             return getitem(key)
   5054 
   5055         if isinstance(key, slice):

IndexError: index 7 is out of bounds for axis 0 with size 7
lnlaulya

lnlaulya1#

您将列指定为df.columns[i],因此现在列的长度变为每列中的项数,而不是数据框中的列数。假设您有一个包含3列的数据框,即pricequantityamount(按顺序)。

columns = df.columns[0]

使得columns='price,因此,现在len(columns)(理想情况下应该是 Dataframe 中的列数)现在是字符串'price'的长度,即5(与期望值3相反)。

fig, ax = plt.subplots(figsize=(10, 6))
for i in range(len(columns)-1):
    columns = df.columns
    ax.scatter(x = df[columns[i]], y = df['Result'])
    plt.xlabel(columns[i])
    plt.ylabel("Result")

plt.show

相关问题