Module pandas_profiling.view.formatters
Formatters are utilities for formatting numbers and certain strings
Source code
"""Formatters are utilities for formatting numbers and certain strings"""
from jinja2.utils import escape
def fmt_color(text: str, color: str) -> str:
"""Format a string in a certain color (`<span>`).
Args:
text: The text to format.
color: Any valid CSS color.
Returns:
A `<span>` that contains the colored text.
"""
return u'<span style="color:{color}">{text}</span>'.format(
color=color, text=str(text)
)
def fmt_class(text: str, cls: str) -> str:
"""Format a string in a certain class (`<span>`).
Args:
text: The text to format.
cls: The name of the class.
Returns:
A `<span>` with a class added.
"""
return u'<span class="{cls}">{text}</span>'.format(cls=cls, text=str(text))
def fmt_bytesize(num: float, suffix: str = "B") -> str:
"""Change a number of bytes in a human readable format.
Args:
num: number to format
suffix: (Default value = 'B')
Returns:
The value formatted in human readable format (e.g. KiB).
"""
for unit in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]:
if abs(num) < 1024.0:
return "{:3.1f} {}{}".format(num, unit, suffix)
num /= 1024.0
return "{:.1f} {}{}".format(num, "Yi", suffix)
def fmt_percent(value: float, edge_cases: bool = True) -> str:
"""Format a ratio as a percentage.
Args:
edge_cases: Check for edge cases?
value: The ratio.
Returns:
The percentage with 1 point precision.
"""
if edge_cases and round(value, 1) == 0 and value > 0:
return "< 0.1%"
if edge_cases and round(value, 1) == 1 and value < 1:
return "> 99.9%"
return "{:2.1f}%".format(value * 100)
def fmt_numeric(value: float) -> str:
"""Format any numeric value.
Args:
value: The numeric value to format.
Returns:
The numeric value with 5 point precision.
"""
return "{:.5g}".format(value)
def fmt(value) -> str:
"""Format any value.
Args:
value: The value to format.
Returns:
The numeric formatting if the value is float or int, the string formatting otherwise.
"""
if type(value) in [float, int]:
return fmt_numeric(value)
else:
return str(escape(value))
def hex_to_rgb(hex):
"""Format a hex value (#FFFFFF) as RGB (255,255,255).
Args:
hex: The hex value.
Returns:
The RGB representation of that hex color value.
"""
hex = hex.lstrip("#")
hlen = len(hex)
return tuple(
int(hex[i : i + hlen // 3], 16) / 255 for i in range(0, hlen, hlen // 3)
)
Functions
def fmt(value)
-
Format any value.
Args
value
- The value to format.
Returns
The numeric formatting if the value is float or int, the string formatting otherwise.
Source code
def fmt(value) -> str: """Format any value. Args: value: The value to format. Returns: The numeric formatting if the value is float or int, the string formatting otherwise. """ if type(value) in [float, int]: return fmt_numeric(value) else: return str(escape(value))
def fmt_bytesize(num, suffix='B')
-
Change a number of bytes in a human readable format.
Args
num
- number to format
suffix
- (Default value = 'B')
Returns
The value formatted in human readable format (e.g. KiB).
Source code
def fmt_bytesize(num: float, suffix: str = "B") -> str: """Change a number of bytes in a human readable format. Args: num: number to format suffix: (Default value = 'B') Returns: The value formatted in human readable format (e.g. KiB). """ for unit in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]: if abs(num) < 1024.0: return "{:3.1f} {}{}".format(num, unit, suffix) num /= 1024.0 return "{:.1f} {}{}".format(num, "Yi", suffix)
def fmt_class(text, cls)
-
Format a string in a certain class (
<span>
).Args
text
- The text to format.
cls
- The name of the class.
Returns
A
<span>
with a class added.Source code
def fmt_class(text: str, cls: str) -> str: """Format a string in a certain class (`<span>`). Args: text: The text to format. cls: The name of the class. Returns: A `<span>` with a class added. """ return u'<span class="{cls}">{text}</span>'.format(cls=cls, text=str(text))
def fmt_color(text, color)
-
Format a string in a certain color (
<span>
).Args
text
- The text to format.
color
- Any valid CSS color.
Returns
A
<span>
that contains the colored text.Source code
def fmt_color(text: str, color: str) -> str: """Format a string in a certain color (`<span>`). Args: text: The text to format. color: Any valid CSS color. Returns: A `<span>` that contains the colored text. """ return u'<span style="color:{color}">{text}</span>'.format( color=color, text=str(text) )
def fmt_numeric(value)
-
Format any numeric value.
Args
value
- The numeric value to format.
Returns
The numeric value with 5 point precision.
Source code
def fmt_numeric(value: float) -> str: """Format any numeric value. Args: value: The numeric value to format. Returns: The numeric value with 5 point precision. """ return "{:.5g}".format(value)
def fmt_percent(value, edge_cases=True)
-
Format a ratio as a percentage.
Args
edge_cases
- Check for edge cases?
value
- The ratio.
Returns
The percentage with 1 point precision.
Source code
def fmt_percent(value: float, edge_cases: bool = True) -> str: """Format a ratio as a percentage. Args: edge_cases: Check for edge cases? value: The ratio. Returns: The percentage with 1 point precision. """ if edge_cases and round(value, 1) == 0 and value > 0: return "< 0.1%" if edge_cases and round(value, 1) == 1 and value < 1: return "> 99.9%" return "{:2.1f}%".format(value * 100)
def hex_to_rgb(hex)
-
Format a hex value (#FFFFFF) as RGB (255,255,255).
Args
hex
- The hex value.
Returns
The RGB representation of that hex color value.
Source code
def hex_to_rgb(hex): """Format a hex value (#FFFFFF) as RGB (255,255,255). Args: hex: The hex value. Returns: The RGB representation of that hex color value. """ hex = hex.lstrip("#") hlen = len(hex) return tuple( int(hex[i : i + hlen // 3], 16) / 255 for i in range(0, hlen, hlen // 3) )