BLOG · June 1, 2026 · 6 min read

Data Analysis in Your Terminal:
5 Tasks Without Pandas

You don't need Jupyter for quick data work. Here's how to analyze, filter, and visualize data entirely from the command line using evolver-tools.

I spend a lot of time in the terminal. When I need to check a CSV file, explore a JSON API response, or get a quick sense of a dataset, reaching for Python or Jupyter feels heavy.

That's why I built evolver-tools — a collection of 260+ CLI tools that run on pure Python stdlib. No pandas, no numpy, no jq, no external dependencies. Just pip install evolver-tools and you're ready.

Here are five real-world data tasks you can do instantly from the command line.

1. Get Statistics on Any CSV File

You have a CSV. You want to know: how many rows? What are the min/max/mean values? Are there missing values? Normally you'd open it in Excel or write a 10-line Python script.

With evolver-tools, one command:

$ evtool csv-stats sales.csv

Column              Type      Count    Unique    Missing    Mean      Min       Max
──────────────────────────────────────────────────────────────────────────
date                str       1,000    312       0          —         —         —
product             str       1,000    47        0          —         —         —
quantity            int       998      12        2          3.42      1         99
unit_price          float     1,000    89        0          29.99     4.99      499.99
total               float     998        —        2          102.41    4.99      49,499.01
region              str       1,000    4         0          —         —         —
sales_rep           str       998      23        2          —         —         —

In one glance you know: 1,000 rows, 2 missing values in quantity, prices range from $4.99 to $499.99, max order is $49,499. That's actionable information in seconds.

Pro tip: Add --histogram to see distribution of numeric columns. Add --output json to pipe results into another tool.

2. Visualize Data as ASCII Charts

You need a quick bar chart to show your team. Opening Excel or matplotlib feels like overkill for a one-off visualization.

$ evtool csv-chart sales.csv --column total --group product --top 10

Top 10 Products by Total Sales
────────────────────────────────────────────────────────────────────

Laptop Pro         ████████████████████████████████  $494,990
Wireless Mouse     ██████████████████████             $324,200
USB-C Hub          ████████████████                   $248,800
Mechanical KB      █████████████                      $189,600
Monitor 27"        ███████████                         $167,300
Webcam HD          ████████                            $124,500
Desk Lamp          ██████                              $94,200
Headphones         █████                               $78,900
Standing Desk      ████                                $62,400
Cable Kit          ███                                 $45,100

Bar charts, line charts, pie charts — all rendered in pure Unicode, no GUI needed. Perfect for embedding in terminal reports, README files, or quick Slack screenshots.

$ evtool csv-chart sales.csv --column total --type line --date column date
$ evtool csv-chart sales.csv --column region --type pie

3. Filter, Sort, and Slice Data

Your CSV has 50,000 rows. You only need the top 10 customers by revenue from the APAC region. Instead of loading it into pandas:

$ evtool csv-filter sales.csv --where "region == 'APAC'" \
    | evtool csv-sort --key total --desc \
    | evtool csv-select --columns name,total \
    | head -11

name,total
Acme Corp,$45,200
Pacific Tech,$38,900
Zenith Ltd,$32,100
...

The Unix pipe philosophy works beautifully here. Each tool does one thing: filter, sort, select columns. Chain them together for complex pipelines.

$ evtool csv-join orders.csv customers.csv --on customer_id > enriched.csv
$ evtool csv-dedup leads.csv --key email > clean_leads.csv
$ evtool csv-sample large.csv --rate 0.1 > sample.csv
Pro tip: All CSV tools handle quoted fields, different delimiters (--delim '|'), and headers automatically. They're streaming — files of any size work.

4. Query and Transform JSON Data

You fetched an API response and need to extract specific fields. Maybe you need to convert it to CSV for further analysis.

$ curl -s https://api.example.com/users | evtool json-pretty

[
  {
    "id": 1,
    "name": "Alice Chen",
    "email": "alice@example.com",
    "role": "admin",
    "stats": {
      "logins": 142,
      "last_active": "2026-05-30"
    }
  },
  ...
]

Need to flatten nested JSON into a table?

$ curl -s https://api.example.com/users \
    | evtool json-select '["id","name","email","stats.logins","stats.last_active"]'

id, name,       email,             logins, last_active
1,  Alice Chen, alice@example.com, 142,   2026-05-30
2,  Bob Smith,  bob@example.com,   87,    2026-05-28

Convert to CSV, validate, merge, or diff JSON files:

$ evtool json2csv data.json > data.csv
$ evtool json-validate config.json          # Silent = valid
$ evtool json-merge base.json patch.json    # Deep merge
$ evtool json-diff old.json new.json        # Show differences

5. Text Processing Pipelines

Sometimes your data isn't in a neat format. Log files, unstructured exports, messy CSVs. The text processing tools handle the messy reality of data work.

$ evtool text-stats server.log

Lines:     14,832
Words:    128,456
Chars:     982,341
Avg line:    66 chars
Longest:    412 chars (line 4,201)

Find patterns across files:

$ evtool grep "ERROR|CRITICAL" server.log \
    | evtool dedup-lines \
    | evtool sort \
    | evtool csv-chart --type bar

Quick conversions and transformations:

$ evtool case-convert --upper names.txt > names_upper.txt
$ evtool wrap --width 72 long_text.txt     # Word-wrap to 72 chars
$ evtool reverse file.txt                   # Reverse lines
$ evtool shuffle playlist.txt               # Randomize order
$ evtool diff file1.txt file2.txt           # Line-by-line diff

Why Terminal Data Analysis Works

There's a reason the Unix philosophy has survived 50+ years. When tools are small, focused, and composable, you solve problems faster:

evolver-tools makes this approach practical by providing well-designed tools that handle edge cases — quoted CSV fields, nested JSON, encoding detection — so you don't have to think about them.

Putting It All Together: Real Pipeline

Here's what a complete analysis looks like — from raw data to insights in under 10 seconds:

$ # Ingest, profile, filter, visualize
$ evtool csv-stats massive_export.csv \
    && evtool csv-filter massive_export.csv --where "status == 'active'" > active.csv \
    && evtool csv-chart active.csv --column revenue --group region --top 5 \
    && evtool csv-to-json active.csv --pretty > report.json

Region     Revenue     Bar
───────────────────────────────
North      $1,234,567  ████████████
Europe     $987,654    ██████████
APAC       $654,321    ██████
LATAM      $234,567    ██
Africa     $123,456    █

No Python script to write. No notebook to open. No libraries to install. One pip install and you're analyzing data at the speed of thought.

Try It Now — No Installation Required

Run evolver-tools directly in your browser or install it in 3 seconds:

pip install evolver-tools

⭐ Star on GitHub Live Browser Demo