In [1]:
import hkvfewspy as hkv
import pandas as pd
%matplotlib inline
In [2]:
hkv.__version__
Out[2]:
In [3]:
# define object
pi = hkv.Pi()
In [4]:
# create empty PI-TimeSeries object
pi_ts = pi.setPiTimeSeries(prefill_defaults=False)
In [5]:
s = pd.Series(data=pd.np.random.randint(0,100, size=(5)),
index=pd.date_range(start='2018-01-01', periods=5, freq='D'),
name='value')
In [6]:
s.head()
Out[6]:
In [7]:
# set two root objects
pi_ts.write.root.timeZone('gmt')
pi_ts.write.root.version('1.22')
pi_ts.write.root.geoDatum('WGS 1984')
# set comment
pi_ts.write.comment('this is an comment')
# set a header object
pi_ts.write.header.timeSeriesType("instantaneous")
pi_ts.write.header.moduleInstanceId('my_little_moduleinstanceID')
pi_ts.write.header.locationId('my_little_locationID')
pi_ts.write.header.parameterId('my_little_parameterID')
pi_ts.write.header.timeStep(unit="day")
pi_ts.write.header.startDate(date='2018-01-01', time='00:00:00')
pi_ts.write.header.endDate(date='2018-01-05', time='00:00:00')
pi_ts.write.header.missVal(pd.np.nan)
pi_ts.write.header.longName('my_longname_locationID')
pi_ts.write.header.units('m/3')
# set a events object (pandas.Series or pandas.DataFrame)
pi_ts.write.events(s)
In [8]:
pi_ts.view
Out[8]:
In [9]:
pi_ts.view['timeSeries'][0]['events'].head() # pandas.DataFrame
Out[9]:
In [10]:
pi_ts.view['timeSeries'][0]['events'].plot()
Out[10]:
In [11]:
# show resulted PI-JSON object
print(pi_ts.to.pi_json())
In [12]:
# show resulted PI-XML object
print(pi_ts.to.pi_xml())
In [13]:
# write pandas.DataFrame
df = pd.DataFrame(data=pd.np.random.randint(0, 100, size=(5,3)),
index=pd.date_range(start='2018-01-01', periods=5, freq='D'),
columns=['value', 'flag', 'invalid_column_name'])
In [14]:
df.head()
Out[14]:
In [15]:
# parse pandas.DataFrame as events
pi_ts.write.events(df)
In [16]:
pi_ts.view['timeSeries'][0]['events'].plot()
Out[16]:
In [17]:
# show resulted PI-JSON object
print(pi_ts.to.pi_json())
In [18]:
# show resulted PI-XML object
print(pi_ts.to.pi_xml())
In [ ]: