{% extends "base.html" %} {% block title %}Dataset Explorer{% endblock %} {% block content %}

📋 Dataset Explorer

Deep dive into your data structure and quality

{% if not has_data %}
📂
No Dataset Loaded

Upload a dataset to explore its structure, types, and quality metrics.

Upload Dataset
{% else %}
{{ profile.shape[0] }}
Rows
{{ profile.shape[1] }}
Columns
{{ quality.overall }}%
Quality Score
{{ profile.memory_usage_mb }}
Memory (MB)

Column Summary

{% for col in profile.columns %} {% endfor %}
Column Type Unique Values Missing Missing %
{{ col }} {{ profile.dtypes[col] }} {{ profile.unique_values[col] }} {{ profile.missing[col] }} {{ profile.missing_pct[col] }}%
{% if profile.numeric_summary %}

Numeric Summary

{% for col, stats in profile.numeric_summary.items() %} {% endfor %}
Column Count Mean Std Min 25% 50% 75% Max
{{ col }} {{ stats.count | round(0) | int }} {{ stats.mean | round(2) }} {{ stats.std | round(2) }} {{ stats.min | round(2) }} {{ stats['25%'] | round(2) }} {{ stats['50%'] | round(2) }} {{ stats['75%'] | round(2) }} {{ stats.max | round(2) }}
{% endif %}

Column Details

{% for col in profile.columns %}
{{ col }} {{ profile.dtypes[col] }}
{% endfor %}

Missing Values

{% set missing_cols = [] %} {% for col, count in profile.missing.items() %} {% if count > 0 %} {% set _ = missing_cols.append((col, count, profile.missing_pct[col])) %} {% endif %} {% endfor %} {% if missing_cols %}
{% for col, count, pct in missing_cols | sort(attribute=2, reverse=true) %} {% endfor %}
Column Missing Count Missing % Severity
{{ col }} {{ count }} {{ pct }}% {% if pct > 50 %} Critical {% elif pct > 20 %} High {% elif pct > 5 %} Moderate {% else %} Low {% endif %}
{% else %}

No missing values found!

Your dataset is complete.

{% endif %}

Duplicates

{{ quality.duplicate_rows }}
Duplicate Rows
{{ (quality.duplicate_rows / quality.total_rows * 100) | round(2) }}%
Of Total Data

Data Preview (First 100 Rows)

{{ df_head | safe }}
{% endif %}
{% endblock %}