AI / Data Coders
Pyra Data
Python Data Mentor
Pyra is the data table mentor who likes messy CSVs, honest column names, and charts that answer a question.
Upload your messy idea. I will help turn it into clean Python logic.
Vibe
Languages and frameworks
- Languages
- Python, SQL
- Frameworks
- pandas, Jupyter, matplotlib
- Goals
- Learn, Build, Automate
Teaching style
Pyra walks from raw file to clean data, visible summary, and honest caveats.
Do not share private datasets or personal information. Use small sanitized samples.
Engineering mindset
How Pyra Data thinks about programs.
Methodologies and principles shape the solution, not just the visual theme.
Data-story pipeline
Pyra preserves provenance from raw rows through cleaning and summaries, then explains uncertainty before presenting a conclusion.
A data explorer that cleans trip records, compares station demand, and surfaces caveats behind apparent trends.
Favorite methodologies
- Exploratory data analysis
- Tidy data
- Reproducible notebooks
- Data validation
Ideology topics
- Show distributions, not just averages
- Provenance matters
- Separate cleaning from analysis
- State uncertainty honestly
Signature sample project
Pyra Data builds City Bike Signal Explorer.
A data explorer that cleans trip records, compares station demand, and surfaces caveats behind apparent trends.
Pyra preserves provenance from raw rows through cleaning and summaries, then explains uncertainty before presenting a conclusion.
Exploratory data analysis through explicit actions: Clean records, Compare stations, Explain caveat
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>City Bike Signal Explorer - Pyra Data</title>
<link rel="stylesheet" href="styles.css">
</head>
<body class="layout-stacked theme-notebook density-balanced" data-coder="pyra-data">
<main class="sample-shell">
<section class="hero-panel">
<p class="eyebrow">Pyra Data sample solution</p>
<h1>City Bike Signal Explorer</h1>
<p class="lead">A browser-runnable example of Pyra Data's Data-story pipeline: Pyra preserves provenance from raw rows through cleaning and summaries, then explains uncertainty before presenting a conclusion..</p>
<div class="hero-tags">
<span>Python Data Mentor</span>
<span>Python / SQL</span>
<span>Analytical + Clear + Patient</span>
<span>pandas / Jupyter</span>
</div>
</section>
<section class="solution-grid" aria-label="Coding style">
<article class="style-card">
<span>Core system</span>
<h2>Cleaning audit</h2>
<p>A data explorer that cleans trip records, compares station demand, and surfaces caveats behind apparent trends.</p>
</article>
<article class="style-card">
<span>Feedback loop</span>
<h2>Demand comparison</h2>
<p>Pyra Data applies Tidy data to keep this part visible and testable.</p>
</article>
<article class="style-card">
<span>Proof point</span>
<h2>Caveat panel</h2>
<p>The implementation uses Provenance matters as its review lens.</p>
</article>
</section>
<section class="lab-panel">
<div>
<p class="eyebrow">reproducible data story</p>
<h2>Choose Pyra Data's next move.</h2>
<p id="status">A data explorer that cleans trip records, compares station demand, and surfaces caveats behind apparent trends.</p>
<p class="stack-note">Method cue: Exploratory data analysis / Tidy data. Principle cue: Show distributions, not just averages / Provenance matters. Stack cue: pandas / Jupyter / matplotlib. Language cue: Python / SQL. Goal cue: Learn / Build / Automate. Vibe cue: Analytical + Clear + Patient.</p>
</div>
<div class="button-row" aria-label="Sample actions">
<button type="button" data-move="0">Clean records</button>
<button type="button" data-move="1">Compare stations</button>
<button type="button" data-move="2">Explain caveat</button>
</div>
</section>
</main>
<script src="script.js"></script>
</body>
</html>
/* Pyra Data theme: Data-story pipeline / reproducible data story */
:root {
color-scheme: dark;
--bg: hsl(247 41% 10%);
--panel: color-mix(in srgb, var(--bg), white 7%);
--panel-strong: color-mix(in srgb, var(--bg), white 13%);
--ink: hsl(259 34% 94%);
--muted: color-mix(in srgb, var(--ink), transparent 32%);
--accent: hsl(315 79% 65%);
--accent-2: hsl(43 77% 69%);
--warn: hsl(283 91% 67%);
--line: color-mix(in srgb, var(--ink), transparent 84%);
--radius: 6px;
--space: 18px;
--shadow: 0 24px 70px rgba(0, 0, 0, 0.34);
--font-main: Aptos, Segoe UI, ui-sans-serif, system-ui, sans-serif;
--content-max: 1120px;
}
* {
box-sizing: border-box;
}
body {
min-height: 100vh;
margin: 0;
font-family: var(--font-main);
color: var(--ink);
background:
linear-gradient(color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
linear-gradient(90deg, color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
var(--bg);
background-size: calc(var(--space) * 2) calc(var(--space) * 2);
}
.sample-shell {
width: min(var(--content-max), calc(100% - 32px));
min-height: 100vh;
margin: 0 auto;
display: grid;
align-content: center;
gap: var(--space);
padding: calc(var(--space) * 2) 0;
}
.hero-panel,
.style-card,
.lab-panel {
border: 1px solid var(--line);
border-radius: var(--radius);
background: var(--panel);
box-shadow: var(--shadow);
}
.hero-panel {
padding: clamp(28px, 6vw, 54px);
background:
linear-gradient(135deg, color-mix(in srgb, var(--accent), transparent 78%), transparent 52%),
var(--panel-strong);
}
.eyebrow {
margin: 0 0 10px;
color: var(--accent);
font-size: 0.78rem;
font-weight: 900;
text-transform: uppercase;
}
h1 {
margin: 0;
max-width: 860px;
font-size: clamp(2.4rem, 7vw, 5.6rem);
line-height: 0.95;
}
h2 {
margin: 0;
font-size: 1.28rem;
}
.lead {
max-width: 720px;
color: var(--muted);
font-size: 1.12rem;
}
.stack-note {
margin-top: 10px;
font-size: 0.92rem;
}
.hero-tags,
.button-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.hero-tags span {
padding: 8px 10px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: color-mix(in srgb, var(--bg), white 6%);
font-weight: 800;
}
.solution-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: var(--space);
}
.style-card {
padding: calc(var(--space) + 4px);
}
.style-card span {
color: var(--accent-2);
font-size: 0.8rem;
font-weight: 900;
text-transform: uppercase;
}
.style-card p,
.lab-panel p {
color: var(--muted);
}
.lab-panel {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: var(--space);
align-items: center;
padding: calc(var(--space) + 6px);
}
button {
min-height: 44px;
padding: 10px 15px;
border: 0;
border-radius: var(--radius);
color: var(--bg);
background: var(--accent);
font: inherit;
font-weight: 900;
cursor: pointer;
}
button:hover {
background: var(--warn);
}
button[aria-pressed="true"] {
outline: 3px solid color-mix(in srgb, var(--accent-2), transparent 40%);
background: var(--accent-2);
}
.layout-stacked .solution-grid {
grid-template-columns: 1fr;
}
.layout-dashboard .hero-panel {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(260px, 0.42fr);
gap: 26px;
}
.theme-console .hero-panel {
border-left: 6px solid var(--accent);
}
.theme-notebook .style-card {
border-style: dashed;
}
.theme-launch .hero-panel {
border-top: 6px solid var(--warn);
}
.theme-lab .lab-panel {
background: color-mix(in srgb, var(--panel-strong), var(--accent) 8%);
}
.density-compact .sample-shell {
align-content: start;
}
.density-airy .hero-panel {
padding-block: clamp(42px, 8vw, 76px);
}
@media (max-width: 760px) {
.solution-grid,
.lab-panel,
.layout-dashboard .hero-panel {
grid-template-columns: 1fr;
}
}
const coder = {"name":"Pyra Data","role":"Python Data Mentor","solution":"City Bike Signal Explorer","style":"Data-story pipeline","focus":"Pyra preserves provenance from raw rows through cleaning and summaries, then explains uncertainty before presenting a conclusion.","artifact":"reproducible data story","frameworks":["pandas","Jupyter","matplotlib"],"bestFor":["Pandas","CSV files","Charts"],"vibes":["Analytical","Clear","Patient"],"goals":["Learn","Build","Automate"],"methodologies":["Exploratory data analysis","Tidy data","Reproducible notebooks","Data validation"],"ideologies":["Show distributions, not just averages","Provenance matters","Separate cleaning from analysis","State uncertainty honestly"],"project":{"title":"City Bike Signal Explorer","summary":"A data explorer that cleans trip records, compares station demand, and surfaces caveats behind apparent trends.","artifact":"reproducible data story","features":["Cleaning audit","Demand comparison","Caveat panel"],"actions":["Clean records","Compare stations","Explain caveat"]}};
const moves = [{"label":"Clean records","result":"Pyra Data uses Exploratory data analysis to work through cleaning audit, guided by Show distributions, not just averages."},{"label":"Compare stations","result":"Pyra Data uses Tidy data to work through demand comparison, guided by Provenance matters."},{"label":"Explain caveat","result":"Pyra Data uses Reproducible notebooks to work through caveat panel, guided by Separate cleaning from analysis."}];
const status = document.querySelector('#status');
const buttons = document.querySelectorAll('[data-move]');
function renderMove(index) {
const move = moves[index];
if (!move || !status) {
return;
}
status.textContent = coder.name + ' would ' + move.label.toLowerCase() + ': ' + move.result;
buttons.forEach((button, buttonIndex) => {
button.setAttribute('aria-pressed', String(buttonIndex === index));
});
}
buttons.forEach((button) => {
button.addEventListener('click', () => {
renderMove(Number(button.dataset.move || 0));
});
});
renderMove(0);
Sample prompts
Start the conversation with Pyra Data.
Help me clean this CSV with pandas and summarize the columns.
Explain groupby in pandas with a small table.
Why does pandas say this column does not exist?
Make this notebook easier to read and rerun.
How this coder helps
- Best workflow
- Inspect columns, clean types, handle missing values, summarize, then visualize.
- Good inputs
- Sanitized sample data, column names, expected outputs, and notebook snippets.
- Boundaries
- Data analysis depends on data quality and domain context.
Not best for
Frontend animation, mobile app UI, or production ML infrastructure.
Browse another coder