【问题标题】:Extrapolate data from csv using Python使用 Python 从 csv 中推断数据
【发布时间】:2021-08-24 17:29:03
【问题描述】:

我有一个包含几行和几列数据的 csv 文件。现在,如果输入值在 csv 中不匹配,我打算推断或插入新数据。

让我如下描述我的 csv。

type,depth,io,mux,enr
perf,1024,32,4,103.8175
perf,1024,64,4,85.643125
perf,1024,128,4,76.5559375
perf,1024,256,4,72.01246094
dense,1024,32,4,107.391875
dense,1024,64,4,88.99640625
dense,1024,128,4,79.79851563
dense,1024,256,4,75.19976563

如果输入与 csv 中存在的深度或 io 值不匹配。我想在外推/插值后生成输出。

为此,我需要从列构建一个数组。

是否有存储此 csv 中的一列或将 csv 存储为列表并从那里存储?

我尝试了以下方法。

import os
import pandas as pd

this_dir, this_filename = os.path.split(__file__)
memory_file_path = os.path.join(this_dir, 'memory.csv')
memData = pd.read_csv(memory_file_path, delimiter= ',',)

class InvecasMem:
    def csvImport(self,depth,io):

        csvmem = memData.loc[(memData["type"] == "perf")
                 & (memData['depth'] == depth)
                 & (memData['io'] == io)]

        if len(csvmem) == 0:
            print("Error: Wrong configuration")
            memArr = memData.loc[(memData["type"] == "perf")]
            l = [list(row) for row in memArr.values]
            x=len(l)
        return l

但是,我无法将列存储到数组中?

另外,在这种情况下,是否可以从多个输入中产生外推值?

提前致谢。

编辑:io = [32,64,128,256,32,64,128,256] 中的所需输出 而我要计算深度 = 512 和 io = 256

【问题讨论】:

  • 是的,可以推断。您可以拟合回归量,例如使用sklearn.
  • 你能发布想要的输出吗?
  • 对于插值,scipy 可以完成这项工作

标签: python pandas csv


【解决方案1】:

要进行插值,我将从加载数据开始

import pandas
import numpy
from io import StringIO # https://stackoverflow.com/a/43312861/1164295

myfile="""type,depth,io,mux,enr
perf,1024,32,4,103.8175
perf,1024,64,4,85.643125
perf,1024,128,4,76.5559375
perf,1024,256,4,72.01246094
dense,1024,32,4,107.391875
dense,1024,64,4,88.99640625
dense,1024,128,4,79.79851563
dense,1024,256,4,75.19976563"""

df = pandas.read_csv(StringIO(myfile))

然后插入一个 Nan:

df.at[4,'enr'] = numpy.nan

现在我们可以使用interpolate 方法

df.interpolate()

interpolation section of the Pandas guide to missing data

【讨论】:

  • 嗨,我尝试了您的解决方案,但插值后我得到以下输出。 /home/saikatchatrg/tmp/memory.csv enr 4 NaN NaN 在这里我不明白如何提供 csv 中不可用的输入。
  • 我没有足够的上下文来理解您所看到的具体问题。你问如何插入一个新行?此外,插值的想法依赖于与新(缺失)条目相关的相邻值。
  • myfile 中的数据存储到 csv 中。现在我的意图是查看这个 csv 并获取特定组合的“enr”值。找不到时,将被插值。
猜你喜欢
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多