Make Your Tabular Information Stand Out by way of CLI With These Ideas and Tips | by Federico Trotta | Apr, 2023

Improve readability: ideas for displaying datasets within the CLI
A couple of days in the past I wished to assist my father resolve an issue. His want was to mixture, filter, and show some information as quick as doable. Effectively…the reality is that he printed the information (one thing like 10 pages every time!!) and search the information by hand! I noticed his difficulties and determined to assist him instantly.
Nothing as tough for somebody who can analyze information as I’m: the information was already in Excel format, so a Jupyter Pocket book and Pandas have been the proper selections.
The issue is that I don’t work for my father. Additionally, we go away in several cities and see one another solely each couple of weeks. So, I wanted to present him a instrument he might use with the next traits:
- Easy utilization.
- Don’t make the PC explodes if he writes one thing mistaken.
That is why I assumed to create a small program that could possibly be managed by way of CLI. What I wished to create was simple: the consumer writes one thing by way of the command line. Then, this system exhibits the consumer all the information related as Pandas would do, however within the terminal.
So, on this article, I’ll present you the way we are able to show tabular information by way of CLI (Command Line Interface. That’s: the terminal, in case you didn’t know). We’ll create a easy challenge to get you instantly hands-on Python and focus on the libraries I used.
So, initially, let’s create some tabular information only for the sake of the train:
import pandas as pd# Create information
information = {"fruit":["banana", "apple", "pear", "orange"],
"shade":["yellow", "red", "green", "orange"],
"weight(kg)":[0.3, 0.1, 0.1, 0.2]
}
# Remodel information to information body
df = pd.DataFrame(information)
So, these are our information:
We have now created some tabular information that comprise info on some fruits, significantly: the title of the fruit, the colour, and the load in kilograms.
Now, to make it “extra actual”, we are able to reserve it into an Excel file like so:
# Save information body to xlsx file
df.to_excel("fruit.xlsx")
NOTE:
This technique of saving recordsdata that Pandas provides us could be very helpful.
For instance, we are able to use it to transform CSV recordsdata into XLSX; We did it
on this article right here.
Now, we’ll create a easy filter that doesn’t want Python if we are able to use Excel a bit bit. The issue I confronted was extra difficult, however right here we’re creating it merely on goal: our scope is to not present that this methodology is best than one other. Right here we’re displaying how we are able to show tabular information by way of CLI, and a easy instance will do the job.
So, let’s say that is our downside: we would like the consumer to write down the title of a fruit and our program returns all of the options of the fruit chosen. We additionally need the filter to be in some way “clever” in order that if the consumer writes “pea” it can show the options associated to “pear”.
To take action, in Pandas we are able to use the tactic str.incorporates()
. Let’s strive it in our Jupyter Pocket book:
import pandas as pd# Import information
df = pd.read_excel("fruit.xlsx")
# Filter for pear
data_frame = df[df["fruit"].str.incorporates("pea")]
# Present filtered information
data_frame.head()
And we get:
Learn it rigorously: we wrote “pea” as a typo on goal to get positive Pandas returns the information anyway. And it does, as anticipated.
So, now now we have to face one other downside: the intervention of the consumer by way of CLI. So far as I do know, we are able to use two totally different strategies in these instances: we are able to use the enter
built-in perform or we are able to use the library argparse
.
In case you missed it, I’ve written an article on how we are able to use argparse
in Information Science. Test it out right here:
Now, on this case, I made a decision to make use of the enter
built-in perform as a result of I consider it’s simpler to make use of, and in easy instances like these is an excellent alternative. In truth, that is the proper alternative if we simply must move a string as an argument by way of CLI (you may learn the documentation here).
We are able to use the enter
perform like so:
# Consumer enter
fruit = enter("filter the information for the sort of fruit: ")
Now, let’s see how this works and the way it returns the information. That is the code we are able to use:
import pandas as pd# Consumer enter
fruit = enter("filter the information for the sort of fruit: ")
# Import information
df = pd.read_excel("fruit.xlsx")
# Filter for consumer enter
data_frame = df[df["fruit"].str.incorporates(fruit)]
# Print outcomes
print(data_frame)
NOTE:
take a look at the distinction of how we have pasted the arguments within the methodology
str.incorporates(). Aboved we have handed "pea" with quotes as a result of we have been
looking out immediately for a string.
On this case, insetead, now we have handed "fruit" with out quotes as a result of
now we have used "fruit" as a variable to invoke the enter() perform so it
must be handed as is (with no quotes).
Now, let’s reserve it as fruit.py
, transfer it to the folder the place fruit.xlsx
is positioned and let’s run it by way of the terminal:
Effectively, as we are able to see, all the things works high quality. However only one factor: can we enhance the visualization? What if we’d wish to show higher the information as if we have been on Pandas?
Effectively, the answer I discovered was to make use of the library tabulate
(here’s the documentation).
So, let’s add tabulate
to our code and see what occurs:
import pandas as pd
from tabulate import tabulate# Consumer enter
fruit = enter("filter the information for the sort of fruit: ")
# Import information
df = pd.read_excel("fruit.xlsx")
# Filter for consumer enter
data_frame = df[df["fruit"].str.incorporates(fruit)]
# Print outcomes
print(tabulate(data_frame, headers='keys', tablefmt='psql'))
And we get:
As we are able to see, the information are displayed in a “tabular manner”, which is cleaner. Additionally, as we are able to see, the code appropriately manages typos if we seek for “pea” as we did in Jupyter earlier than.
I hope this helps you if it is advisable to show tabular information by way of CLI. If in case you have every other strategies, please, let me know within the feedback: I’m at all times open to bettering and studying one thing new.