Explore populated values
Once you know which fields are filled in, look at what they contain. Use df and fw from Getting started to explore the image columns:
patterns = fw.value_patterns(df, features=["image_1", "image_2"])summaries = patterns.to_frame("summaries")print( summaries[["feature", "populated", "missing"]].to_string( index=False ))feature populated missingimage_1 6 0image_2 5 1Read the findings
Section titled “Read the findings”findings = patterns.to_frame("findings")print(findings[["id", "statement"]].to_string(index=False))id statementf0 image_1: numeric range and observed spacingf1 image_2: numeric range and observed spacingf2 Indexed family: image_1, image_2f3 image_2 has a constant offset relative to image_1In this constructed example, the second image value is two greater than the first wherever both are present. That is a lead to investigate in real data, rather than a reason to fill the missing image value automatically.
Fieldwork also recognizes image_1 and image_2 as a family of indexed names. Similar names alone do not show that columns contain equivalent values.
Know what each check describes
Section titled “Know what each check describes”For strings, summaries show lengths, three-character prefixes, and formats such as A-9 for a run of letters followed by a hyphen and digits. For numbers, they show finite ranges, observed spacing, and possible constant offsets or ratios between columns.
Ratio checks exclude zero denominators. Numerical pair checks need at least two finite paired rows and use floating-point tolerances. The result records how many rows were included and excluded.
Add by=["exam"] to ask whether a field stays constant within each exam. To investigate which columns determine others and retrieve disagreements, use dependency discovery.
The sensor walkthrough follows format differences and unit conversions back to individual records. For simple distributions, start with levels; use joint_counts to count combinations of two fields.