Everything can be found on Google

Groupby then plot

df.groupby('type').apply(lambda x: plt.hist(x['price'] ,alpha=0.75, weights=np.ones_like(x['price']) / len(x['price']),bins=np.arange(0.5e6, 5e6, 0.1e6)) )

\#Eli filtered out results where condos cost more than $5m.

Some Logarithm Rules

if and only if a=b, log(a)=log(b)

if and only if a>b, log(a)>log(b)

log(a)+log(b)=log(a*b)

log(a)-log(b)=log(a/b) [We will use this for the analysis below]

log(a^m)=mlog(a)

In graphs, if y1>y2>y3, then log(y1)>log(y2)>log(y3).

If we are looking at equally spaced apart results on log scale, i.e. log(y1)-log(y2)=log(y2)-log(y3),

Then log(y1/y2)=log(y2/y3), which means y1/y2=y2/y3 [As above]

So, if y1/y2 is 2, then y2/y3=2

Caveats of log-transformation: log(0) is not defined.

As a matter of fact, log(a) is not defined for any a<=0

Additional challenge: if y1/y2=3, what is y1/y3, given the "equally space on log scaled chart" situation.

Cindy is a really nice and cute little student, except when she's with Alyssa