Plotting a bar plot with DataFrame
For my class demo on 12 Jul 2018
This is how it looks like:
## Concat
%matplotlib inline
import pandas as pd
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
import numpy as np
d1 = pd.read_csv("data/ura-private-district9.csv",skiprows=2)
d2 = pd.read_csv("data/ura-private-district3.csv",skiprows=2)
d = pd.concat([d1,d2])
d = d.rename(index=str,
columns={"S/N":"SerialNumber","Price ($)":"Price",
"Project Name": "Project"})
d["SerialNumber"] = pd.to_numeric(d["SerialNumber"], errors="coerce")
d = d[~pd.isnull(d.Price)]
d["Unit Price ($psf)"] = pd.to_numeric(d["Unit Price ($psf)"], errors="coerce")
d["Date of Sale"] = pd.to_datetime(d["Date of Sale"], errors="coerce")
projects = d.groupby("Project")
medianpricebyproject = projects['Price'].median()
medianpricebyproject= pd.DataFrame(medianpricebyproject).sort_values(by=["Price"],
ascending=False)
remover1 = lambda x: x.strip(' ').replace("\n","")
d_subset_01 = medianpricebyproject[medianpricebyproject.Price>5000000]
d_subset_01 = d_subset_01.sort_values(by=["Price"],ascending=False)
ax = d_subset_01.plot(kind="bar",figsize=(20,10))
from matplotlib.ticker import FuncFormatter
def millions(x, pos):
'The two args are the value and tick position'
return '$%1.1fM' % (x*1e-6)
formatter = FuncFormatter(millions)
ax.yaxis.set_major_formatter(formatter)
Comments
Post a Comment