【问题标题】:Pandas : interpolate a dataframe and replace valuesPandas:插入数据框并替换值
【发布时间】:2023-03-19 21:31:01
【问题描述】:

对于数据帧的每一列,我使用 pandas 函数“interpolate”进行了插值,我试图用插值曲线的值(excel 上的趋势曲线)替换数据帧的值。

我有以下数据框,名为 data

        0      1
0   0.000  0.002
1   0.001  0.002
2   0.001  0.003
3   0.003  0.004
4   0.003  0.005
5   0.003  0.005
6   0.004  0.006
7   0.005  0.006
8   0.006  0.007
9   0.006  0.007
10  0.007  0.008
11  0.007  0.009
12  0.008  0.010
13  0.008  0.010
14  0.010  0.012

然后我做了以下代码:

for i in range(len(data.columns)):
    data[i].interpolate(method="polynomial",order=2,inplace=True)

我认为 inplace 会替换值,但它似乎不起作用。有人知道怎么做吗?

谢谢,祝你有美好的一天:)

【问题讨论】:

    标签: python python-3.x pandas interpolation curve


    【解决方案1】:

    试试这个,

    import pandas as pd
    import numpy as np
    

    我创建了一个包含一些疯狂值的迷你文本文件,以便您了解插值是如何工作的。

    文件看起来像这样,

    0,1
    0.0,.002
    0.001,.3
    NaN,NaN
    4.003,NaN
    .004,19
    .005,234
    NaN,444
    1,777 
    

    这是导入和处理数据的方法,

    df=pd.read_csv('datafile.txt, header=0)
    
    for column in df:
      df[column].interpolate(method="polynomial",order=2,inplace=True)
    
    print(df.head())
    

    数据框现在看起来像这样,

           0           1
    0  0.000000    0.002000
    1  0.001000    0.300000
    2  2.943616  -30.768123
    3  4.003000  -70.313176
    4  0.004000   19.000000
    5  0.005000  234.000000
    6  0.616931  444.000000
    7  1.000000  777.000000
    

    另外, 如果您的意思是要在数据框中的点之间进行插值,那就不同了。

    应该是这样的,

    df1 = df.reindex(df.index.union(np.linspace(.11,.25,8)))
    df1.interpolate('index')
    

    结果看起来像,

        0        1
    0.00  0.00000  0.00200
    0.11  0.00011  0.03478
    0.13  0.00013  0.04074
    0.15  0.00015  0.04670
    0.17  0.00017  0.05266
    0.19  0.00019  0.05862
    0.21  0.00021  0.06458
    0.23  0.00023  0.07054
    0.25  0.00025  0.07650
    1.00  0.00100  0.30000
    

    【讨论】:

    • 在我的情况下,列名是 int !它似乎没有更好的工作。你在哪里使用 numpy?
    • 我的列名也是整数。我告诉 Pandas read_csv,标题是第 0 行的列名,标题 = 0。我进行了编辑以显示输出数据,我还删除了导入 numpy,因为它是需要的。
    【解决方案2】:

    它实际上与 scipy.interpolate.UnivariateSpline 一起工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多