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 [ ]: