Linear Interpolation is the method of deciding the upsides of the elements of any moderate focuses when the upsides of two nearby focuses are known. Direct addition is fundamentally the assessment of an obscure worth that falls inside two known qualities. Direct Interpolation is utilized in different disciplines like factual, financial aspects, value assurance, and so on It is utilized to fill the holes in the measurable information for the coherence of data.

To introduce worth of ward variable y sooner or later of autonomous variable x utilizing Linear Interpolation, we take two focuses for example in the event that we really want to interject y compared to x which lies somewhere in the range of x0 and x1 then we take two focuses [x0, y0] and [x1, y1] and builds Linear Interpolants which is the straight line between these focuses for example;

## How to implement linear interpolation in Python?

By utilizing the accompanying recipe we can Linearly insert the given element

Straight Interpolation : y(x) = y1 + (x – x1) \frac{(y2 – y1) }{ (x2 – x1)}

Here (x1, y1) are the directions of the principal important item. What’s more (x2,y2) are directions of the subsequent informative item, where x is the point on which we perform insertion and y is the added esteem.

### Model Problem:

We should take a model for a better agreement. We have the accompanying information esteems where x signifies the number and y is the capacity of the square base of x. Our assignment is to track down the square foundation of 5.5 (x).

x |
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|

y ( f(x) = √x ) |
1 | 1.4142 | 1.7320 | 2 | 2.2360 | 2.4494 |

We can use the Linear Interpolation method here.

1. Find the two adjacent (x1, y1) ,(x2,y2) from the x. i.e. (5,2.2360) and (6,2.4494).

Where x1 = 5, x2= 6, y1 = 2.2360, y2 = 2.4494, and we interpolate at point x = 5.5.

2. Using the formula y(x) = y1 + (x – x1) \frac{(y2 – y1) }{ (x2 – x1)}

3. After putting the values in the above equation.

y = 2.3427

At x = 5.5 the value of Y will be **2.3427. **So by using linear interpolation we can easily determine the value of a function between two intervals.

**Approach 1:**

**Using the formula **

**Example: **Suppose we have a dataset of the population of a city and the year.

X(Year) | 2016 | 2017 | 2018 | 2019 | 2021 |
---|---|---|---|---|---|

Y(Population) | 10001 | 12345 | 74851 | 12124 | 5700 |

Here, X is the year and Y is the population in any city. Our task to find the population of the city in the year **2020.**

We choose our (x1, y1) ,(x2,y2) as x1=2019 , y1=12124, x2=2021, y2=5700, x = 2020, y = ?

Here (x1, y1) and (x2, y2) are two adjacent points and x is the year for which we want to predict the value of the y population.

- Python3

`# Python3 code` `# Implementing Linear interpolation` `# Creating Function to calculate the` `# linear interpolation` ` ` `def` `interpolation(d, x):` ` ` `output ` `=` `d[` `0` `][` `1` `] ` `+` `(x ` `-` `d[` `0` `][` `0` `]) ` `*` `((d[` `1` `][` `1` `] ` `-` `d[` `0` `][` `1` `])` `/` `(d[` `1` `][` `0` `] ` `-` `d[` `0` `][` `0` `]))` ` ` ` ` `return` `output` ` ` `# Driver Code` `data` `=` `[[` `2019` `, ` `12124` `],[` `2021` `, ` `5700` `]]` ` ` `year_x` `=` `2020` ` ` `# Finding the interpolation` `print` `(` `"Population on year {} is"` `.` `format` `(year_x),` ` ` `interpolation(data, year_x))` |

**Output**

Population on year 2020 is 8912.0

**Approach 2:**

**Using scipy.interpolate.interp1d**

Similarly, we can achieve linear interpolation using a scipy library function called **interpolate.interp1d.**

**Syntax** : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)

Sr. no. | Parameters |
Description |
---|---|---|

1. | x | A 1-D array of real values. |

2. | y | A N-D array of real values. |

3. | kind | i.e. kind of interpolation do you want it can be ‘linear’, ‘nearest’, ‘nearest-up’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, or ‘next’. ‘zero’, ‘slinear’, ‘quadratic’ and ‘cubic’, by defaults it is linear. |

4. | axis | Specifies the axis of y along which which we interpolate. |

5. | copy | It holds boolean values if True, the class makes internal copies of x and y . |

6. | bounds_error | It holds boolean values If True, a ValueError is raised when interpolation is attempted on a value outside the range of x. |

**Example:**

Let’s have a random dataset :

X = [1,2,3,4,5], Y = [11,2.2,3.5,-88,1], and we want to find the value of Y at point 2.5.

- Python3

`# Implementation of Linear Interpolation using Python3 code` `# Importing library` `from` `scipy.interpolate ` `import` `interp1d` ` ` `X ` `=` `[` `1` `,` `2` `,` `3` `,` `4` `,` `5` `] ` `# random x values` `Y ` `=` `[` `11` `,` `2.2` `,` `3.5` `,` `-` `88` `,` `1` `] ` `# random y values` ` ` `# test value` `interpolate_x ` `=` `2.5` ` ` `# Finding the interpolation` `y_interp ` `=` `interp1d(X, Y)` `print` `(` `"Value of Y at x = {} is"` `.` `format` `(interpolate_x),` ` ` `y_interp(interpolate_x))` |

**Output**

Value of y at x = 2.5 is 2.85

**Also Read**: **How to add one row in an existing Pandas DataFrame?**