如何解析文件并创建数据帧

时间:2016-09-30 08:55:54

标签: python pandas

我有一个定制格式的文本文件。我还有一个解析器,从每行提取相关列。我想一次在文件中读取一行并将它们添加到数据帧中。

问题是向数据帧追加一行的速度很慢。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

如果文件很大,您的代码可能会受到从磁盘读取文件的时间的限制,而不是向数据帧添加行的时间,除非您有一些具体的分析数据来建议。例如,在SSD(读取吞吐量~400MB / s)上,4GB文件只需10秒即可从磁盘加载。在HDD(~40MB / s)上,这可能会达到100秒。如果是这种情况,加速加载的一种方法是将文件转换为pandas支持的格式,压缩它,然后使用read_table()的运行时de - compression选项将其解压缩创建数据帧时的飞行。

否则,如果您确定这不是问题,那么您有这些选项,如果逐个添加不正常且文件太大而无法在内存中缓冲:

  1. 更改您的数据格式以匹配Pandas支持的内容;例如CSV文件似乎是一个非常标准的选项;
  2. 使用下面列出的其他构造函数之一来创建更大批量的数据帧(例如1-10K行),然后合并它们,这可能比逐个添加条目更快,同时使用恒定的内存量;
  3. 从数据结构中

    The other ways to construct a dataframe将文件解压缩到:

      来自元组的

    DataFrame.from_records构造函数,也记录   数组

         

    DataFrame.from_dict来自系列,数组或双语的序列

         来自(键,值)对序列的

    DataFrame.from_items

         

    pandas.read_csvpandas.read_tablepandas.read_clipboard