Skip to main content

Turning Python Scripts into Working Web Apps Quickly with Streamlit

 I just realized that I am using Streamlit since almost one year now, posted about in Twitter or LinkedIn several times, but never wrote a blog post about it before.

Communication in Data Science and Machine Learning is the key. Being able to showcase work in progress and share results with the business makes the difference. Verbal and non-verbal communication skills are important. Having some tool that could support you in this kind of conversation with a mixed audience that couldn't have a technical background or would like to hear in terms of results and business value would be of great help. I found that Streamlit fits well this scenario.

Streamlit is an Open Source (Apache License 2.0) Python framework that turns data or ML scripts into shareable web apps in minutes (no kidding). Python only: no front‑end experience required.

To start with Streamlit, just install it through pip (it is available in Anaconda too):

pip install streamlit

and you are ready to execute the working demo application:

streamlit hello

accessible to a web browser at the http://localhost:8501 address.

Streamlit is based on these three principles:

  • Scripting: building an app has to happen in a few lines of code. Developers can then see it automatically update as they iteratively save the source file. Typically you can implement a full working app writing around 50 lines of Python code.
  • Weave in interaction: adding a widget is the same as declaring a variable in Python. No need to do other things such as write a backend, define routes, handle HTTP requests, connect a frontend and write HTML, CSS and JavaScript.
  • Instant deployment: the Streamlit company offers a platform for rapid apps deployment and sharing and to enhance collaboration. It is possible anyway to deploy Streamlit web apps in different platforms such as Heroku or AWS but you have to manage SSO, security, scalability, etc. as required for the specific platform used.
All the major Python visualization libraries are compatible with Streamlit (I have worked mostly with Plotly and Matplotlib, but you can find dozens of examples with others). Same in terms of ML/DL frameworks (my experience so far is with Keras and TensorFlow, but these aren't the only ones supported). And of course the common libraries to any DS or ML project such as Numpy, Pandas or OpenCV can be used with Streamlit.
With Streamlit you can build really powerful apps: it maintains the promises you can read in the official website. Rather that going through the API, I prefer to share here some Streamlit apps available in my GitHub space, so that you can check yourself what it is possible to do with this framework:

Detection, segmentation and classification of materials inside mostly transparent vessels in images using a CNN: https://github.com/virtualramblas/streamlit-materials-segmentation-in-vessels



A simple frontend for a pre-trained MobileNet CNN model + OpenCV for face mask detection in images: https://github.com/virtualramblas/streamlit-face-mask-detector

What are you waiting for to start evaluating it and join the community?
I will write blog posts on specific Streamlit topics in the future. Stay tuned!

Comments

  1. Sharing thoughts and information is great and here we get impressive information by you. thanks for sharing with us.
    Data Science training in Sydney

    ReplyDelete
  2. Thank you for sharing this post with us I really appreciate your efforts if possible you can check out
    data science course in bangalore
    data science course

    ReplyDelete
  3. Nice Information About Web Application thanks for sharing this.

    ReplyDelete
  4. Hi, I read your whole blog. This is very nice. Good to know about the career in. Python Training & Certification , anyone interested can Python Training for making their career in this field.

    ReplyDelete
  5. 1. Thanks for sharing the best information and suggestions, I love your content, and they are very nice and very useful to us. If you are looking for the best Custom Web Application Development Services, then visit Symentix Technologies Private Limited. I appreciate the work you have put into this.

    ReplyDelete

Post a Comment

Popular posts from this blog

Exporting InfluxDB data to a CVS file

Sometimes you would need to export a sample of the data from an InfluxDB table to a CSV file (for example to allow a data scientist to do some offline analysis using a tool like Jupyter, Zeppelin or Spark Notebook). It is possible to perform this operation through the influx command line client. This is the general syntax: sudo /usr/bin/influx -database '<database_name>' -host '<hostname>' -username '<username>'  -password '<password>' -execute 'select_statement' -format '<format>' > <file_path>/<file_name>.csv where the format could be csv , json or column . Example: sudo /usr/bin/influx -database 'telegraf' -host 'localhost' -username 'admin'  -password '123456789' -execute 'select * from mem' -format 'csv' > /home/googlielmo/influxdb-export/mem-export.csv

jOOQ: code generation in Eclipse

jOOQ allows code generation from a database schema through ANT tasks, Maven and shell command tools. But if you're working with Eclipse it's easier to create a new Run Configuration to perform this operation. First of all you have to write the usual XML configuration file for the code generation starting from the database: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd">   <jdbc>     <driver>oracle.jdbc.driver.OracleDriver</driver>     <url>jdbc:oracle:thin:@dbhost:1700:DBSID</url>     <user>DB_FTRS</user>     <password>password</password>   </jdbc>   <generator>     <name>org.jooq.util.DefaultGenerator</name>     <database>       <name>org.jooq.util.oracle.OracleDatabase</name>     ...