python - 如何绘制 Pandas 列的散点子图

标签 python pandas matplotlib scatter

假设我有一个包含 100 行和 40 列的数据框,其中第 40 列表示散点图的 Y 轴值。对于 39 个散点图,我想根据第 1 列的函数绘制第 40 列,根据第 2 列的函数绘制第 40 列,根据第 3 列的函数绘制第 40 列,等等,直到第 40 列作为第 39 列的函数。什么是最好的无需手动完成所有操作即可生成这样的子图的方法?

例如(使用较小的数据框),尝试散点图第 3 列作为第 1 列的函数,第 3 列作为子图中第 2 列的函数。

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})
df.plot(x=["AAA", "BBB"], y=["CCC"], kind="scatter", subplots=True, sharey=True)

最佳答案

一种方法是在外部创建子图并遍历列名,为每个子图创建一个图。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})

fig, axes = plt.subplots(1,len(df.columns.values)-1, sharey=True)

for i, col in enumerate(df.columns.values[:-1]):
    df.plot(x=[col], y=["CCC"], kind="scatter", ax=axes[i])

plt.show()


另一种可能适用于 pandas 0.19 的方法是使用 subplots 参数。根据the documentation

subplots : boolean, default False
Make separate subplots for each column

我对此进行了解释,因此以下内容应该有效,但是,我无法对其进行测试。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]})

df.plot(x=df.columns.values[:-1], y=["CCC" for _ in df.columns.values[:-1]], 
                            kind="scatter", subplots=True, sharey=True)
plt.show()

关于python - 如何绘制 Pandas 列的散点子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912064/

相关文章:

python - Rpy2: Pandas 数据框不适合 R

python - 如何读取字符串、转换为正则表达式并编译它?

python - 迭代 pandas 系列并格式化日期

python - 数据透视表不写入预先存在的工作表

python-3.x - 首先通过 ID 聚合 Dask 数据,然后在几分钟内聚合 Dask 数据时杀死了工作人员

python-3.x - 我怎样才能在我的情节标题中正确地格式化这个方程式? ( python 3)

python - 使用 Python 和 OpenCV 错误校准网络摄像头

python - 根据单词列表替换单词来复制句子的最快方法是什么?

matplotlib - 设置 mpld3 图的高度和宽度

python - Matplotlib 从图中删除所有补丁