When data is missing (None or empty strings), tabulate uses the remaining data in the column to infer the column type. This type influences how objects (like fractions.Fraction) are rendered. You can specify how to display missing values using the missingval argument.
from fractions import Fraction
test_table = [
[None, "1.23423515351", Fraction(1, 3)],
[Fraction(56789, 1000000), 12345.1, b"abc"],
["", b"", None],
[Fraction(10000, 3), None, ""],
]
print(tabulate(test_table, floatfmt=",.5g", missingval="?"))