数据帧的线性近似

时间:2016-07-09 03:02:14

标签: python pandas

Block DF
0     1.2
1     2.3
4     4.2
5     5.6
6     4.3
10    2.2

如何找出线性约。第7组的价值DF

(7,???)

使用最近的两个数据点

(6, 4.3) 
(10, 2.2)? 

如何实现找到最近的两个数据点?

2 个答案:

答案 0 :(得分:1)

您可以使用numpy.interp函数查找插值:

import numpy as np
np.interp(7, df.block, df.DF)
# >>> 3.775

更多信息here

您还可以使用interp1d包中的scipy.interpolate

from scipy.interpolation import interp1d
f = interp1d(df.block, df.DF)
xnew = np.linspace(0, 10, num=11, endpoint=True)
zip(xnew, f(xnew))
# [(0.0, 1.2),
# (1.0, 2.2999999999999998),
# (2.0, 2.9333333333333331),
# (3.0, 3.5666666666666664),
# (4.0, 4.2000000000000002),
# (5.0, 5.5999999999999996),
# (6.0, 4.2999999999999998),
# (7.0, 3.7749999999999999),
# (8.0, 3.25),
# (9.0, 2.7250000000000001),
# (10.0, 2.2000000000000002)]

答案 1 :(得分:1)

我看到了标签' pandas'在这个问题上,我试图将Pandas用于此实现。看看代码:

<style>
ul {
list-style-type: none;
}

li {
float: right;
}

li a {
display: block;
text-align: center;
padding: 14px 16px;
}

</style>

<header>
    <a style="float:left" id="logo" href="#">Logo</a>
    <nav >
         <ul >

            <li><a id="aboutus" href="#">About Us</a></li>
            <li><a id="login" href="#">Log In</a></li>
        </ul>
    </nav>
</header>

输出应为:

0 1.200000    1 2.300000    2 2.933333    3 3.566667    4 4.200000    5 5.600000    6 4.300000    7 3.775000    8 3.250000    9 2.725000    10 2.200000    dtype:float64