2017-12-13 9 views
1

この作業は簡単なようですが、ここで取り残されています。 私は、salesPercentageに基づいて3つのカテゴリ(F、M、S)に製品を分類するという問題文があります。以下は、データフレームのスナップショットです。パンダのsalePercentageに基づいて商品を分類する

     grandTotal saleRatio 
product    
587a      33330841.0 11.147972 
58cb      20050510.0 6.706177  
587e      15157320.0 5.069581  
58cf      11811805.0 3.950626  
58bg      10723140.0 3.586506  

収益の60%を生成する製品グループに「F」ステータスを割り当てる必要があります。次の30%は「M」、最後の10%は「S」です。

これを行うには、どのような方法が最適です。私は以下を試しました:

s=0 
index_60=[] 
index_30=[] 
index_10=[] 
for i in productSaleValue.index.values: 
    if(s<=60): 
     index_60.append(i) 
     s=s+productSaleValue.saleRatio[i] 
    if ((s>60)&(s<=90)): 
     s=s+productSaleValue.saleRatio[i] 
     index_30.append(i) 
    elif ((s>90)&(s<=100)): 
     s=s+productSaleValue.saleRatio[i] 
     index_10.append(i) 

しかし私はこれに関するデータを失っています。親切に共有する

+0

を? –

+0

'salePercentage'、' saleRatio'と "revenue of revenue"は同じですか? – Goyo

+0

はい@gayo。 'saleRatio'は、基本的に、その製品によって得られた収益の割合です。 –

答えて

1

DataFrame.cumsum()を使用すると、列の累積合計を取得できます。

例を参照してください:どのようにあなたがsalePercentageを計算している

import pandas as pd 
import numpy as np 
in_data = np.random.random(10) 
df = pd.DataFrame() 
df['A'] = in_data 
df['fraction'] = df['A']/df['A'].sum() 
df.sort_values(by='fraction', inplace=True) 
df['csum'] = df.fraction.cumsum() 
df_60 = df[df.csum <= 0.60] 
df_30 = df[(df.csum > 0.60) & (df.csum <= 0.90)] 
df_10 = df[df.csum > 0.90] 
関連する問題