import pandas as pd
import numpy as np
from plotnine import *
from plotnine import options
options.figure_size = (12, 8)
from dfply import *
import warnings
warnings.filterwarnings('ignore')
streams = pd.read_feather( '../../data/pop_5_release.feather')
def streams_based_on(price, pps = 5e-3, pop_5_slippage = 0.15, artist_adv = 0.8):
return price/(pps*(1-pop_5_slippage)*artist_adv)
two_limit = streams_based_on(2e3)
min_limit = streams_based_on(5e3)
tenk_lim = streams_based_on(10e3)
twenty_lim = streams_based_on(20e3)
fifty_lim = streams_based_on(50e3)
streams['Artist_Advance'] = pd.cut(streams['streams'],
bins = [0,two_limit, min_limit, tenk_lim, twenty_lim, fifty_lim, 100e20],
labels = ['<2k','5k', '10k', '20k', '30k', '>50k'])
actual_stream_counts = streams.groupby('Artist_Advance')['streams'].agg([len, min, np.mean, np.median,max])
actual_stream_counts.columns = ['Number of tracks', 'Min streams', 'Mean streams', 'Median streams', 'Max Streams']