Pandas :插入数据帧并替换值
Pandas : interpolate a dataframe and replace values
对于数据框的每一列,我使用 pandas 函数 "interpolate" 进行了插值,我试图用插值曲线的值替换数据框的值(趋势曲线在excel)。
我有以下数据框,名为数据
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 会替换值,但它似乎不起作用。有人知道怎么做吗?
谢谢,祝你有美好的一天:)
试试这个,
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
它实际上与 scipy.interpolate.UnivariateSpline
一起工作
对于数据框的每一列,我使用 pandas 函数 "interpolate" 进行了插值,我试图用插值曲线的值替换数据框的值(趋势曲线在excel)。
我有以下数据框,名为数据
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 会替换值,但它似乎不起作用。有人知道怎么做吗?
谢谢,祝你有美好的一天:)
试试这个,
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
它实际上与 scipy.interpolate.UnivariateSpline
一起工作