Metadata-Version: 1.1
Name: pyeviews
Version: 0.1.5
Summary: Data import/export and EViews function calls from Python
Home-page: https://github.com/bexer/pyeviews
Author: Rebecca Erwin & Steve Yoo
Author-email: rebecca.erwin@ihs.com
License: GPLv3
Description: pyeviews: Python & EViews

        =========================

        

        The purpose of the **pyeviews** package is to make it easier for `EViews <http://www.eviews.com>`_ and Python to talk to each other, so Python programmers can use the econometric engine of EViews directly from Python.  This package uses COM to transfer data between Python and EViews.  (For more information on COM and EViews, take a look at our `whitepaper on the subject <http://www.eviews.com/download/whitepapers/EViews_COM_Automation.pdf>`_.)

            

        Here’s a simple example going from Python to EViews.  We’re going to use the popular Chow-Lin interpolation routine in EViews using data created in Python.  Chow-Lin interpolation is a regression-based technique to transform low-frequency data (in our example, annual) into higher-frequency data (in our example, quarterly).  It has the ability to use a higher-frequency series as a pattern for the interpolated series to follow.   The quarterly interpolated series is chosen to match the annual benchmark series in one of four ways: first (the first quarter value of the interpolated series matches the annual series), last (same, but for the fourth quarter value), sum (the sum of the first through fourth quarters matches the annual series), and average (the average of the first through fourth quarters matches the annual series).

         

        We’re going to create two series in Python using the time series functionality of the **pandas** package, transfer it to EViews, perform Chow-Lin interpolation on our series, and bring it back into Python.  The data are taken from [BLO2001]_ in an example originally meant for Denton interpolation.

        

        *	If you don’t have Python, we recommend the `Anaconda distribution <https://www.continuum.io/downloads>`_, which will include most of the packages we’ll need.  After installing Anaconda, open a Windows command line program (e.g., Command Prompt or PowerShell) and use the command:

        

        :: 

        

            $ conda install -c bexer pyeviews

        

        to download and install **pyeviews**.  Alternatively, if you already have Python installed head over to the `Python Package Index <https://pypi.python.org/pypi>`_ and get the **pyeviews** `module <https://pypi.python.org/pypi/pyeviews>`_ by opening a Windows command line program and using the command:

        

        :: 

        

            $ pip install pyeviews

        

        or by downloading the package, navigating to your installation directory, and using the command:

        

        ::

        

            $ python setup.py install 

        

        *	Create two time series using pandas.  We’ll call the annual series “benchmark” and the quarterly series “indicator”:

        

        .. code-block:: python

        

            >>> import numpy as np    

            >>> import pandas as pa

            >>> dtsa = pa.date_range('1998', periods = 3, freq = 'A')

            >>> benchmark = pa.Series([4000.,4161.4,np.nan], index=dtsa, name = 'benchmark')

            >>> dtsq = pa.date_range('1998q1', periods = 12, freq = 'Q')

            >>> indicator = pa.Series([98.2, 100.8, 102.2, 100.8, 99., 101.6, 102.7, 101.5, 100.5, 103., 103.5, 101.5], index = dtsq, name = 'indicator')

            

        *	Load the **pyeviews** package and create a custom COM application object so we can customize our settings.  Set `showwindow` (which displays the EViews window) to True.  Then call the `PutPythonAsWF` function to create pages for the benchmark and indicator series:

        

        .. code-block:: python

        

            >>> import pyeviews as evp

            >>> eviewsapp = evp.GetEViewsApp(instance='new', showwindow=True)

            >>> evp.PutPythonAsWF(benchmark, app=eviewsapp)

            >>> evp.PutPythonAsWF(indicator, app=eviewsapp, newwf=False)

        

        Behind the scenes, **pyeviews** will detect if the DatetimeIndex of your **pandas** object (if you have one) needs to be adjusted to match EViews' dating customs.  Since EViews assigns dates to be the beginning of a given period depending on the frequency, this can lead to misalignment issues and unexpected results when calculations are performed.  For example, a DatetimeIndex with an annual 'A' frequency and a date of 2000-12-31 will be assigned an internal EViews date of 2000-12-01.  In this case, **pyeviews** will adjust the date to 2000-01-01 before pushing the data to EViews.

        

        *	Name the pages of the workfile:

        

        .. code-block:: python

        

            >>> evp.Run('pageselect Untitled', app=eviewsapp)

            >>> evp.Run('pagerename Untitled annual', app=eviewsapp)

            >>> evp.Run('pageselect Untitled1', app=eviewsapp)

            >>> evp.Run('pagerename Untitled1 quarterly', app=eviewsapp)

            

        *	Use the EViews ``copy`` command to copy the benchmark series in the annual page to the quarterly page, using the indicator series in the quarterly page as the high-frequency indicator and matching the sum of the benchmarked series for each year (four quarters) with the matching annual value of the benchmark series:

        

        .. code-block:: python

        

            >>> evp.Run('copy(rho=.7, c=chowlins) annual\\benchmark quarterly\\benchmarked @indicator indicator', app=eviewsapp)

            

        *	Bring the new series back into Python:

        

        .. code-block:: python

        

            >>> benchmarked = evp.GetWFAsPython(app=eviewsapp, pagename= 'quarterly', namefilter= 'benchmarked')

            >>> print benchmarked

                        BENCHMARKED

            1998-01-01   867.421429

            1998-04-01  1017.292857

            1998-07-01  1097.992857

            1998-10-01  1017.292857

            1999-01-01   913.535714

            1999-04-01  1063.407143

            1999-07-01  1126.814286

            1999-10-01  1057.642857

            2000-01-01  1000.000000

            2000-04-01  1144.107143

            2000-07-01  1172.928571

            2000-10-01  1057.642857

        

        *	Release the memory allocated to the COM process (this does not happen automatically in interactive mode):

        

        .. code-block:: python

        

            >>> eviewsapp.Hide()

            >>> eviewsapp = None

            >>> evp.Cleanup()

            

        Note that if you choose not to create a custom COM application object (the `GetEViewsApp` function), you won’t need to use the first two lines in the last step.  You only need to call `Cleanup()`.  If you create a custom object but choose not to show it, you won’t need to use the first line (the `Hide()` function).

        

        References

        ----------

        .. [BLO2001] Bloem, A.M, Dippelsman, R.J. and Maehle, N.O. 2001 Quarterly National Accounts Manual–Concepts, Data Sources, and Compilation. IMF. http://www.imf.org/external/pubs/ft/qna/2000/Textbook/index.htm

        

        Requirements

        ------------

        *   **EViews**, of course

        *   comtypes, numpy, and pandas

        
Keywords: eviews econometrics
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Programming Language :: Python :: 2 :: Only
Classifier: Operating System :: Microsoft :: Windows
