带有数字和图表的循环

时间:2018-03-28 03:14:32

标签: python pandas loops matplotlib plot

我正在尝试循环,其中每个i都有一个带有两个图的数字。这些图之间的差异由二进制列给出。例如:

train = pd.DataFrame({'vehicle': ['car', 'truck', 'bus', 'car', 'bus' ], 
                   'sex': ['male','male','male','female','female'],
                   'income': ['60000', '50000', '65000', '70000', '60000'],
                   'age': [31,25,67,90,18],
                   'crash' : [1,0,0,0,1]
})

每个数字必须有两个图表,它显示了每个列的两个案例crash的所有变量和(crash=1 and crash=0)列之间的关系。这是我的代码,但它仍然无效:

for i in train.columns:
    i_1 = train[i][train["crash"] == 1]
    i_0 = train[i][train["crash"] == 0]

    fig = plt.figure(figsize=(5, 10)) 
    fig.add_subplot(1, 2, 2)
    ax1 = fig.add_subplot(1,1,1)
    ax2 = fig.add_subplot(1,2,2)
    ax1.plot(train[i], i_1)
    ax2.plot(train[i], i_0)
    plt.show()

因此,图1有两个图表。图1是具有count的车辆的crash=1,而图2是具有count的车辆的crash=0。图2,图1是countcrash=1的性别,而图2是与count性别的crash=0。等等......总共(在这种情况下)有4个数字。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要使用聚合来获取计数指标。

以下示例可帮助您入门:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

train = pd.DataFrame({'vehicle': ['car', 'truck', 'bus', 'car', 'bus' ], 
                   'sex': ['male','male','male','female','female'],
                   'income': ['60000', '50000', '65000', '70000', '60000'],
                   'age': [31,25,67,90,18],
                   'crash' : [1,0,0,0,1]
})

for i in train.columns:
    if i == 'crash':
        continue

    table = pd.pivot_table(train[[i, 'crash']], index=[i], aggfunc=np.sum)
    table.plot.bar()