这似乎是一件非常幼稚的事情,但我只是想确保我的理解是否正确。
要作为快捷方式直接从pandas dataframe绘图,我的第一个选择是调用plot()方法并传入我想要绘制的绘图的x和y以及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来使用系列,但是x和y的用途是什么呢
同样,对于像这样的双变量图,这也是预期的
df.plot.scatter(x='col1', y='col3')

我遗漏了什么?任何帮助都是非常感谢的。提前谢谢。
发布于 2020-08-14 15:00:56
在this resource中,.plot根据每一列绘制索引,.plot()允许您指定单独绘制哪些列或绘制其他列。
没有得到预期的单变量直方图的原因是,DataFrame方法pd.plot.hist()的参数x没有按照预期的方式使用。
为了得到结果,我假设您想要一个变量的直方图,您应该使用参数y (因为y表示DataFrame序列的每个值的计数)。
df.plot.hist(y='col2')

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

https://stackoverflow.com/questions/63406754
复制相似问题