> For the complete documentation index, see [llms.txt](https://zmnako.gitbook.io/datascience/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zmnako.gitbook.io/datascience/python-data-hierarchy.md).

# Python Data Hierarchy

An introduction to main Python data hierarchy

*Note: This will be updated and linked to further content development*

A subset of the data types that are built into Python.&#x20;

### **Numbers**

We use numbers all the time. Numbers can either be integrals or non-integrals.&#x20;

Arithmetic operators and arithmetic built-in functions will return numbers. Numeric objects are immutable. In other words, when a number is created, it cannot be changes or a number within it be replaced. Python numbers are the same as mathematical numbers, but subject to the limitations of numerical representation in computers.

* ***Integral***
  * ***Integers**:* A whole number that can be positive, negative or zero.
  * ***Booleans**:* A data type that has one of two possible values (`true` or `false`)
* ***Non-integral***
  * ***Floats**:* A number that has a `decimal` place. We use float data type when we need more precision.
  * ***Decimals**:* The decimal data type is an exact numeric defined by its `precision` (total number of digits) and `scale` (number of digits to the right of the **decimal** point).
  * ***Complex*** ***numbers**:* A combination of a real and an imaginary number in the form **`a + bi`** where **`a`** and **`b`** are real numbers, and **`i`** is the "unit imaginary number" `√(−1)`
  * ***Fractions***: Fraction of a number, for example 1/8, 3/4, 5/8 etc.

### Collections

* **Sequences**: Sequences represent finite ordered sets indexed by natural numbers.
  * ***Mutable***: Mutable sequences can be changed after they are created.
    * Lists
  * ***Immutable***: Immutable sequences can **NOT** be changed after they are created.
    * Tuples
    * Strings
* **Sets**
  * ***Mutable***
    * Sets
  * ***Immutable***
    * Frozen sets
* **Mappings**: These represent finite sets of objects indexed by arbitrary index sets.
  * ***Dictionaries***: These represent finite sets of objects indexed by nearly arbitrary values.
* **Callables**
  * ***User-Defined Functions***
  * ***Generators***
  * ***Classes***
  * ***Instance Methods***
  * ***Built-in Functions*** (for example; `len(),` `open()`)
  * ***Built-in Methods*** (for example; `my_list.append(x)`)

### Singletons

* *None*
  * It means that there is no value (empty record). This can be used in function to explicitly return nothing. This type has a single value (`singletons`). This object is accessed through the built-in name `None`. `None` truth value is **`false`**.
* *Ellipsis*
  * Similar to `None`, `Ellipsis` has a single value. This object is accessed through the built-in name `Ellipsis`. It is used to indicate the presence of the "**...**" syntax in a **slice**. `Ellipsis`

    &#x20;truth value is **`true`**.

You can read more on Python Data Types in Python documentation [here](https://docs.python.org/2.0/ref/types.html)
