2017-06-23 9 views
2

私はフォールを持っています。データフレーム:パンダのデータフレームに基づいてヒートマップを取得する

ps_variable_1 ps_variable_2 
0  Top 33% Middle 33% 
1  Bottom 33% Middle 33% 
2  Middle 33% Middle 33% 
3  Bottom 33%  Top 33% 
4  Middle 33% Bottom 33% 
5  Top 33% Bottom 33% 
6  Top 33% Bottom 33% 
7  Bottom 33% Middle 33% 
8  Bottom 33%  Top 33% 

新しいデータフレームを3列で取得したいと考えています。上位33%中33%下33%。各列は以下のように3行があります。各グリッドセルの場合

   Top 33%  Middle 33% Bottom 33% 
Top 33%   
Middle 33%   
Bottom 33%   

を、私は上記のデータフレームに基づいて発生回数をカウントします。例えば。最初の行には、ps_variable_1が上位33%または上位3番目のパーセンタイルにあるケース数と、ps_variable_2が上位3番目、中3番目および下位3番目の百分位数にそれぞれ含まれるケース数が含まれています。それをどうやって行うのですか?他の比率にも拡張できるソリューションを好むでしょう。上位20%....

答えて

4

オプション1
pd.crosstab

pd.crosstab(df.ps_variable_1, df.ps_variable_2) 

オプション2
groupbysize

df.groupby(['ps_variable_1', 'ps_variable_2']).size().unstack(fill_value=0) 

オプション3
np.bincount

u1, f1 = np.unique(df.ps_variable_1.values, return_inverse=True) 
u2, f2 = np.unique(df.ps_variable_2.values, return_inverse=True) 
n, m = u1.size, u2.size 
b = np.bincount(f1 * m + f2, minlength=n * m).reshape(n, m) 
pd.DataFrame(b, u1, u2) 
+0

おかげで@piRSquared、これは素晴らしいSOLNです! – user308827

+1

@ user308827それは安堵です。私は私の電話から、チェックすることができずに答えました( - : – piRSquared

関連する問題