pandas 如何在图的标题中打印 Dataframe 名称?

sg3maiej  于 2023-06-04  发布在  其他
关注(0)|答案(3)|浏览(271)

我有一个函数,它获取一个数据框和一列,经过一些处理后,绘制该列,如下面一行所示:

def plot_dist(df,col):
    ax=sns.countplot(x=col,data=df)

当我对几个 Dataframe 重复这个函数时,我希望在图的标题中有 Dataframe 的名称,像这样:“在dataframe df中分配col”

plt.title('Distribution of '+ col + 'in dataframe' + df.name );

问:如何获取 Dataframe 名称?根据here,可以写df.name ='DFNAME',然后通过df.name获取字符串。但是,必须定义名称,我不确定它是否在循环中工作。谢谢你!

a64a0gku

a64a0gku1#

我在这里找到了一个很好的函数:(Get the name of a pandas DataFrame

def get_df_name(df):
    name =[x for x in globals() if globals()[x] is df][0]
    return name

它会帮助你。

def plot_dist(df,col):
    ax=sns.countplot(x=col,data=df)
    ax.set_title(get_df_name(df))
bweufnob

bweufnob2#

作为一个初学者,我很惊讶对于有经验的程序员来说,要达到我们想要达到的目标是多么的困难。在我的例子中,我只想打印 Dataframe 的名称和大小。我希望这能有所帮助:

def dfshape(df):
    dfname =[x for x in globals() if globals()[x] is df][0]
    print("'"+str(dfname)+"'"+" dataframe shape is:"+str(df.shape))

与硬编码print语句相比,这是非常过度的设计,但却实现了2合1。原始解决方案归功于cors。

von4xj4u

von4xj4u3#

以下问题:如果这是从一个模块导入的,命名df的函数在导入的模块中,作用域在父目录中的一个文件中保持打开
联系我们
这是一个可笑的过度设计版本,增加了千个分隔符。

def dfshape(df):
    dfname =[x for x in globals() if globals()[x] is df][0]
    print('Dataframe ['+str(dfname)+"]'s"+f" shape is: ({int(str(df.shape)[1:-1].split(', ')[0]):,})",
          f"({int(str(df.shape)[1:-1].split(', ')[1]):,})")

输出

DataFrame [NAME_OF_DATAFRAME]的形状为:(2,942,528)(7)
原始解决方案归功于cors。

相关问题