skip to content

Absent Values

Holes in the data, how a tool represents them, and what they then do to arithmetic, comparison, grouping and every average downstream. The defaults differ, and they differ quietly.

on this pageshow

questions

22

A cell reading zero, a cell with nothing recorded, and a cell holding text of length zero: how do the three differ?

level: juniorimportance: must knowfreq 78%

answer

  1. three states, one blank-looking screen
  2. measured, supplied, or never recorded
  3. zero is an answer, not a gap
  4. the absence test flags only the unrecorded cell

basics

~20 s

Zero is a measurement whose answer was none, a text value of length zero is a value that was supplied and contains no characters, and only a cell with nothing recorded is absence: no value exists there at all.

solid answer

~50 s

Two of the three are present values and one is not. A **measured zero** is a completed observation that came out as none: the reading happened. A **text value of length zero** was supplied and simply contains no characters; it is as real as any other text. A **cell with nothing recorded** holds no value at all, and it is the only one of the three that absence machinery touches: the dedicated absence check flags it, a step that removes incomplete rows removes its row, and aggregates treat it specially - some designs step over holes and return a number computed from fewer values, others make the whole result absent, so the behaviour is worth naming rather than assuming. The practical consequence is that a store that sold nothing and a store that never reported are different facts, and a report that adds them together answers neither question.

go deeper

for a junior

Name the three states out loud and say which one is absence. Knowing that a zero is a measurement and a blank cell is the lack of one is the whole of the junior bar here.

for a middle

Explain the mechanics: why a dedicated absence check exists rather than an equality comparison, what removing incomplete rows does to each of the three states, and that the treatment of a hole in an aggregate differs between tools.

for a senior

Show the production consequence. Trace one report where a measured zero and an unreported period were added together, and say how you would establish which cells were which before the number was published.

for a principal

The standing question is where the distinction is allowed to be lost. Decide at which boundary your systems convert one state into another, and who is accountable for telling readers which convention a delivered column follows.

## Three states that look the same on screen Nothing useful here is not one state in a data column but several, and an analyst is expected to name at least three of them on sight. **A measured zero** is a completed observation whose answer was none. The meter was read and it had not moved; the shop was open and sold nothing; the count was taken and came to zero. A zero is data. It was produced by the same process that produced every other number in that column, and it is exactly as trustworthy as they are. **A present value of length zero** belongs to text columns. A value was supplied, it arrived, it is stored, and it contains no characters. Somebody submitted a form field without typing into it, or a producing system wrote the field with nothing between its delimiters. It is a real value in the same sense that a value of five characters is a real value; it simply has no characters in it. **A cell with nothing recorded** is the only one of the three that is absence. No observation stands behind it. Whatever the tool uses internally to mark such a cell, the meaning is the same: the table is telling you that it does not have this value. On screen the three are nearly indistinguishable. A zero renders as a zero, a length-zero text value renders as nothing, and an absent cell renders as nothing or as whatever placeholder the display layer picked. Looking at a table is therefore the least reliable way to tell them apart, and it is how most people first try. ## Why only the third one is absence Because two of the three are values, every operation that takes values takes them. Absence is not a value, which is why tools hand you a dedicated **absence test** - the predicate that asks, cell by cell, whether the value is absent - instead of expecting you to compare a cell against something. Why a plain comparison is unreliable depends on the design in front of you. Where absence is carried as a reserved bit pattern inside the number format, that pattern compares unequal to everything, including a copy of itself, so an equality test answers false and tells you nothing. Where the tool defines its own typed absence marker, the comparison can yield a third outcome that is neither true nor false, which then has to be coerced somewhere before it can select rows. The dedicated predicate answers the question directly under either design, and it answers no for a zero and no for a length-zero text value. | State | What produced it | Flagged by the absence test | Removed by dropping incomplete rows | |---|---|---|---| | A measured zero | an observation that came out as none | no | no | | A present value of length zero | a supplied text value with no characters | no | no | | A cell with nothing recorded | no observation at all | yes | yes | ## What each state does downstream - A zero is a term in every sum and a member of every average, and it pulls a mean toward zero exactly as any other small reading would. - A length-zero text value is a legitimate distinct value. It forms its own category in a value-frequency listing, its character length is zero rather than absent, and it survives any step that removes rows containing holes. - A cell with nothing recorded is the only one the absence machinery sees. What an aggregate then does with it is a genuine fork: some designs step over the holes, so a number comes back computed from fewer values; others propagate, so one hole makes the whole answer absent until a flag says otherwise. Both directions exist in tools people actually use, and the skipping one is the more dangerous because it is silent. - The number of cells the absence test flags is a property of the third state alone. A column full of zeros and length-zero text values reports no holes whatsoever. ## How the confusion reaches a published number Take a monthly figure by shop. One shop was open all month and sold none of the product; another closed for refurbishment and filed no return at all. If both arrive as zero, the monthly total is right and the average per shop is wrong, because a shop that did not report has been counted in the denominator as a shop that sold nothing. If both arrive as absent, the outage is visible but the genuine zero has been thrown away, and the product looks better than it is. Only keeping them apart lets you report both the demand figure and the coverage figure, and coverage is usually the more interesting finding. The same confusion in text is quieter. A length-zero value in a name column means the form was submitted with the box untouched, which is a fact about the form. Treating it as absence hides how often that happens; treating absence as a length-zero value invents submissions that never occurred. ## What an interviewer is listening for 1. That you name three states rather than two, and say which single one is absence. 2. That you reach for the absence test rather than a comparison, and can say why a comparison is unreliable. 3. That you turn the distinction into a consequence - a denominator, a coverage figure, an outage - instead of leaving it as a definition.

  • A monthly report shows one shop with zero sales and one shop with nothing recorded - why not treat both as zero?
    Because they answer different questions. Zero sales is an observation about demand; nothing recorded is an observation about the reporting pipeline. Folding the second into the first invents a data point, drags the average per shop down, and hides the outage that is usually the real finding. Leave the gap as a gap and report how many periods went unreported.
  • Why do tools give you a dedicated absence check instead of letting you compare a cell against the absence marker?
    Because comparison is unreliable for absence, and how it fails depends on the design. Where the marker is a reserved bit pattern inside the number format, it compares unequal to everything including a copy of itself, so equality answers false. Where the tool defines its own typed absence marker, the comparison can yield a third outcome that is neither true nor false. A dedicated predicate answers the question directly in both cases.

A clipboard survey. One question was answered none, one was answered with a line drawn through the box, and one was never put to the respondent at all. All three leave the sheet looking sparse, but only the third means nobody was asked - and only it should stay out of the count of answers.

saying these in an interview costs you the question

  • Treats a zero reading and a blank cell as the same value.
  • Calls a supplied text value of length zero a missing value.
  • Tests for absence by comparing the cell against some value.
  • Says the difference is cosmetic because both print as nothing.
  • Assumes every tool does the same thing with a hole in a total.
open as a page

A 10,000-row table reports 8,400 when you count one column's values — what are those two numbers, and what does their difference measure?

level: juniorimportance: must knowfreq 72%

basics

~20 s

They answer different questions. The row count is how many records the table holds; the count of present values is how many of them recorded something in that column. The difference, 1,600, is that column's number of holes.

open as a page

A numeric column has 1,500 of 10,000 cells absent, and every one is filled with zero — what does that cost?

level: juniorimportance: must knowfreq 72%

basics

~20 s

Filling with a constant stacks 1,500 identical values at one point, and where that point sits decides the damage: a zero fill in a column centred above zero drags the average down and leaves filled cells indistinguishable from measured zeros.

open as a page

A column with 40 absent cells is added element-wise to a complete column of equal length — what does the result hold?

level: juniorimportance: must knowfreq 80%

basics

~20 s

Forty cells of the result hold no value, and the remaining cells hold the sum. An operator meeting an absent operand carries the absence into its output rather than skipping it, substituting a zero, or raising an error.

open as a page

A mean over a 10,000-row column with 1,600 cells recording nothing returns a number — which denominator did it use?

level: middleimportance: must knowfreq 78%

basics

~20 s

The count of present values, 8,400 — not the 10,000 rows. An aggregate that steps over the holes removes them first, so the reported number is an average of what was recorded, over a population smaller than the table.

open as a page

A 40-column table has roughly 3% of each column's cells absent; why does dropping every incomplete row delete most of the table?

level: middleimportance: must knowfreq 66%

basics

~20 s

Holes are spread across columns, so a row survives only if all 40 of its cells are present. At 3% per column and independent holes that is 0.97 to the fortieth power, about 30%. Row-wise removal compounds every column's absence rate into one much larger loss.

open as a page

An equality test against an absent value returns no rows, and negating it returns every row — why?

level: middleimportance: must knowfreq 70%

basics

~20 s

Absence is a state, not a value to compare against. Where a design borrows the pattern the floating-point format reserves for a result with no numeric answer, equality is false on every row and its negation true on every row — neither isolates the holes. Use the dedicated absence test.

open as a page

A whole-number column gains a few unrecorded values — when does it keep its integer form, and when is it re-stored wider?

level: middleimportance: must knowfreq 66%

basics

~20 s

Where the only absence marker is a pattern reserved inside the value, a whole-number encoding has no spare pattern, so the column is re-stored in a wider floating-point form. Where absence is tracked beside the values, the width is unchanged.

open as a page

A cell in a typed column always occupies its slot, so how can a tool record that nothing was measured there?

level: juniorimportance: should knowfreq 58%

basics

~20 s

A typed column stores one fixed form in every cell, so absence must be encoded somewhere: a reserved bit pattern inside the value, a validity bit beside it, the language's empty reference, or a marker the tool defines.

open as a page

A temperature column reports no absent cells, yet its minimum is far below anything the instrument can physically read - why?

level: middleimportance: should knowfreq 62%

basics

~20 s

The producer wrote a stand-in code into the column - an ordinary value of the column's own type used to mean no reading. Every absence check reads it as genuine data, so nothing is flagged, and the code lands in the extremes and the averages.

open as a page

A column whose values are all absent sums to zero, exactly as an all-zero column would — why, and when does it not?

level: middleimportance: should knowfreq 47%

basics

~20 s

A skipping sum removes the holes and then folds over what is left; over nothing, a fold returns the operation's identity, which is zero for a sum. A propagating default, or a minimum-present threshold, returns absence instead.

open as a page

One aggregate over a column with holes returns a number and another returns absence — where is that choice made?

level: middleimportance: should knowfreq 58%

basics

~20 s

Per call, by a flag whose default the library author set surface by surface. Nothing in the data decides it: the same column can yield a number on one surface and absence on another, in one tool and one session.

open as a page

An output column holds 90 absent cells but no input column had any — what could have produced them?

level: middleimportance: should knowfreq 42%

basics

~20 s

Two sources manufacture holes out of present data: an operation with no defined answer, such as a zero divided by a zero, and an alignment that pairs row labels present in only one operand. Under a single-marker design both look identical to an unrecorded value.

open as a page

A boolean column, a text column and a time column each need a way to record nothing, so what can serve each?

level: middleimportance: should knowfreq 44%

basics

~20 s

Only encodings that live outside the value serve every column kind. A packed boolean has no spare pattern, a time column needs its own absence object, and text holds the language's empty reference only where cells are references.

open as a page

One column marks an absent value the same way whether it was never measured, does not apply, or found no match - what is lost?

level: seniorimportance: should knowfreq 40%

basics

~20 s

The reason is lost. Absence records only that no value is there, so never measured, does not apply and found no match land in the same cell and become indistinguishable, even though each one calls for a different action.

open as a page

You inherit an extract whose numeric column mixes real zeros, cells with nothing recorded and one repeated round number - how do you establish what each means?

level: seniorimportance: should knowfreq 46%

basics

~20 s

Profile before computing: count the flagged holes, list the distinct values with their frequencies, check the extremes against a defensible range, see whether the zeros arrive in whole rows, then confirm the convention with whoever produced the column.

open as a page

A ratio divides one column's mean by another's, and each column has holes in different rows — why is that ratio not over one population, and what fixes it?

level: seniorimportance: should knowfreq 61%

basics

~20 s

Because skipping happens per column: each mean drops its own column's holes, so the numerator and denominator are averages over different, overlapping sets of rows. Restricting to the rows present in both columns first gives the two numbers one shared population.

open as a page

Readings from 300 devices sit in one table and holes are filled by carrying the last value forward; what silently goes wrong?

level: seniorimportance: should knowfreq 54%

basics

~20 s

The carry walks down the rows in whatever order they currently sit, not down each device's own sequence, so one device's last reading fills another device's hole. Within a single device it also invents readings for the whole time that device was off.

open as a page

Why can two absent keys fall into one group while an equality test between those same two cells reports no match?

level: seniorimportance: should knowfreq 50%

basics

~20 s

Two rules live in the same tool. Scalar comparison is defined by the encoding and cannot call two unknowns equal; the collective surfaces — splitting rows by key, removing repeats, placing rows in an order, matching two tables on a key — must decide for every row, so they treat all absences as one value.

open as a page

A filter and its negation return 6,100 and 3,400 rows from a 10,000-row table — where are the other 500?

level: seniorimportance: should knowfreq 45%

basics

~20 s

Those 500 rows hold no value in the column the condition tested. The comparison was neither true nor false for them, negating it leaves it neither, and a surface that coerces that outcome to false omits the rows from both passes.

open as a page

A ratio column has holes: some rows were never measured, others divided zero by zero — can you still tell them apart?

level: seniorimportance: should knowfreq 38%

basics

~20 s

Only under a design that carries two distinct markers. Where the single absence marker is the floating-point format's reserved pattern, an unrecorded observation and an undefined arithmetic result land on the same pattern and no predicate can separate them.

open as a page

A companion column recording every filled cell is proposed as a pipeline-wide rule — what do you weigh before committing?

level: principalimportance: should knowfreq 42%

basics

~20 s

Recording each fill turns an invisible decision into data a consumer can act on. The costs are one column per filled column, a rule every downstream step must honour, and a boundary decision about where the recording stops.

open as a page