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