Eri*_*sen 5 python plot matplotlib pandas
我有一个 DataFrame表示Advertising.csvdf中找到的 CSV 数据。
>>> 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
Run Code Online (Sandbox Code Playgroud)
我想将 DataFrame 中的每一列与各自散点图中的 Sales 列进行绘制,即

我设法做到了
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')
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一个构造df.plot可以使这项任务比像我一样进入 Matplotlib 和循环更容易?
动机
我知道在 R 中,为了达到类似的结果,我会做类似的事情
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 )
}
)
Run Code Online (Sandbox Code Playgroud)
诚然,在我看来,这比我的 Pandas 方法要干净得多,这让我怀疑是否有更直接的方法来以这种方式绘制 DataFrame 的列。
我不知道在该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')
Run Code Online (Sandbox Code Playgroud)
这里的方法是使用内置zip函数将列名与单个axis对象配对。您可以axis直接传递对象来df.plot告诉它axis使用哪个。您还可以在调用中指定 x 和 y 数据列的列名称df.plot()。
使用您提供的数据子集,将产生:
| 归档时间: |
|
| 查看次数: |
5507 次 |
| 最近记录: |