λ±κ³΅κ° μκ³μ΄μ μ»κΈ° μν΄ (κ³ κΈ) λΉλ±κ° μκ³μ΄μ 보κ°νκ³ μΆμ΅λλ€.
νμ¬ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ νκ³ μμ΅λλ€.
λ κ°λ¨ν λ°©λ²μ΄ μμ΅λκΉ? matlabμμμ κ°μ΄ μλ μκ³μ΄μ΄ μκ³ μνλ μκ°μ κ°μ μμ νκΈ° μν΄ interpolate() ν¨μμ 맀κ°λ³μλ‘ μ μκ°μ μ λ¬ν©λλ€. μ΄μμ μΌλ‘λ λ€μκ³Ό κ°μ κΈ°λ₯μ κ°κ³ μΆμ΅λλ€.
origTimeSeries.interpolate(newIndex=newTimeIndex, method='spline')
μλ μκ³μ΄μ μκ°μ μνλ μκ³μ΄ μκ°μ νμ μ§ν©μ΄ μλ μ μμ΅λλ€.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
values = [271238, 329285, 50, 260260, 263711]
timestamps = pd.to_datetime(['2015-01-04 08:29:4',
'2015-01-04 08:37:05',
'2015-01-04 08:41:07',
'2015-01-04 08:43:05',
'2015-01-04 08:49:05'])
ts = pd.Series(values, index=timestamps)
ts
ts[ts==-1] = np.nan
newFreq=ts.resample('60S').asfreq()
new=pd.concat([ts,newFreq]).sort_index()
new=new.interpolate(method='time')
ts.plot(marker='o')
new.plot(marker='+',markersize=15)
new[newFreq.index].plot(marker='.')
lines, labels = plt.gca().get_legend_handles_labels()
labels = ['original values (nonequispaced)', 'original + interpolated at new frequency (nonequispaced)', 'interpolated values without original values (equispaced!)']
plt.legend(lines, labels, loc='best')
plt.show()
concat λ° sort λμ ordered_mergeλ₯Ό μ¬μ©νμμμ€.
http://pandas.pydata.org/pandas-docs/stable/merging.html#merging -ordered-data
λ³ν©λ μκ³μ΄μ΄ μ€μ λ‘ νμνμ§ μκ³ κ²°κ³Όμ μΌλ‘ λ±κ°κ²© μκ³μ΄λ§ νμνλ―λ‘ λ³ν©ν νμ μμ΄ μμ ν μννλ κ²μ΄ μ’μ΅λλ€. λ΄κ° μ€λͺ ν λ°©μ(ordered_mergeλ‘ ν₯μλ¨)μ΄ κ°μ₯ ν¨μ¨μ μΈ λ°©λ²μ λκΉ? μλ§λ 맀μ΄λ§μ μ§μ μ¬μ©νλ κ²μ΄ λ λμ κ²μ λλ€.
http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/interpolate.html#d -interpolation-interp1d
scipyλ₯Ό μ¬μ©νλ©΄ Matlab μ€νμΌλ‘ μννκ³ μλ μκ³μ΄μ μ μ§νλ©° μ μΈλ±μ€λ₯Ό μ λ¬νμ¬ μ μκ³μ΄μ μ»μ μ μμ΅λλ€.
λν μλ μκ³μ΄μ΄ μ»€μ§ μ μλλ‘ μ¨λΌμΈ λ°μ΄ν°λ₯Ό μμ ν κ²μ΄λ©° μ λ°μ΄ν°λ₯Ό 보κ°νκ³ λ³΄κ°λ(λ±κ°κ²©) μκ³μ΄μ μΆκ°ν΄μΌ ν©λλ€.
μ΄κ²μ λΉμ μ κ½€ κ°κΉκ² λ§λλλ€
In [42]: ts.reindex(ts.resample('60s').asfreq().index, method='nearest', tolerance=pd.Timedelta('60s')).interpolate('time')
Out[42]:
2015-01-04 08:29:00 271238.000000
2015-01-04 08:30:00 271238.000000
2015-01-04 08:31:00 279530.428571
2015-01-04 08:32:00 287822.857143
2015-01-04 08:33:00 296115.285714
2015-01-04 08:34:00 304407.714286
2015-01-04 08:35:00 312700.142857
2015-01-04 08:36:00 320992.571429
2015-01-04 08:37:00 329285.000000
2015-01-04 08:38:00 329285.000000
2015-01-04 08:39:00 219540.000000
2015-01-04 08:40:00 109795.000000
2015-01-04 08:41:00 50.000000
2015-01-04 08:42:00 50.000000
2015-01-04 08:43:00 260260.000000
2015-01-04 08:44:00 260260.000000
2015-01-04 08:45:00 260950.200000
2015-01-04 08:46:00 261640.400000
2015-01-04 08:47:00 262330.600000
2015-01-04 08:48:00 263020.800000
2015-01-04 08:49:00 263711.000000
Freq: 60S, dtype: float64
κ°μ₯ μ μ©ν λκΈ
μ΄κ²μ λΉμ μ κ½€ κ°κΉκ² λ§λλλ€