Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
bb2eec7
Merge pull request #20 from 8080labs/user_specific_imports
tkrabel Oct 20, 2019
7ca40a9
bump version 0.1.3 -> 0.1.4
tkrabel Oct 20, 2019
1195d4c
refactor
FlorianWetschoreck Jan 8, 2020
76e51ba
refactor
FlorianWetschoreck Jan 8, 2020
dc366f0
refactor
FlorianWetschoreck Jan 8, 2020
f02a1c2
refactor
FlorianWetschoreck Jan 8, 2020
3c02052
refactor
FlorianWetschoreck Jan 8, 2020
00d8961
Import: adjust to not overwrite user symbols
FlorianWetschoreck Jan 8, 2020
93031ae
User imports have priority over pyforest defaults
FlorianWetschoreck Jan 8, 2020
b1aeea0
Extension: v0 based on valtron PR
FlorianWetschoreck Jan 9, 2020
2b96d9b
refactor
FlorianWetschoreck Jan 9, 2020
0eba8d6
replace eda with bam
FlorianWetschoreck Jan 9, 2020
f45544d
refactor
FlorianWetschoreck Jan 9, 2020
ccabf22
Installation: add logging output for user
FlorianWetschoreck Jan 9, 2020
fedb7a8
Setup: install extensions during pip install
FlorianWetschoreck Jan 9, 2020
b7434a2
refactor
FlorianWetschoreck Jan 9, 2020
f1f8176
refactor
FlorianWetschoreck Jan 9, 2020
533af12
Utils: adjust cell separator
FlorianWetschoreck Jan 9, 2020
90e01b7
refactor
FlorianWetschoreck Jan 9, 2020
0cfe236
add comments
FlorianWetschoreck Jan 9, 2020
157bac7
fix import bug due to autocomplete
FlorianWetschoreck Jan 9, 2020
51f9a49
AddDocstring: fixes #23 as in #24 by henryiii
FlorianWetschoreck Jan 9, 2020
e87c231
Extensions: cannot be installed during setup
FlorianWetschoreck Jan 9, 2020
47f2648
Readme: adjust
FlorianWetschoreck Jan 9, 2020
5a14d9d
Readme: add upgrade to pip install
FlorianWetschoreck Jan 9, 2020
9bdad55
add comment
FlorianWetschoreck Jan 9, 2020
95f9db0
ComplementaryImports: remove for now
FlorianWetschoreck Jan 9, 2020
664d5fd
Readme: adjust
FlorianWetschoreck Jan 10, 2020
94d474b
pyforest.active_imports() print statements
FlorianWetschoreck Jan 10, 2020
fb8d013
Readme: small fix
FlorianWetschoreck Jan 10, 2020
537a93c
Readme: small adjustment
FlorianWetschoreck Jan 10, 2020
81416c2
Readme: adjust
FlorianWetschoreck Jan 10, 2020
82a824c
Comments: adjust
FlorianWetschoreck Jan 10, 2020
e4a9f61
pyforest now comes with JS extension for import statement generation
tkrabel Jan 10, 2020
82afc75
1.0.0
tkrabel Jan 10, 2020
9b9e7c6
add comment
tkrabel Jan 11, 2020
2dc66b1
update 1.0.0 and 0.1.4
tkrabel Jan 11, 2020
f709f64
add missing "
tkrabel Jan 11, 2020
a7e2800
add new gif
tkrabel Jan 12, 2020
bb9ff01
Merge branch 'master' of https://github.com/8080labs/pyforest
tkrabel Jan 12, 2020
8d00fda
Update README.md
tkrabel Jan 12, 2020
ccea329
gif: show that import not needed
tkrabel Jan 12, 2020
731ecc3
Merge branch 'master' of https://github.com/8080labs/pyforest
tkrabel Jan 12, 2020
3643806
add pip(3) alternative
tkrabel Jan 12, 2020
fa2d3ad
Update README.md
tkrabel Jan 13, 2020
8848930
Update README.md
tkrabel Jan 13, 2020
d967239
bug fix: add js to static folder
tkrabel Jan 14, 2020
faa5cba
1.0.1
tkrabel Jan 14, 2020
5bbefbe
Merge branch 'master' of https://github.com/8080labs/pyforest
tkrabel Jan 14, 2020
71fe959
add note about restarting Jupyter servers after install
tkrabel Jan 14, 2020
7959565
Update README.md
tkrabel Jan 15, 2020
f46ccca
include package.json in package
tkrabel Jan 15, 2020
f30e845
init pyforest sandbox
tkrabel Jan 15, 2020
011e94c
test if pyforest installation works fine in new conda env
tkrabel Jan 15, 2020
96fad7c
1.0.2
tkrabel Jan 15, 2020
04e2a2b
add some packages for test
tkrabel Jan 15, 2020
c052fb6
add import pyforest
tkrabel Jan 15, 2020
2c954f8
Add gradient boosting decision tree algorithms
harupy Jan 15, 2020
73b3629
Merge pull request #28 from harupy/add-gbdt
tkrabel Jan 16, 2020
3d6e24b
adjust readme
FlorianWetschoreck Jan 28, 2020
a7985cf
adjust readme
FlorianWetschoreck Jan 28, 2020
c79fbb4
adjust readme
FlorianWetschoreck Jan 28, 2020
e5dcd54
adjust readme
FlorianWetschoreck Jan 28, 2020
60ff7ca
Readme: adjust
FlorianWetschoreck Jan 28, 2020
8c43622
add link to bamboolib
FlorianWetschoreck Feb 8, 2020
b7b1cf8
Update README.md
8080labs Apr 6, 2020
c792da1
Add AWS Data Wrangler as "wr"
igorborgest Apr 15, 2020
9ceadea
Merge pull request #34 from igorborgest/patch-1
8080labs Apr 16, 2020
221c305
install_nbextension: install with user=True to avoid Permission denie…
tkrabel Apr 17, 2020
53d5db1
0.1.3
tkrabel Apr 17, 2020
36bc88b
1.0.3
tkrabel Apr 17, 2020
e618264
Update _imports.py with scipy signal library
mferratt May 6, 2020
4728b32
Merge pull request #35 from mferratt/patch-1
8080labs May 8, 2020
bbc1363
Added more sklearn modules
Sufi737 Jun 10, 2020
06c68d6
Merge pull request #36 from Sufi737/master
FlorianWetschoreck Jun 10, 2020
bd0be91
Added LazyImport for XLRD's open_workbook
RafeyIqbalRahman Jul 20, 2020
e8ac3e1
Fixed inconsistent quotation marks on line #41
RafeyIqbalRahman Jul 21, 2020
21fa5c7
Merge pull request #37 from RafeyIqbalRahman/master
FlorianWetschoreck Jul 21, 2020
36aa0df
Added several libraries
RafeyIqbalRahman Jul 22, 2020
da4ac23
Merge pull request #39 from RafeyIqbalRahman/master
FlorianWetschoreck Jul 23, 2020
df9692e
Added more libraries
RafeyIqbalRahman Jul 23, 2020
8103478
Fixed typo of statsmodels
RafeyIqbalRahman Jul 24, 2020
19abeb2
Added both fbprophet and Prophet submodule
RafeyIqbalRahman Jul 27, 2020
d876c4e
Merge pull request #40 from RafeyIqbalRahman/master
FlorianWetschoreck Jul 29, 2020
a60c2df
Added ARIMA for time-series forecast
RafeyIqbalRahman Aug 8, 2020
37aa037
Merge pull request #41 from RafeyIqbalRahman/master
FlorianWetschoreck Aug 10, 2020
008c72d
Added Scikit-Image for Image Processing😊
smaranjitghose Aug 18, 2020
adaf8d2
Update _imports.py
smaranjitghose Aug 18, 2020
b5ae025
Merge pull request #42 from smaranjitghose/master
FlorianWetschoreck Aug 18, 2020
2e9289a
ignore devstuff folder
tkrabel Jun 14, 2021
ef28e2d
_imports: bugfix: closing parenthesis at KFold command
tkrabel Jun 14, 2021
5b7924b
Add me to authors (attention seeker alert!)
tkrabel Jun 14, 2021
6ab4e85
labextension: add code to first code cell
tkrabel Jun 14, 2021
efa1a8b
nbextension: add imports to first code cell
tkrabel Jun 14, 2021
62f374d
__main__: allow users to install nbextension or labextension separately
tkrabel Jun 14, 2021
1d3154f
update development docs
tkrabel Jun 14, 2021
4de5e9c
update development for Jupyter Notebook
tkrabel Jun 14, 2021
eeaa250
Merge pull request #46 from 8080labs/feat_add_code_to_first_code_cell
tkrabel Jun 14, 2021
8224843
add devstuff/
tkrabel Jun 14, 2021
5b9ad28
Merge branch 'master' of https://github.com/8080labs/pyforest
tkrabel Jun 14, 2021
b88e1b8
1.1.0
tkrabel Jun 14, 2021
02c83c6
1.1.0
tkrabel Jun 14, 2021
a3e435c
Added disable_javascript_update to prevent lazy imports from pollutin…
gamisabbott Jul 12, 2021
f9b241c
add new import "import random"
PKUfudawei May 22, 2023
00bc64b
Merge pull request #49 from gamis/master
tkrabel Jun 14, 2024
ec79f02
1.1.1
tkrabel Jun 14, 2024
8631f30
Update CHANGELOG for 1.1.1
tkrabel Jun 14, 2024
cd0c11c
Merge pull request #56 from PKUfudawei/master
tkrabel Jun 14, 2024
852b04c
Update CHANGELOG.rst
tkrabel Jun 14, 2024
4b7f71a
1.1.2
tkrabel Jun 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
.DS_Store

# as long as the pyforest extensions don't need to be build, we can ignore the JS build folders:
src/pyforest/node_modules
src/pyforest/yarn.lock

# Temporary and binary files
*~
*.py[cod]
Expand Down Expand Up @@ -53,3 +57,6 @@ MANIFEST
.vscode/*
examples/*.py
anaconda_credentials.txt

# User-specific folders
devstuff
25 changes: 25 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,31 @@
Changelog
=========

Version 1.1.2
=============

- https://github.com/8080labs/pyforest/pull/56 Add "random" package to lazy imports

Version 1.1.1
=============

- https://github.com/8080labs/pyforest/pull/49 disable non-jupyter console from being polluted with lazy import print statements.

Version 1.1.0
=============

- import statements are now automatically added to the first *CODE* cell when a package is used in the notebook

Version 1.0.0
=============

- import statements are now automatically added to the first cell when a package is used in the notebook

Version 0.1.4
=============

- Users can now add own lazy imports by writing their import statements to ~/.pyforest/user_imports.py.

Version 0.1
===========

Expand Down
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
include src/pyforest/static/*
include src/pyforest/*.json
125 changes: 58 additions & 67 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,68 @@
# pyforest - lazy-import of all popular Python Data Science libraries. Stop writing the same imports over and over again.
# pyforest - feel the bliss of automated imports

### From the makers of [bamboolib](https://bamboolib.com)

Writing the same imports over and over again is below your capacity. Let pyforest do the job for you.


With pyforest you can use all your favorite Python libraries without importing them before.
If you use a package that is not imported yet, pyforest imports the package for you and adds the code to the first Jupyter cell. If you don't use a library, it won't be imported.

pyforest lazy-imports all popular Python Data Science libraries so that they are always there when you need them. If you don't use a library, it won't be imported. When you are done with your script, you can export the Python code for the import statements.

- [Demo in Jupyter Notebook](#demo-in-jupyter-notebook)
- [Demo in Python Shell](#demo-in-python-shell)
- [Scenario](#scenario)
- [Using pyforest](#using-pyforest)
- [Installation](#installation)
- [FAQs](#frequently-asked-questions)
- [Contributing](#contributing)
- [Using pyforest as Package Developer](#using-pyforest-as-package-developer)
- [About](#about)
- [Join our community and grow further](#join-our-community-and-grow-further)



## Demo in Jupyter Notebook
![demo](examples/assets/pyforest_demo_in_jupyter.gif)
![demo](examples/assets/pyforest_demo_in_jupyter_notebook.gif)


## Scenario

You are a Data Scientist who works with Python. Every day you start multiple new Jupyter notebooks because you want to explore some data or validate a hypothesis.

During your work, you use many different libraries like `pandas`, `matplotlib`, `seaborn`, `numpy` or `sklearn`. However, before you can start with the actual work, you always need to import your libraries.


There are several __problems__ with this. Admittedly, they are small but they add up over time.
- It is boring because the imports are mostly the same. This is below your capacity.
- Missing imports disrupt the natural flow of your work.
- Sometimes, you may even need to look up the exact import statements. For example, `import matplotlib.pyplot as plt` or `from sklearn.ensemble import GradientBoostingRegressor`

__What if you could just focus on using the libraries?__

## Demo in Python Shell
![demo](examples/assets/pyforest_demo_in_python_shell.png)
pyforest offers the following __solution__:
- You can use all your libraries like you usually do. If a library is not imported yet, pyforest will import it and add the import statement to the first Jupyter cell.
- If a library is not used, it won't be imported.
- Your notebooks stay reproducible and sharable without you wasting a thought on imports.


## Using pyforest
pyforest lazy-imports all popular Python Data Science libraries with a single line of code:

```python
from pyforest import *
```
After you [installed](#installation) pyforest and its Jupyter extension, you can __use your favorite Python Data Science commands like you normally would - just without writing imports__.

And if you use Jupyter or IPython, you can even skip this line because pyforest adds itself to the autostart.
For example, if you want to read a CSV with pandas:

When you are done with your script, you can export all import statements via:
```python
df = pd.read_csv("titanic.csv")
```

pyforest will automatically import pandas for you and add the import statement to the first cell:
```python
active_imports()
import pandas as pd
```

Which libraries are available?
- We aim to add all popular Python Data Science libraries which should account for >99% of your daily imports. For example, `pandas` as `pd`, `numpy` as `np`, `seaborn` as `sns`, `matplotlib.pyplot` as `plt`, or `OneHotEncoder` from `sklearn` and many more. In addition, there are also helper modules like `os`, `re`, `tqdm`, or `Path` from `pathlib`.
- You can see an overview of all available lazy imports if you type `lazy_imports()` in Python.
- If you are missing an import, you can add it to the [pyforest imports](src/pyforest/_imports.py).

__Which libraries are available?__
- We aim to add all popular Python Data Science libraries which should account for >99% of your daily imports. For example, we already added `pandas` as `pd`, `numpy` as `np`, `seaborn` as `sns`, `matplotlib.pyplot` as `plt`, or `OneHotEncoder` from `sklearn` and many more. In addition, there are also helper modules like `os`, `re`, `tqdm`, or `Path` from `pathlib`.
- You can see an overview of all currently available imports [here](src/pyforest/_imports.py)
- If you are missing an import, you can either __add the import to your user specific pyforest imports__ as described in the [FAQs](#frequently-asked-questions) or you can open a pull request for the official [pyforest imports](src/pyforest/_imports.py)

> In order to gather all the most important names, we need your help. Please open a pull request and add the [imports](src/pyforest/_imports.py) that we are still missing.

Expand All @@ -49,19 +71,22 @@ Which libraries are available?

> You need Python 3.6 or above because we love f-strings.

From the terminal, enter:
From the terminal (or Anaconda prompt in Windows), enter:

`pip install pyforest`
```bash
pip install --upgrade pyforest
python -m pyforest install_extensions
```

And you're ready to go.
Please make sure to restart any running Jupyter server so that the javascript extension can be loaded properly.

Please note, that this will also add pyforest to your IPython default startup settings.
Also, please note that this will add pyforest to your IPython default startup settings. If you do not want this, you can disable the auto_import as described in the [FAQs](#frequently-asked-questions) below.


## Frequently Asked Questions

- __"I need to always explicitly write down the libraries I used at the top of my scripts."__
- Of course, you can export the import statements for all used libraries with `active_imports()`.
- __"How to add my own import statements without adding them to the package source code?"__
- pyforest creates a file in your home directory at `~/.pyforest/user_imports.py` in which you can type any **explicit** import statements you want (e.g. `import pandas as pd`). Your own custom imports take precedence over any other pyforest imports. **Please note:** implicit imports (e.g. `from pandas import *`) won't work.

- __"Doesn't this slow down my Jupyter or Python startup process?"__
- No, because the libraries will only be imported when you actually use them. Until you use them, the variables like `pd` are only pyforest placeholders.
Expand All @@ -73,63 +98,29 @@ Please note, that this will also add pyforest to your IPython default startup se
- Tensorflow is included in pyforest but pyforest does not install any dependencies. You need to install your libraries separately from pyforest. Afterwards, you can access the libraries via pyforest if they are included in the [pyforest imports](src/pyforest/_imports.py).

- __"Will the pyforest variables interfere with my own local variables?"__
- Please make sure that you import pyforest at the beginning of your script. Then you will always be safe. You can use your variables like you would without pyforest. The worst thing that can happen is that you overwrite a pyforest placeholder and thus cannot use the placeholder any more (duh).
- No, never. pyforest will never mask or overwrite any of your local variables. You can use your variables like you would without pyforest. The worst thing that can happen is that you overwrite a pyforest placeholder and thus cannot use the placeholder any more (duh).

- __"What about auto-completion on lazily imported modules?"__
- It works :) As soon as you start the auto-completion, pyforest will import the module and return the available symbols to your auto-completer.

- __"How to (temporarily) deactivate the auto_import in IPython and Jupyter?"__
- Go to the directory `~/.ipython/profile_default/startup` and adjust or delete the `pyforest_autoimport.py` file. You will find further instructions in the file.
- Go to the directory `~/.ipython/profile_default/startup` and adjust or delete the `pyforest_autoimport.py` file. You will find further instructions in the file. If you don't use the auto_import, you will need to import pyforest at the beginning of your notebook via `import pyforest`

- __"How to (re)activate the pyforest auto_import?"__
- Execute the following Python command in Jupyter, IPython or Python: `from pyforest.auto_import import setup; setup()`. Please note that the auto_import only works for Jupyter and IPython.

- __"Why is pandas_profiling also imported in the demo?"__
- pyforest supports complementary, optional imports. For example, `pandas_profiling` patches the `pd.DataFrame` with the convenience function `df.profile_report`. Therefore, pyforest also imports `pandas_profiling` if you have it installed. If you don't have `pandas_profiling` installed, the optional import will be skipped.

- __"I don't want to copy complementary import statements to the top of my file."__
- Please note, that the complementary imports will always appear at the bottom of the import_statements list. So, you can just copy all statements above. Alternatively, you can deactivate complementary imports.

- __"How to deactivate complementary imports?"__
- You can uncomment the statements `*.__on_import__()` at the bottom of the [pyforest imports](src/pyforest/_imports.py) file.

- __"How to add my own import statements without adding them to the package source code?"__
- pyforest creates a file `~/.pyforest/user_imports.py`, in which you can type any **explicit** import statements you want. **Please note:** implicit imports (e.g. `from pandas import *`) won't work. Besides, you shouldn't write implicit imports anyway. Those are only for bad programmers like the authors of pyforest :)
- __"Can I use pyforest outside of the Jupyter Notebook or Lab?"__
- Technically, yes. However, this is not the intended use case. pyforest is aimed primarily for the use in a Jupyter Notebook or Lab. If you want to use pyforest in IPython or a Python script etc, please import it as follows `import pyforest`. Afterwards, you can get the currently active imports via `pyforest.active_imports()`

- __"Why is the project called pyforest?"__
- In which ecosystem do pandas live?
- pyforest is created to be the home for all Data Science packages - including pandas. And in which ecosystems do pandas live? :)


## Contributing
In order to gather all the most important names, we need your help. Please open a pull request and add the imports that we are still missing to the [pyforest imports](src/pyforest/_imports.py). You can also find the guidelines in the [pyforest imports file](src/pyforest/_imports.py)


## Using pyforest as Package Developer
pyforest helps you to minimize the (initial) import time of your package which improves the user experience. If you want your package imports to become lazy, rewrite your imports as follows:

Replace

```python
import pandas as pd
```

with
If you'd like to contribute, a great place to look is the [issues marked with help-wanted](https://github.com/8080labs/pyforest/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).

```python
from pyforest import LazyImport
pd = LazyImport("import pandas as pd")
```
In order to gather all the most important names, we need your help. Please open a pull request and add the imports that we are still missing to the [pyforest imports](src/pyforest/_imports.py). You can also find the guidelines in the [pyforest imports file](src/pyforest/_imports.py)


## About
pyforest is developed by Florian, Tobias and Guido from [8080 Labs](https://8080labs.com). Our goal is to improve the productivity of Python Data Scientists. Other projects that we are working on are [edaviz](https://edaviz.com) and [bamboolib](https://bamboolib.com)


## Join our community and grow further
If you
- like our work or
- want to become a faster Python Data Scientist or
- want to discuss the future of the Python Data Science ecosystem or
- are just interested in mingling with like-minded fellows

then, you are invited to [join our slack](https://join.slack.com/t/fasterpyds/shared_invite/enQtNzYxMTMzMDQ4MDk3LTYyNGRiNTE0OGJkNDEzZGRjNjg2Y2I0YWRlNTlmOGUxMjY5MDY5Yjg1MjliM2QwNmNhZmI3N2MxMmY3MGNiODA).
pyforest is developed by [8080 Labs](https://8080labs.com). Our goal is to make Python Data Scientists 10x faster. If you like the speedup to your workflow, you might also be interested in our other project [bamboolib](https://bamboolib.com)
54 changes: 54 additions & 0 deletions README_for_devs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@

## How to install the local python version during development
```bash
pip install -e . # alternatively, use pip3
```

## How to install the extensions during development

### JupyterLab development

Via terminal, it's the same procedure as normal installation:

```bash
python -m pyforest install_labextension
```

It is also possible via Python:
```python
import pyforest
pyforest.install_labextension() # takes 30-60s due to jupyter lab build
```

Run JupyterLab in watch mode
```
jupyter lab --watch
```

When you make changes on the javascript side, refresh the browser (clear cache) for changes to take effect.
### Jupyter Notebook

Via terminal, it's the same procedure as normal installation:

```bash
python -m pyforest install_nbextension
```

It is also possible via Python:
```python
import pyforest
pyforest.install_nbextension()
```

Run Notebook
```
jupyter notebook
```

When you make changes on the javascript side, you need to install nbextension again.
```bash
python -m pyforest install_nbextension
```

## Syntax formatting
We use `black` for formatting the Python code
14 changes: 14 additions & 0 deletions dockerfiles/pyforest_sandbox/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM jupyter/minimal-notebook

USER root

COPY ./test.ipynb ./

# Install Python 3 packages
RUN conda install --quiet --yes \
'Cython' \
&& \
conda clean --all -f -y

RUN pip install pyforest==1.0.2 pandas numpy seaborn
RUN python -m pyforest install_extensions
3 changes: 3 additions & 0 deletions dockerfiles/pyforest_sandbox/commands.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
docker build -t 8080labs/pyforest_sandbox . && \
say "docker update jupypter notebook sandbox ready" && \
docker run --rm -p 8888:8888 8080labs/pyforest_sandbox
46 changes: 46 additions & 0 deletions dockerfiles/pyforest_sandbox/test.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"nbformat": 4,
"nbformat_minor": 2,
"metadata": {
"language_info": {
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"version": "3.7.3-final"
},
"orig_nbformat": 2,
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"npconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": 3,
"kernelspec": {
"name": "python37364bitbaseconda9dbe7a38796a4966923d0aec411ee3e8",
"display_name": "Python 3.7.3 64-bit ('base': conda)"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pyforest"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame(dict(a=np.arange(10)))\n",
"sns.distplot(df.a)"
]
}
]
}
Binary file removed examples/assets/pyforest_demo_in_jupyter.gif
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed examples/assets/pyforest_demo_in_python_shell.png
Binary file not shown.
Loading