用Pandas绘制多个不同大小的列

时间:2018-09-27 19:23:41

标签: python pandas

我刚接触Pandas,但是通常我要处理数据(当所有列大小相等时),我先建立np.zeros(count)矩阵,然后使用for循环从文本中填充数据文件(np.genfromtxt())在matplotlib中进行绘图和分析。

但是,我现在正在尝试通过CSV文件在同一图上对不同大小的列进行类似的分析。

例如:

data.csv:

A  B  C  D  E  F 

1  2  3  4  5  6 

2 3 4 5 6 7

3 4 5 6

4 5


df = pandas.read_csv('data.csv')

ax = df.plot(x = 'A', y = 'B')

df.plot(x = 'C', y = 'D', ax = ax)

df.plot(x = 'E', y = 'F', ax = ax)

此代码在同一张图上绘制了前两个图,但是其余信息丢失了(还有很多不匹配大小的列,但是我要绘制的x / y列都大小相同)

是否有更简单的方法来完成所有这些工作?谢谢!

1 个答案:

答案 0 :(得分:0)

以下是您可以概括解决方案的方法:

我编辑了答案以添加错误处理。如果最后一列很孤单,它仍然可以使用。

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

data = {
    'A' : [1, 2, 3, 4],
    'B' : [2, 3, 4, 5],
    'C' : [3, 4, 5, np.nan],
    'D' : [4, 5, 6, np.nan],
    'E' : [5, 6, np.nan, np.nan],
    'F' : [6, 7, np.nan, np.nan]
}

df = pd.DataFrame(data)

def Chris(df):
    ax = df.plot(x='A', y='B')
    df.plot(x='C', y='D', ax=ax)
    df.plot(x='E', y='F', ax=ax)
    plt.show()

def IMCoins(df):
    fig, ax = plt.subplots()

    try:
        for idx in range(0, df.shape[1], 2):
            df.plot(x = df.columns[idx],
                    y = df.columns[idx + 1],
                    ax= ax)
    except IndexError:
        print('Index Error: Log the error.')

    plt.show()

Chris(df)
IMCoins(df)