将DataFrame的列绘制为针对相同y列的散点图

时间:2017-05-03 02:07:35

标签: python pandas matplotlib plot

我有一个DataFrame >>> df = pd.read_csv('Advertising.csv', index_col=0) >>> df.head(5) TV Radio Newspaper Sales 1 230.1 37.8 69.2 22.1 2 44.5 39.3 45.1 10.4 3 17.2 45.9 69.3 9.3 4 151.5 41.3 58.5 18.5 5 180.8 10.8 58.4 12.9 代表Advertising.csv中找到的CSV数据。

import matplotlib.pyplot as plt 

f, ax_l = plt.subplots(1, 3, figsize=(14, 4))

for e, col_name in enumerate(df.loc[:, :'Newspaper'].columns):
    ax_l[e].scatter(df[col_name], df.Sales, alpha=0.5, color='r')
    ax_l[e].set_xlabel(col_name)
    ax_l[e].set_ylabel('Sales')

我想将我的DataFrame中的每一列与各自的散点图中的Sales列进行对比,即 enter image description here

我设法用

完成了
df.plot

我的问题是savePar <- par(mfrow=c(1,3)) col <- adjustcolor( 'red', 0.5 ) with( Advertising, { plot( TV , Sales, pch=19, col=col ) plot( Radio , Sales, pch=19, col=col ) plot( Newspaper, Sales, pch=19, col=col ) } ) 中是否有一个构造可以让这个任务更容易进入Matplotlib并像我一样循环?

动机

我知道在R中,为了获得类似的结果,我会做类似

的事情
observer.OnNext(value);

当然看起来比我的Pandas接近IMO要清晰得多,让我质疑是否有一种更直接的方式以这种方式绘制DataFrames列。

1 个答案:

答案 0 :(得分:3)

我不知道在df.plot()方法中完全做到这一点的方法,但有一种更简单的方法来绘制图表:

import pandas as pd
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(14,4))

for xcol, ax in zip(['TV', 'Radio', 'Newspaper'], axes):
    df.plot(kind='scatter', x=xcol, y='Sales', ax=ax, alpha=0.5, color='r')

此处的方法是使用内置zip函数将列名称与单个axis对象配对。您可以将axis对象直接传递给df.plot,告诉它axis使用哪个df.plot()。您还可以在对static private void showAndBlock(Dialog dialog) { if (Platform.isFxApplicationThread()) { dialog.showAndWait(); } else { CountDownLatch lock = new CountDownLatch(1); Platform.runLater(() -> { dialog.showAndWait(); lock.countDown(); }); try { lock.await(); } catch (InterruptedException e) { // Just in case you call yourTherad.interrupt(), // the thread will be joined forcibly through here. } } } 的调用中指定x和y数据列的列名称。

使用您提供的数据子集,可以生成:

Three graphs