Plot smooth curves of Pandas Series data

后端 未结 3 1196
礼貌的吻别
礼貌的吻别 2020-12-18 01:03

My data is:

>>> ts = pd.TimeSeries(data,indexconv)
>>> tsgroup = ts.resample(\'t\',how=\'sum\')
>>> tsgroup
2014-11-08 10:30:00            


        
相关标签:
3条回答
  • 2020-12-18 01:33

    You can smooth out your data with moving averages as well, effectively applying a low-pass filter to your data. Pandas supports this with the rolling() method.

    0 讨论(0)
  • 2020-12-18 01:39

    Got it. With help from this question, here's what I did:

    1. Resample my tsgroup from minutes to seconds.

      \>>> tsres = tsgroup.resample('S')
      \>>> tsres
      2014-11-08 10:30:00     3
      2014-11-08 10:30:01   NaN
      2014-11-08 10:30:02   NaN
      2014-11-08 10:30:03   NaN
      ...
      2014-11-08 10:54:58   NaN
      2014-11-08 10:54:59   NaN
      2014-11-08 10:55:00     2
      Freq: S, Length: 1501
    2. Interpolate the data using .interpolate(method='cubic'). This passes the data to scipy.interpolate.interp1d and uses the cubic kind, so you need to have scipy installed (pip install scipy) 1.

      \>>> tsint = tsres.interpolate(method='cubic')
      \>>> tsint
      2014-11-08 10:30:00    3.000000
      2014-11-08 10:30:01    3.043445
      2014-11-08 10:30:02    3.085850
      2014-11-08 10:30:03    3.127220
      ...
      2014-11-08 10:54:58    2.461532
      2014-11-08 10:54:59    2.235186
      2014-11-08 10:55:00    2.000000
      Freq: S, Length: 1501
    3. Plot it using tsint.plot(). Here's a comparison between the original tsgroup and tsint:

    1 If you're getting an error from .interpolate(method='cubic') telling you that Scipy isn't installed even if you do have it installed, open up /usr/lib64/python2.6/site-packages/scipy/interpolate/polyint.py or wherever your file might be and change the second line from from scipy import factorial to from scipy.misc import factorial.

    0 讨论(0)
  • 2020-12-18 01:46

    Check out scipy.interpolate.UnivariateSpline

    0 讨论(0)
提交回复
热议问题