Python 如何从要打印的数据框中选择列而不寻址其名称
我需要从一个列中绘制数据,并且我不想使用它的名称 问题是,我想让用户输入以定制分析,这意味着我将始终为列获取不同的名称,因此必须手动更改绘图的名称。有什么可能的解决方案使它自动化吗 我试过了Python 如何从要打印的数据框中选择列而不寻址其名称,python,pandas,dataframe,plot,Python,Pandas,Dataframe,Plot,我需要从一个列中绘制数据,并且我不想使用它的名称 问题是,我想让用户输入以定制分析,这意味着我将始终为列获取不同的名称,因此必须手动更改绘图的名称。有什么可能的解决方案使它自动化吗 我试过了 stocks\u ret.iloc[0,1]。绘图(figsize=(16,8),grid=True) 我也尝试过使用.iloc,但失败了 AttributeError:'numpy.float64'对象没有属性'plot' 试着改变 stocks_ret.iloc[0,1].plot(figsize=
stocks\u ret.iloc[0,1]。绘图(figsize=(16,8),grid=True)
我也尝试过使用.iloc
,但失败了
AttributeError:'numpy.float64'对象没有属性'plot'
试着改变
stocks_ret.iloc[0,1].plot(figsize=(16,8), grid=True)
到
解释
iloc
使用语法my\u dataframe.iloc[row\u range,column\u range]
从数据帧中选择要提取的行和列索引。例如,通过编写my_dataframe.iloc[0:2,0:4]
,您要求从第一行到第三行以及从第一列到第五列提取值(请记住,在Python中,索引从0开始)
类似地,通过编写my_dataframe.iloc[2,3]
,您会询问第三行第四列的my_dataframe
中的具体值是什么。这就是您在代码中所做的。由于它返回单个值,而不是pandas series/dataframe,因此它没有plot属性,从而导致您看到的错误
为了选择整列,需要传递一个与整列长度相等的范围,而不是单个索引。:
符号可用作简写,以便my_dataframe.iloc[:,3]
返回第四列中所有值的序列 试试换衣服
stocks_ret.iloc[0,1].plot(figsize=(16,8), grid=True)
到
解释
iloc
使用语法my\u dataframe.iloc[row\u range,column\u range]
从数据帧中选择要提取的行和列索引。例如,通过编写my_dataframe.iloc[0:2,0:4]
,您要求从第一行到第三行以及从第一列到第五列提取值(请记住,在Python中,索引从0开始)
类似地,通过编写my_dataframe.iloc[2,3]
,您会询问第三行第四列的my_dataframe
中的具体值是什么。这就是您在代码中所做的。由于它返回单个值,而不是pandas series/dataframe,因此它没有plot属性,从而导致您看到的错误
为了选择整列,需要传递一个与整列长度相等的范围,而不是单个索引。
:
符号可用作简写,以便my_dataframe.iloc[:,3]
返回第四列中所有值的序列 .iloc
不会解决您的问题,可能只会让问题变得更糟。使用.iloc
时,用户不仅需要知道列名,还需要知道它在数据帧中的位置。这几乎肯定比只知道列名更糟糕。只需使用一个参数col
(用户指定的字符串)编写分析函数,然后您就可以在函数内部用df[col].plot()绘制他们传递的任何字符串。您试图绘制一个值。iloc
不会解决您的问题,可能只会使问题变得更糟。使用.iloc
时,用户不仅需要知道列名,还需要知道它在数据帧中的位置。这几乎肯定比只知道列名更糟糕。只需使用一个参数col
(用户指定的字符串)编写分析函数,然后您就可以在函数内部用df[col].plot()绘制他们传递的任何字符串。您正在尝试绘制一个值