filoma recommends using ydata-profiling to generate a report for a given dataframe. Below is an example of how to do this in a Jupyter notebook.
In [1]:
!uv pip install ydata-profiling ipywidgets ipympl setuptools --upgrade
Using Python 3.11.11 environment at: /home/kalfasy/repos/filoma/.venv ⠋ Resolving dependencies... ⠙ Resolving dependencies... ⠋ Resolving dependencies... ⠙ Resolving dependencies...
⠙ ydata-profiling==4.16.1
⠙ htmlmin==0.1.12 ⠙ imagehash==4.3.1 ⠙ ipywidgets==8.1.7 ⠙ ipympl==0.9.7 ⠙ setuptools==80.9.0 ⠙ scipy==1.15.3 ⠙ pandas==2.3.2 ⠙ matplotlib==3.10.0 ⠙ pydantic==2.11.9
⠙ pydantic-core==2.33.2 ⠙ pyyaml==6.0.2 ⠙ jinja2==3.1.6 ⠙ visions==0.8.1 ⠙ visions==0.8.1 ⠙ numpy==2.1.3 ⠙ visions==0.8.1 ⠙ visions==0.8.1 ⠙ numpy==2.1.3 ⠙ numpy==2.1.3 ⠙ matplotlib==3.10.0 ⠙ llvmlite==0.44.0
Resolved 70 packages in 221ms ⠋ Preparing packages... (0/0) ⠋ Preparing packages... (0/9) ⠙ Preparing packages... (0/9) ⠙ (9/9) Prepared 9 packages in 0.37ms Uninstalled 9 packages in 21ms ░░░░░░░░░░░░░░░░░░░░ [0/0] Installing wheels... ░░░░░░░░░░░░░░░░░░░░ [0/9] Installing wheels... ░░░░░░░░░░░░░░░░░░░░ [0/9] typing-extensions==4.15.0 ██░░░░░░░░░░░░░░░░░░ [1/9] typing-extensions==4.15.0 ██░░░░░░░░░░░░░░░░░░ [1/9] executing==2.2.1 ████░░░░░░░░░░░░░░░░ [2/9] executing==2.2.1 ████░░░░░░░░░░░░░░░░ [2/9] certifi==2025.8.3 ██████░░░░░░░░░░░░░░ [3/9] certifi==2025.8.3 ██████░░░░░░░░░░░░░░ [3/9] requests==2.32.5 ████████░░░░░░░░░░░░ [4/9] requests==2.32.5 ████████░░░░░░░░░░░░ [4/9] parso==0.8.5 ███████████░░░░░░░░░ [5/9] parso==0.8.5 ███████████░░░░░░░░░ [5/9] charset-normalizer==3.4.3 █████████████░░░░░░░ [6/9] charset-normalizer==3.4.3 █████████████░░░░░░░ [6/9] prompt-toolkit==3.0.52 ███████████████░░░░░ [7/9] prompt-toolkit==3.0.52 ███████████████░░░░░ [7/9] ipython==9.5.0 █████████████████░░░ [8/9] ipython==9.5.0 █████████████████░░░ [8/9] numpy==2.1.3 ████████████████████ [9/9] numpy==2.1.3 Installed 9 packages in 11ms - certifi==2025.6.15 + certifi==2025.8.3 - charset-normalizer==3.4.2 + charset-normalizer==3.4.3 - executing==2.2.0 + executing==2.2.1 - ipython==9.4.0 + ipython==9.5.0 - numpy==2.3.1 + numpy==2.1.3 - parso==0.8.4 + parso==0.8.5 - prompt-toolkit==3.0.51 + prompt-toolkit==3.0.52 - requests==2.32.4 + requests==2.32.5 - typing-extensions==4.14.1 + typing-extensions==4.15.0
In [2]:
%reset -f
%load_ext autoreload
%autoreload 2
In [3]:
import filoma
df = filoma.probe_to_df("../")
df = df.filter(df["suffix"] == ".py")
2025-09-13 21:10:11.824 | DEBUG | filoma.directories.directory_profiler:__init__:343 - Interactive environment detected, disabling progress bars to avoid conflicts
2025-09-13 21:10:11.825 | INFO | filoma.directories.directory_profiler:probe:430 - Starting directory analysis of '../' using 🐍 Python implementation
2025-09-13 21:10:12.562 | SUCCESS | filoma.directories.directory_profiler:probe:446 - Directory analysis completed in 0.74s - Found 45,702 items (42,116 files, 3,586 folders) using 🐍 Python
In [4]:
from ydata_profiling import ProfileReport
profile = ProfileReport(df.to_pandas(), title="Filoma Report");
Upgrade to ydata-sdk
Improve your data and profiling with ydata-sdk, featuring data quality scoring, redundancy detection, outlier identification, text validation, and synthetic data generation.
In [5]:
profile
0%| | 0/18 [00:00<?, ?it/s]
100%|████████████████████████████████████████████████████████████████████████████| 18/18 [00:00<00:00, 2189.92it/s]
Out[5]:
In [ ]: