odsc presentation

15
O P E N D A T A S C I E N C E C O N F E R E N C E_ BOSTON 2015 @opendatasci xlwings Felix Zumstein

Upload: zoomer-analytics-llc

Post on 28-Jul-2015

250 views

Category:

Software


0 download

TRANSCRIPT

O P E N D A T A S C I E N C E C O N F E R E N C E_ BOSTON 2015

@opendatasci

xlwings Felix Zumstein

About me • Startup (2014, Zurich):

– Mainly Python for Finance – Web based trading solutions (Interactive Brokers)

– Lots of Excel – Open-source: xlwings/ExcelPython

• Previously: 9yrs in Banking /Asset Mgmt • Background in Finance & Economics

2

What’s in this talk?

3

The open-source Python/Excel Landscape

4

• Pywin32 •  xlwings • ExcelPython

Read/Write Program/Interact •  xlwt/xlrd • XlsxWriter • OpenPyxl

Why xlwings? – 6 Reasons

5

(1) Installation

6

•  pip/conda install xlwings •  or equally easy:

(2) Cross-Platform

7

+

(3) Flexibility

8

Version

2.6 2.7 3.1 3.2 3.3 3.4

32-bit 64-bit

32-bit 64-bit

2003 2010 2011 (Mac) 2013 2016 (Win + Mac*)

Architecture Version Architecture

*under development

(4) Simplicity

9

>>>  from  xlwings  import  Workbook,  Range    

>>>  wb  =  Workbook()  >>>  Range("A1").value  =  my_variable  

•  Strings •  Numbers •  DateTime •  Lists (nested) •  NumPy arrays •  Pandas DataFrames •  Blaze Data container (planned)

(5) Works back and forth

10

>>>  wb  =  Workbook()  >>>  Range("A1").value  =  my_variable  

Sub  MyFunction()    RunPython  ("import  mymodule;mymodule.myfunction()")  End  Sub  

(6) ExcelPython for UDFs (Windows only)

11

from  xlpython  import  xlfunc  import  numpy  as  np    

@xlfunc  def  matrix_mult(x,  y):          x  =  np.atleast_2d(np.array(x))          y  =  np.atleast_2d(np.array(y))          return  x.dot(y)  

{=matrix_mult(A1:B2,D1:E2)}  

Access from Excel via Array Formula:

Write User Defined Functions in Python:

What’s next?

12

What’s next?

• Add-in • Full integration of xlwings/ExcelPython • Add more features: matplotlib etc. •  Someday…

– Google Sheets – LibreOffice/OpenOffice

13

julia>  using  PyCall  julia>  @pyimport  xlwings  as  xw    julia>  xw.Workbook()  julia>  xw.Range("A1",  asarray=true)[:table][:value]    

Use xlwings from Julia

14

>>>  from  xlwings  import  Workbook,  Range    

>>>  wb  =  Workbook()  >>>  Range("A1",  asarray=True).table.value  

DEMO xlwings.org

15