Prettytable in Python
1. Introduction
PrettyTable
is a Python library used to create visually appealing tables in text format. It is especially useful for displaying tabular data in a structured and readable way. It allows users to add columns and rows dynamically, format the output, and customize styles.
2. Installation
To use PrettyTable
, you need to install it first. You can install it using pip
:
pip install prettytable
3. Importing PrettyTable
Once installed, you can import it into your Python script:
from prettytable import PrettyTable
4. Creating a Simple Table
You can create a table by defining column names and adding rows.
4.1 Creating a Table Object
from prettytable import PrettyTable
# Create a PrettyTable object
table = PrettyTable()
# Define column names
table.field_names = ["ID", "Name", "Age", "Country"]
# Add rows of data
table.add_row([1, "Alice", 25, "USA"])
table.add_row([2, "Bob", 30, "Canada"])
table.add_row([3, "Charlie", 28, "UK"])
# Print the table
print(table)
Output:
+----+---------+-----+---------+
| ID | Name | Age | Country |
+----+---------+-----+---------+
| 1 | Alice | 25 | USA |
| 2 | Bob | 30 | Canada |
| 3 | Charlie | 28 | UK |
+----+---------+-----+---------+
5. Adding Rows and Columns
You can add rows using:
table.add_row(["4", "David", 22, "Germany"])
Or add multiple rows at once:
table.add_rows([
[5, "Eve", 26, "Australia"],
[6, "Frank", 29, "India"]
])
Adding columns:
table.add_column("Gender", ["F", "M", "M", "M", "F", "M"])
6. Changing Table Appearance
6.1 Adjusting Table Alignment
You can align the text inside the columns:
table.align["Name"] = "l" # Left align
table.align["Country"] = "r" # Right align
print(table)
6.2 Adjusting Table Borders
Removing borders:
table.border = False
print(table)
Adding a different horizontal character:
table.horizontal_char = "*"
print(table)
Changing vertical characters:
table.vertical_char = "!"
print(table)
6.3 Changing Header and Row Styles
You can change the column headers to uppercase:
table.field_names = [header.upper() for header in table.field_names]
You can set table style to MS Word style:
table.set_style("MSWORD_FRIENDLY")
print(table)
7. Sorting Data
You can sort a table by a specific column:
table.sortby = "Age"
print(table)
Sort in descending order:
table.sortby = "Age"
table.reversesort = True
print(table)
8. Using PrettyTable with Pandas
If you have a pandas.DataFrame
, you can convert it into a PrettyTable:
import pandas as pd
data = {
"ID": [1, 2, 3],
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 28]
}
df = pd.DataFrame(data)
table = PrettyTable()
table.field_names = df.columns.tolist()
for row in df.itertuples(index=False):
table.add_row(row)
print(table)
9. Exporting Tables
You can export a table to a string:
table_str = table.get_string()
with open("table.txt", "w") as f:
f.write(table_str)
10. Conclusion
PrettyTable
is a powerful library for displaying structured data in pretty output. Very flexible, supports sorting, alignment, and many different styles, this makes it really useful in command-line applications, debugging, and reporting.