22

パンダの記述からの出力の一部を省略する方法はありますか? このコマンドは、テーブル出力で必要なものを正確に提供します(単純な日付によるexecuteTimeのカウントと平均)

df.groupby('simpleDate').executeTime.describe().unstack(1)

しかし、私が望むのはそれだけです。std、min、maxなどを削除したい...これまでのところ、列のサイズを変更する方法しか読んでいません。

答えは、describe を使用せずに行を書き直すことになると思いますが、simpleDate でグループ化し、executeTimeの平均値でカウントを取得する運がありませんでした。

私は日付で数えることができます:

df.groupby(['simpleDate']).size()

または日付によるexecuteTime:

df.groupby(['simpleDate']).mean()['executeTime'].reset_index()

しかし、それらを組み合わせる構文がわかりません。

私の望む出力:

            count  mean  
09-10-2013      8  20.523   
09-11-2013      4  21.112  
09-12-2013      3  18.531
...            ..  ...
4

5 に答える 5

32

Describe はシリーズを返すので、必要なものを選択するだけです

In [6]: s = Series(np.random.rand(10))

In [7]: s
Out[7]: 
0    0.302041
1    0.353838
2    0.421416
3    0.174497
4    0.600932
5    0.871461
6    0.116874
7    0.233738
8    0.859147
9    0.145515
dtype: float64

In [8]: s.describe()
Out[8]: 
count    10.000000
mean      0.407946
std       0.280562
min       0.116874
25%       0.189307
50%       0.327940
75%       0.556053
max       0.871461
dtype: float64

In [9]: s.describe()[['count','mean']]
Out[9]: 
count    10.000000
mean      0.407946
dtype: float64
于 2013-10-01T19:31:15.517 に答える
5

@Jeffが提供するソリューションは、シリーズでのみ機能します。

@Rafaは要点です:df.describe().info()結果のデータフレームが持っていることを明らかにしますIndex: 8 entries, count to max

df.describe().loc[['count','max']]動作しますがdf.groupby('simpleDate').describe().loc[['count','max']]、OPが尋ねたものであり、動作しません。

解決策はこれかもしれないと思います:

df = pd.DataFrame({'Y': ['A', 'B', 'B', 'A', 'B'],
                    'Z': [10, 5, 6, 11, 12],
                                        })

でdfをグループ化Y

df_grouped=df.groupby(by='Y')     


In [207]df_grouped.agg([np.mean, len])

Out[207]: 
        Z    
     mean len
Y            
A  10.500   2
B   7.667   3
于 2016-11-22T23:13:24.043 に答える