【问题标题】:Difference between plot and plot() in PandasPandas 中 plot 和 plot() 的区别
【发布时间】:2020-08-14 04:53:27
【问题描述】:

这似乎是一件很幼稚的事情,但我只是想确保我的理解是否正确。

要直接从 pandas 数据框绘制作为快捷方式,我的第一个选择是调用 plot() 方法并传入我的 xy 以及我想要制作的绘图的 kind。否则,我可以将数据框作为pandas.plotting._core.PlotAccessor 对象分配给plot,然后调用适当的方法进行绘图,例如bar()box() 等。

所以,语法上我有

df.plot(x=x, y=y, kind='something') # call method OR
df.plot.something(x=x, y=y) # assign object and then call method

如果我的上述声明是正确的,那么为什么我没有得到我想要的单变量图(hist、box 等)?虽然它对双变量的工作非常好。

df = pd.DataFrame({'col1':[1,2,3,4], 'col2':[3,3,5,5], 'col3':[10,11,12,13]})
df.plot(x='col1', kind='hist') # or
df.plot.hist(x='col2')

给出一个类似的图表

我知道,根据Pandas Documentation,我应该通过对col2 进行切片来使用系列,但是xy 的目的是什么?

此外,这对于像这样的二元图也可以正常工作

df.plot.scatter(x='col1', y='col3')

我错过了什么?任何帮助表示赞赏。提前致谢。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    this resource 开始,.plot 针对每一列绘制索引,.plot() 允许您指定单独绘制哪些列或针对其他列绘制。

    你没有得到你对单变量直方图的期望的原因是因为 DataFrame 方法 pd.plot.hist() 的参数 x 没有按照你期望的方式使用。

    要获得我假设您想要一个变量的直方图的结果,您应该使用参数y(因为 y 表示 DataFrame 系列的每个值的计数)。

    df.plot.hist(y='col2')
    

    当您设置参数x='col2' 时,会发生pandas 遍历DataFrame 的col2,并绘制其他列中值的直方图(基本上将col1col3 视为y) .这就是为什么 df.plot.hist(x='col2') 会为您提供 DataFrame 的 col1col3 值的组合直方图。

    【讨论】:

    • 完全有道理。万分感谢。你也可以评论一下我对plotplot()的推论
    • 很高兴我的回答有帮助!我还添加了我认为最好的方式来理解 plot 和 plot() 之间的区别
    猜你喜欢
    • 2018-09-27
    • 2015-08-18
    • 2021-12-25
    • 2013-08-25
    • 2015-06-03
    • 1970-01-01
    • 2013-09-24
    • 2017-01-04
    • 2016-12-07
    相关资源
    最近更新 更多