【解决方法】Panda read_csv()把第一行的数据变成了列名,怎么处理

前言

有些时候,我们会遇到很多这样的数据,比如,这个csv的第一行并不是我们想象中的那样是一个列名。那样,我们处理数据的时候,就会出现问题,第一个不一致了嘛。

解决方案

调用csv库,自己重新编写读文件的程序。

csv库,是python自带的库。

如果数据都是字符类型

这样的条件下,问题是非常简单,直接调用csv.reader()这个迭代器来读取就好了。

如果数据中除了有字符串还有数字的话

下面我给一种解决的方法。

def float_test(data: str):
    try:
        return float(data)
    except Exception:
        return data


def read(filename):
    """
    :param filename:
    :return:
    """
    values = []
    with open(filename) as f:
        r = csv.reader(f)
        for row in r:
            values.append(list(map(float_test, row)))
    *data, label = list(map(list, zip(*values)))
    return list(zip(*data)), label

这个涉及到了之前的我写过的一篇文章机器学习算法【感知机算法PLA】【5分钟读完】
在上面的这个代码中,我需要读取训练感知机的模型,但是发现给我的数据没有列名,不想要改数据,所以,就只有这么先封装咯~
这个数据中,每一行的除了最后一列有可能是元素之外,其他都是浮点数。,所以,我就在这调用了float_test这个函数,来做测试。

最后两行,还有返回的那里是在做什么呢?其实就是,我想把最后一列给分出来,然后把其他恢复为一个二维的矩阵,每一行都是一个测试的X。

重点在在上面的with部分代码

~自己在网上找了好久都没有找到解答,很生气。也不知道是不是我还没找到对应的参数,是不是pandas没加还是怎么着?头疼!如果有大神碰巧看到这篇文章还望不吝赐教~

猜你喜欢

转载自blog.csdn.net/a19990412/article/details/80030142
今日推荐