【问题标题】:How to print dataframe name in title of a plot?如何在绘图标题中打印数据框名称?
【发布时间】:2019-01-10 22:16:40
【问题描述】:

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

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

当我对几个数据框重复此功能时,我希望在绘图标题中包含数据框名称,如下所示:“数据框 df 中 col 的分布”

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

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

【问题讨论】:

  • 不清楚你最后一句是什么意思。 df.name是dataframe的一个属性,可以用df.name='NameOfDataFrame'设置名字,然后用df.name访问,会返回字符串'NameOfDataFrame'
  • @G.Anderson 我想直接从函数输入中获得完全相同的名称,而不是手动定义它,如该链接中所述。
  • 如果我没有得到它,我很抱歉,但我不完全理解这个问题。如果要使用数据框的名称,则必须以某种方式定义它。也许在您的函数定义中您可以添加一个可选参数? def plot_dist(df,col, name='mydf'):。如果您不想设置名称,则不能使用名称,但可以使用您喜欢的任何其他字符串。也许你想要的行为的一个例子会有所帮助?当你调用你的函数时,你想发生什么,你提到的“循环”是什么?
  • @G.Anderson 抱歉,如果问题不太清楚。我很欣赏你的cmets。我有几个数据框(例如 dfUS 和 dfEU),出于实际/视觉原因,我只想在图的顶部打印该名称。当我阅读它们时,我只想从例如 dfUS=pd.read_csv (...) 中获取名称。请参阅下面接受的有效答案。

标签: python pandas dataframe


【解决方案1】:

我在这里找到了不错的功能:(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))

【讨论】:

    【解决方案2】:

    作为初学者,我很惊讶有经验的程序员要获得我们想要达到的目标是多么困难。就我而言,我只想打印数据框的名称和大小。我希望这会有所帮助:

    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 的原始解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多