gpt4 book ai didi

python - 如何使用 genfromtxt 加载包含字符串和数字的 csv 文件?

转载 作者:行者123 更新时间:2023-12-04 02:53:34 26 4
gpt4 key购买 nike

我正在尝试在 NumPy 数组中加载 csv 文件以用于机器学习目的。到目前为止,我一直使用 int 或 float 数据,但我当前的 csv 包含 string、float 和 int,所以我在使用 dtype 参数时遇到了一些麻烦。我的数据集有 41188 个样本和 8 个特征,例如:

47;"university.degree";"yes";176;1;93.994;-36.4;4.857;"no"

我知道如果我指定 dtype=None 类型将由每列的内容确定:
data = np.genfromtxt(filename, dtype=None, delimiter=";", skip_header=1)

但它显然不起作用。首先, genfromtxt 的结果是一个具有以下形状的 numpy ndarray:
In [2]: data.shape
Out[2]: (41188,)

虽然我期待 (41188,8)

相反,如果我使用默认的 dtype:
data2 = np.genfromtxt(filename, delimiter=";", skip_header=1)

我获得以下数据形状:
In [4]: data2.shape
Out[4]: (41188,8)

其次,使用 dtype=None 我获得以下弃用警告:
VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.

我可以通过使用来修复(是否正确?):
encoding='ASCII'

我有两个问题:
  • 如何设置每列的正确类型?
  • 为什么我必须设置编码?
  • 最佳答案

    带有 2 个样本线副本:

    In [140]: data = np.genfromtxt(txt, dtype=None, delimiter=';', encoding=None)
    In [141]: data
    Out[141]:
    array([(47, '"university.degree"', '"yes"', 176, 1, 93.994, -36.4, 4.857, '"no"'),
    (47, '"university.degree"', '"yes"', 176, 1, 93.994, -36.4, 4.857, '"no"')],
    dtype=[('f0', '<i8'), ('f1', '<U19'), ('f2', '<U5'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<f8'), ('f6', '<f8'), ('f7', '<f8'), ('f8', '<U4')])
    In [142]: data.shape
    Out[142]: (2,)
    In [143]: data.dtype
    Out[143]: dtype([('f0', '<i8'), ('f1', '<U19'), ('f2', '<U5'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<f8'), ('f6', '<f8'), ('f7', '<f8'), ('f8', '<U4')])

    这是一个普通的结构化数组 - data是一个具有 8 个字段的一维数组。这些字段有 dtype匹配每列共有的浮点数、整数或字符串类型。

    您可以按名称而不是列号访问字段:
    In [144]: data['f0']
    Out[144]: array([47, 47])
    In [145]: data['f1']
    Out[145]: array(['"university.degree"', '"university.degree"'], dtype='<U19')

    请注意,我包含了 encoding=None .我不完全确定何时需要这样做,但很容易包含在内。

    关于python - 如何使用 genfromtxt 加载包含字符串和数字的 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972056/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com