I have a .csv file with voltage data, when I plot the data with time I can see that it is a sinusoidal wave with 60hz frequency.

Now when I try to perform fft using the scipy/numpy fft modules, I get a spike at near 0 frequency while logically it should be at 60. (shown below)

When I tried it with a sin wave created in python I get proper results but I'm not getting it with my actual data.
I'm sharing my code below, please let me know if I am doing something wrong. Thanks in advance.
import csv
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
from scipy.fftpack import fft
from scipy.fftpack import fftfreq
df = pd.read_csv('Va_data.csv')
print(df.head())
N = df.shape[0]
frequency = np.linspace(0.0,100, int(N/2))
freq_data = fft(df['Va'])
y = (2/N)*np.abs(freq_data[0:np.int(N/2)])
plt.plot(frequency, y)
plt.title('Frequency Domain Signal')
plt.xlabel('Frequency in Hz')
plt.ylabel('Amplitude')
plt.show()
