2017-04-16 12 views
1

私はいくつかのデータを持っています。パンダ:上から下へのプロットをプロット

上位10%、上位20%、...トップ100%を焼きパイの平均数:

enter image description here

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

baked_count = np.random.normal(10, scale = 3.0, size = 100) 

df = pd.DataFrame(baked_count, columns = ['performance']) 

df['performance'].hist() 
plt.show() 

points_x = [] 
points_y = [] 

x = 0 
for index, row in df.sort_values('performance', ascending = False).iterrows(): 
    y = df[df['performance'] >= row['performance']]['performance'].mean() 

    x += 1 

    points_x.append(x) 
    points_y.append(y) 

points_x = np.array(points_x)  
points_y = np.array(points_y)  

plt.scatter(points_x, points_y) 

plt.axvline(points_x.min(), color='g', linestyle='dashed', linewidth=1) 
plt.axvline(points_x.max(), color='g', linestyle='dashed', linewidth=1) 
plt.axhline(points_y.min(), color='g', linestyle='dashed', linewidth=1) 
plt.axhline(points_y.max(), color='g', linestyle='dashed', linewidth=1) 

plt.show() 

Iは、チャート示すプロットしたいです何かを行うためにいくつかの標準的なnumpy/pyplot/pandasの方法はありますか?

答えて

1

私が正しく理解していれば、ソートされたperformanceシリーズの累積平均を計算したいと思います。これを行うには、シリーズcumsum()を累積カウントで除算します。例:

x = np.arange(1, df.shape[0]+1) 
y = df.performance.sort_values(ascending=False).cumsum()/x 
plt.scatter(x, y) 

またはもう少しエレガント平均expandingと:

y = df.performance.sort_values(ascending=False).expanding().mean() 
関連する問題