python: Creating a simple bar plot with python, matplotlib module and csv data

This is so simple, it needs no heading..

08/19/201810:10:49 PM Drinks Coffee as usual…


Straight to the point:

So this is the CSV data I will be working with ( generated using the website: https://mockaroo.com)

MOCK_DATA

Goal: Create a bar plot showing  the number of emails based on the alphabets they begin with . For instance, how many emails begin with “a” etc… This can be useful for visualizing emails from various email providers (e.g. yahoo, gmail, etc..).

The code……..

 

[sourcecode lang=”python”]

import csv, matplotlib.pyplot as plt, numpy as np
filename = "MOCK_DATA.csv"

def count_email(rows):
dictionary = {}
for row in rows:
email = row[3]
if email[0] not in dictionary:
dictionary[email[0]] = 0
dictionary[email[0]] += 1
return dictionary;

def plot_hist(dictionary):
keys = dictionary.keys()
data = []
for key in keys:
data.append(dictionary[key])
x = np.arange(len(keys))
plt.bar(x, height=data)
plt.xticks(x+0.1, keys)
plt.xlabel("Emails start with…")
plt.ylabel("Frequency")
plt.show()

data = []

try:
with open(filename) as f:
reader = csv.reader(f)
data = []
for row in reader:
data.append(row)
except csv.Error as e:
print("Error while readinf csv file ", e)
sys.exit(-1)
if data:
soln = count_email(data)
if soln:
plot_hist(soln)

[/sourcecode]

Notes: This assumes your files are all in the same directory ( same level).

Running the code like this: 

 

Produces:

 

Well that was it… if you have suggestions, improvements, questions, do not hesitate to comment down below.

See ya.