# How to compute the double difference between consecutive numbers in a Pandas Series using Python?

I want to compute the difference between consecutive numbers in a Pandas `series` and I want to do this twice that is, I want to calculate the difference again on the differences obtained. The code below will explain this problem better:

I have used `list comprehension` in this code to calculate the difference on the original `series` and then I again used the same code to calculate the difference on the differences obtained. Are there more efficient methods compared to this one?

Hi @mubashir_rizvi Your approach looks very basic, but you can make it more efficient by using `np.gradient()` method.

• The `np.gradient()` function calculates the gradient of an array, which is the difference between consecutive elements of the array, adjusted for the distance between the elements.
• When you apply it to a 1D array, `np.gradient()` uses a method of “second-order accurate central difference scheme” that is twice as precise as other methods like `np.diff()` and `diff()` to calculate the differences between each element.
• For example, if you have an array `[1, 3, 5, 8]`, the function `np.gradient()` will output an array `[2, 2, 3]` by calculating the differences between `3` and `1`, `5` and `3`, and `8` and `5`, respectively.

Hey @mubashir_rizvi , You can also achieve this by using the lambda function and “map()” method.
Define a simple lambda function that calculates the difference between two objects `x` and `y` using the `-` operator. Then apply the `map()` method to this lambda function on `series[:-1]` which contains all elements of the series except the last, and `series[1:]` which contains all elements except the first. The difference is calculated elementwise between both objects and the process is repeated to calculate the difference of differences.

Hey @mubashir_rizvi , you can use the `diff()` method that takes a list of numbers and tells you the difference between each pair of adjacent numbers. So if you had a list of `[3, 6, 9]`, the `diff()` method would give you `[3, 3]`, because `6-3=3` and `9-6=3`. Since we want to calculate the difference of differences, the `diff()` is first applied to the original series, and then applied to the result again. The first value in the final result is `NaN` because the first element of the series is `NaN` (there is no previous element to subtract from 1).