SWDesk
[Python] FFT, sort, subplot
bizmaker
2025. 2. 8. 12:30
[sort() 예제]
priceDataDF = priceDataDF.sort_values(by=['stck_bsop_date'], ascending=True)
priceDataList = priceDataDF.to_dict('records')
closePriceList = priceDataDF['stck_clpr'].tolist()
# closePriceList = priceDataDF['stck_clpr'].values # -> numpy 배열
[FFT 예제]
targetList1 = closePriceList[startIndex:endIndex]
targetFFT = np.fft.fft(targetList1)
ampFFT = np.abs(targetFFT)
phaseFFT = np.angle(targetFFT)
| 0 | 7.28500000e+03+0.00000000e+00j |
| 1 | 2.04144113e+01-2.03971038e+01j |
| 2 | -3.76051178e+01-4.36506351e+01j |
| 3 | 3.21923882e+01-2.67781746e+01j |
| 4 | 2.05000000e+01-2.33826859e+01j |
| 5 | 1.62825271e+01-3.64462629e+01j |
| 6 | -1.60000000e+01-1.70000000e+01j |
| 7 | -1.67991876e+01-1.05395803e+00j |
| 8 | 2.50000000e+00+6.06217783e+00j |
| 9 | 1.38076118e+01+1.12218254e+01j |
| 10 | 3.86051178e+01-3.49364905e-01j |
| 11 | 2.41022492e+01-5.78940863e+00j |
| 12 | 7.00000000e+00+1.77635684e-15j |
| 13 | 2.41022492e+01+5.78940863e+00j |
| 14 | 3.86051178e+01+3.49364905e-01j |
| 15 | 1.38076118e+01-1.12218254e+01j |
| 16 | 2.50000000e+00-6.06217783e+00j |
| 17 | -1.67991876e+01+1.05395803e+00j |
| 18 | -1.60000000e+01+1.70000000e+01j |
| 19 | 1.62825271e+01+3.64462629e+01j |
| 20 | 2.05000000e+01+2.33826859e+01j |
| 21 | 3.21923882e+01+2.67781746e+01j |
| 22 | -3.76051178e+01+4.36506351e+01j |
| 23 | 2.04144113e+01+2.03971038e+01j |
[subplot() 예제]
def ShowGraphs(self, timeData, fftData, removeIndex0=False):
plt.figure(figsize=(12, 6))
plt.subplot(2,2,1)
plt.plot(timeData)
plt.title('Time Domain Data')
if removeIndex0: fftData = fftData[1:]
ampFFT = np.abs(fftData)
phaseFFT = np.angle(fftData)
plt.subplot(2,2,3)
plt.plot(ampFFT)
plt.title('Freq. Domain - Amp.')
plt.subplot(2,2,4)
plt.plot(phaseFFT)
plt.title('Freq. Domain - Phase')
plt.tight_layout()
plt.show()

반응형