Wide and narrow data
Two different methods for presenting tabular data
From Wikipedia, the free encyclopedia
Wide and narrow are terms used to describe two different presentations for tabular data.[1][2]
Terminology
The terms used vary by community and software:
- Wide and long: Common in modern data science and time-series analysis (e.g., pandas, R).
- Un-stacked and stacked: Common in statistical software and spreadsheet operations.
- Pivoted and unpivoted: Common in SQL and data preparation tools like Power Query, where "unpivoting" refers to transforming wide data into a long format.
- Wide and narrow: Common in database modeling.
Wide
Wide, or unstacked data is presented with each different data variable in a separate column.
| Person | Age | Weight | Height |
|---|---|---|---|
| Bob | 32 | 168 | 180 |
| Alice | 24 | 150 | 175 |
| Steve | 64 | 144 | 165 |
Narrow
Narrow, stacked, or long data is presented with one column containing all the values and another column listing the context of the value
| Person | Variable | Value |
|---|---|---|
| Bob | Age | 32 |
| Bob | Weight | 168 |
| Bob | Height | 180 |
| Alice | Age | 24 |
| Alice | Weight | 150 |
| Alice | Height | 175 |
| Steve | Age | 64 |
| Steve | Weight | 144 |
| Steve | Height | 165 |
This is often easier to implement; addition of a new field does not require any changes to the structure of the table, however it can be harder for people to understand.
Implementations
Many statistical and data processing systems have functions to convert between these two presentations, for instance the R programming language has several packages such as the tidyr package. The pandas package in Python implements this operation as "melt" function which converts a wide table to a narrow one. The process of converting a narrow table to wide table is generally referred to as "pivoting" in the context of data transformations. The "pandas" python package provides a "pivot" method which provides for a narrow to wide transformation.