pandas 在'for'循环中绘制直方图时,'numpy.ndarray'对象没有'tick_params'属性,但不确定原因

piv4azn7  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(90)

我有下面的代码。
我正在尝试遍历 Dataframe (newerdf)的列,并为每个列绘制直方图
然后将每个出图储存为桌面上的. png档案。
但是,下面的代码给出了错误:* 'numpy. ndarray'对象没有'tick_params'属性。*
我会非常感激你的帮助!

listedvariables = ['distance','age']
for i in range(0,len(listedvariables)): 
    x = newerdf[[listedvariables[i]]].hist(figsize=(50,50))
    x.tick_params(axis='x',labelsize=60) 
    x.tick_params(axis='y',labelsize=60)
    x.set_xlabel(var,fontsize=70,labelpad=30,weight='bold')
    x.set_ylabel('Number of participants',fontsize=70,labelpad=30,weight='bold') 
    x.set_title(var,fontsize=70,pad=30,weight='bold') 
    dir_name = "/Users/macbook/Desktop/UCL PhD Work/"
    plt.rcParams["savefig.directory"] = os.chdir(os.path.dirname(dir_name))
    plt.savefig(var+' '+'histogram')
    plt.show()

newerdf ['age']的前10行如下所示:

0     21.0
1     24.0
2     47.0
3     32.0
5     29.0
6     29.0
7     22.0
8     23.0
9     32.0
10    22.0
f87krz0w

f87krz0w1#

DataFrame.hist()函数根据它的documentation返回一个matplotlib轴或轴的numpy数组,如果你的数据框有多个列。
此函数对DataFrame中的每个系列调用matplotlib.pyplot.hist(),从而为每列生成一个直方图。
因此在这一行中,

x = newerdf[[listedvariables[i]]].hist(figsize=(50,50))

x被设置为numpy数组,而numpy数组没有属性tick_params
要解决此问题,请循环x中的值,如下所示:

for i in range(0,len(listedvariables)): 
    x = newerdf[[listedvariables[i]]].hist(figsize=(50,50))
    for hist in x:
         # remainder of your code
ssm49v7z

ssm49v7z2#

下面的代码是有效的。
我在df 'newer[df]'和'hist'之间添加了'.plot'。

listedvariables = ['distance','age']
for i in range(0,len(listedvariables)): 
    x = newerdf[[listedvariables[i]]].plot.hist(figsize=(50,50))
    x.tick_params(axis='x',labelsize=60) 
    x.tick_params(axis='y',labelsize=60)
    x.set_xlabel(listedvariables[i],fontsize=70,labelpad=30,weight='bold')
    x.set_ylabel('Number of participants',fontsize=70,labelpad=30,weight='bold') 
    x.set_title(listedvariables[i],fontsize=70,pad=30,weight='bold') 
    dir_name = "/Users/macbook/Desktop/UCL PhD Work/"
    plt.rcParams["savefig.directory"] = os.chdir(os.path.dirname(dir_name))
    plt.savefig(listedvariables[i]+' '+'histogram')
    plt.show()

相关问题