从 .csv 文件读取值并将其转换为浮点数组

2024-04-25

我偶然发现了一个小编码问题。我基本上必须从 .csv 文件中读取数据,该文件看起来很像这样:

2011-06-19 17:29:00.000,72,44,56,0.4772,0.3286,0.8497,31.3587,0.3235,0.9147,28.5751,0.3872,0.2803,0,0.2601,0.2073,0.1172,0,0.0,0,5.8922,1,0,0,0,1.2759

现在,我基本上需要一个由这样的行组成的整个文件,并将它们解析为 numpy 数组。到目前为止,我已经能够使用类似于以下的代码将它们放入一个大字符串类型对象中:

order_hist = np.loadtxt(filename_input,delimiter=',',dtype={'names': ('Year', 'Mon', 'Day', 'Stock', 'Action', 'Amount'), 'formats': ('i4', 'i4', 'i4', 'S10', 'S10', 'i4')})

到目前为止,该文件的格式由一组 S20 数据类型组成。我基本上需要将大 ORDER_HIST 数据类型中的所有数据提取到每列的一组数组中。我不知道如何保存日期时间列(我现在将其保留为字符串)。我需要将其余部分转换为浮点数,但下面的代码给了我一个错误:

    temparr=float[:len(order_hist)]
    for x in range(len(order_hist['Stock'])): 
        temparr[x]=float(order_hist['Stock'][x]);

有人可以告诉我如何将所有列转换为我需要的数组吗???或者可能引导我到一些链接来这样做?


男孩,我有请你吃吗?numpy.genfromtxt http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html has a converters参数,它允许您在解析文件时为每一列指定一个函数。该函数接收 CSV 字符串值。它的返回值成为numpy数组中的对应值。

而且,dtype = None参数告诉genfromtxt对每列的类型做出明智的猜测。特别是,数字列会自动转换为适当的数据类型。

例如,假设您的数据文件包含

2011-06-19 17:29:00.000,72,44,56

Then

import numpy as np
import datetime as DT

def make_date(datestr):
    return DT.datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S.%f')

arr = np.genfromtxt(filename, delimiter = ',',
                    converters = {'Date':make_date},
                    names =  ('Date', 'Stock', 'Action', 'Amount'),
                    dtype = None)
print(arr)
print(arr.dtype)

yields

(datetime.datetime(2011, 6, 19, 17, 29), 72, 44, 56)
[('Date', '|O4'), ('Stock', '<i4'), ('Action', '<i4'), ('Amount', '<i4')]

您的真实 csv 文件有更多列,因此您需要向其中添加更多项目names,但除此之外,该示例仍然有效。

如果你并不真正关心额外的列,你可以指定一个像这样的绒毛名称:

arr = np.genfromtxt(filename, delimiter=',',
                    converters={'Date': make_date},
                    names=('Date', 'Stock', 'Action', 'Amount') +
                    tuple('col{i}'.format(i=i) for i in range(22)),
                    dtype = None)

yields

(datetime.datetime(2011, 6, 19, 17, 29), 72, 44, 56, 0.4772, 0.3286, 0.8497, 31.3587, 0.3235, 0.9147, 28.5751, 0.3872, 0.2803, 0, 0.2601, 0.2073, 0.1172, 0, 0.0, 0, 5.8922, 1, 0, 0, 0, 1.2759)

您可能还有兴趣查看pandas http://pandas.pydata.org/模块是建立在numpy,这将解析 CSV 提升到了一个更高的水平:它有一个pandas.read_csv http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html函数其parse_dates = True参数将自动解析日期字符串(使用dateutil http://labix.org/python-dateutil#head-c0e81a473b647dfa787dc11e8c69557ec2c3ecd2).

使用 pandas,您的 csv 可以解析为

df = pd.read_csv(filename, parse_dates = [0,1], header = None,
                    names=('Date', 'Stock', 'Action', 'Amount') +
                    tuple('col{i}'.format(i=i) for i in range(22)))

注意不需要指定make_date功能. Just to be clear --pandas.read_csvreturns aDataFrame,而不是 numpy 数组。这DataFrame实际上可能对您的目的更有用,但您应该意识到它是一个不同的对象,具有可供利用和探索的全新方法世界。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 .csv 文件读取值并将其转换为浮点数组 的相关文章

随机推荐

  • 获取 jQuery 中的“translateX”位置

    此代码设置 translateX 位置 var pos 500px slide css webkit transform translateX pos px 但是 以下代码没有获取translateX位置 var currTrans sli
  • 将 D3 svg 保存为高质量图像

    有没有办法将 D3 SVG 图像保存为高质量图像 如果是的话请解释一下 截至目前 我正在使用以下代码将 svg 保存为图像 但我得到的图像质量不高 var canvas1 document createElement canvas canv
  • 如何使用 matplotlib 绘制与比例无关的箭头

    我使用 matplotlib 在 python 中绘制了一条船的轨迹图 如下所示 现在我想添加一些箭头 例如风向 真实航向等 但是 无论绘图处于哪个缩放级别 我都希望箭头具有相同的大小 我尝试了 matplotlib pyplot arro
  • 在asp.net MVC中不使用LabelFor Helper获取DisplayName属性

    检索模型中项目的显示名称属性的最佳方法是什么 我看到很多人使用 LabelFor 助手来处理所有事情 但如果我只想列出数据 则标签不合适 如果我只想将其打印出来 比如说一个段落 是否有一种简单的方法可以获取名称属性 p p p 显然 为了避
  • 从 Xcode 分发时分析应用程序版本时出现什么错误?

    我想分发应用程序 但收到错误消息 我不知道原因 我使用 Xcode 版本 13 0 13A233 遇到错误 Error Analyzing App Version Build number request failed with error
  • 适用于 Hotmail、Gmail 和 Yahoo 的 PHP API? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 C# 中调整图像大小并保持宽高比

    我需要知道一种方法来调整图像大小以适合盒子 而不会使图像拉伸太多 该框已设置宽度和高度 我希望图像尽可能多地填充框 但保持其原始的纵横比 calculate the ratio double dbl double image Width d
  • cronjob 上的 PHP 错误,在提示时工作正常

    我正在 cronjob 上运行以下脚本 cd etc parselog php run all php gt dev null 并收到以下错误 05 May 2009 20 30 12 PHP Warning PHP Startup Una
  • 如何仅使用 CSS 制作图像轮播?

    我正在寻找制作一个图像轮播 用户可以通过单击箭头在图像之间切换 例如 但是 我只能使用 HTML 和 CSS 不能使用 JavaScript 因此也不能使用 jQuery 我只需要基本设置 平滑过渡等不是必需的 我怎样才能做到这一点 这很容
  • 无效参数:隔离消息中的非法参数:(对象是aReceivePort)

    我不确定我在这段代码中是否做错了什么 但我在生成新隔离时显然传递了 SendPort 但是当我调用时 Infrastructure instance initialize 我收到以下异常 Invalid argument s Illegal
  • int q = {1,2};特殊的初始化列表

    我遇到了下面的初始化 可以看出VS2012 显示一个错误 抱怨初始化程序太多 在海湾合作委员会看来 返回第一个元素作为值 为什么 GCC 支持这种特殊的初始化 include
  • Git 日志仅获取特定分支的提交

    我想列出仅属于特定分支的所有提交 通过以下内容 它列出了来自分支的所有提交 也列出了来自父级 主 的所有提交 git log mybranch 我发现的另一个选项是排除 master 可到达的提交并给我我想要的东西 但我想避免需要知道其他分
  • 如何交换“NSMutableDictionary”键和值?

    我有一个NSMutableDictionary我想交换值和键 即 交换值后成为键 并且其对应的键成为值 所有键和值都是唯一的 寻找就地解决方案 因为尺寸非常大 此外 键和值是NSString物体 NSMutableDictionary d
  • C# 中“dynamic”和“object”关键字有什么区别? [复制]

    这个问题在这里已经有答案了 谁能简单解释一下 C 中 dynamic 和 object 关键字之间的区别 object 让我们先快速浏览一下 object 关键字 我不会谈论太多 因为它从 C 1 0 就已经存在了 该关键字只不过是 Sys
  • 如何检查单个精灵帧期间的重叠情况?并在玩家与帧重叠的每个循环中仅从玩家生命值中减去 1?

    我有一个尖峰精灵 其循环中有 4 个帧 当玩家与尖峰精灵的第三帧重叠时 我想从健康变量中减去 1 目前 on 函数无法正确加载 我的游戏可以运行 但重叠功能根本无法运行 我编辑了收到的代码 并删除了我认为不需要的方面 测试了原始代码示例以检
  • Pygame 弹力球穿过地板下沉

    下面的代码会弹起一个球 但由于某种原因 球在完成弹跳后会穿过地面 有人知道为什么吗 代码的想法是一个球从左上角开始 然后下落并弹起 然后向上和向下移动 依此类推 直到它停止弹跳 但是当它停止弹跳时 它开始抖动并慢慢下沉到地面 我不知道为什么
  • 如何删除已发布的 wmi 架构?

    我已经发布了架构 并且不再拥有包含发布该架构的 wmi 提供程序的 dll 如何删除架构 如果您正在谈论其他问题中的程序集 您可以简单地使用 wbemtest exe 连接到根命名空间 枚举实例 按钮 超类 名称 命名空间 删除名为 Tes
  • Visual Studio 2013 Shell(独立)安装失败并出现错误 997:重叠 I/O 操作正在进行

    我正在尝试在 Windows 7 Pro 计算机上安装 Visual Studio 2013 Express for Desktop 我已经下载了 ISO 文件并在本地运行它 我运行安装程序并收到有关未安装某些先决条件 其中之一是 C 运行
  • 局部变量隐藏字段是什么意思?

    所以这只是我代码的一部分 整个程序编译并运行 但我不断在以 GameBoard myBoard this getGameBoard 开头的三行旁边看到 局部变量隐藏字段 我 我只是好奇这实际上意味着什么 以及从长远来看它是否对我的程序有任何
  • 从 .csv 文件读取值并将其转换为浮点数组

    我偶然发现了一个小编码问题 我基本上必须从 csv 文件中读取数据 该文件看起来很像这样 2011 06 19 17 29 00 000 72 44 56 0 4772 0 3286 0 8497 31 3587 0 3235 0 9147