web-dev-qa-db-ja.com

データフレームの列の要約統計を計算する

次の形式のデータフレームがあります(たとえば)

shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method
1,FALSE,0,0,MX,
2,FALSE,1,0,MX,
3,FALSE,0,0,MX,
4,FALSE,22,0,MX,
5,FALSE,0,0,MX,
6,FALSE,0,0,MX,
7,FALSE,5,0,MX,
8,FALSE,0,0,MX,
9,FALSE,4,0,MX,
10,FALSE,2,0,MX,
11,FALSE,0,0,MX,
12,FALSE,13,0,MX,
13,FALSE,0,0,CA,
14,FALSE,0,0,US,

Pandasを使用して各列の要約統計を計算するにはどうすればよいですか(列のデータ型は可変で、一部の列には情報がありません

そして、次の形式のデータフレームを返します。

columnname, max, min, median,

is_martian, NA, NA, FALSE

などなど

40
Tyler Wood

describe は、必要なものすべてを提供します。さもなければ、groupbyを使用して集約を実行し、agg関数のリストを渡すことができます。 http://pandas.pydata.org/pandas-docs/stable/groupby .html#applying-multiple-functions-at-once

In [43]:

df.describe()

Out[43]:

       shopper_num is_martian  number_of_items  count_pineapples
count      14.0000         14        14.000000                14
mean        7.5000          0         3.357143                 0
std         4.1833          0         6.452276                 0
min         1.0000      False         0.000000                 0
25%         4.2500          0         0.000000                 0
50%         7.5000          0         0.000000                 0
75%        10.7500          0         3.500000                 0
max        14.0000      False        22.000000                 0

[8 rows x 4 columns]

文字列データを含む列など、一部の列は論理的に集計する方法がないため集計できないことに注意してください

必要に応じて、結果を転置できます:

In [47]:

df.describe().transpose()

Out[47]:

                 count      mean       std    min   25%  50%    75%    max
shopper_num         14       7.5    4.1833      1  4.25  7.5  10.75     14
is_martian          14         0         0  False     0    0      0  False
number_of_items     14  3.357143  6.452276      0     0    0    3.5     22
count_pineapples    14         0         0      0     0    0      0      0

[4 rows x 8 columns]
73
EdChum

現在、 pandas_profiling パッケージがあり、これはdf.describe()のより完全な代替手段です。

pandasデータフレームがdfの場合、以下は欠損値、歪度などに関する警告を含む完全な分析を返します。ヒストグラムと相関プロットも表示します。

import pandas_profiling
pandas_profiling.ProfileReport(df)

ノートブックの例 の使用法の詳細を参照してください。

15
akilat90

@EdChumの答えの1つのポイントを明確にするために、ドキュメントごとに、df.describe(include='all')を使用してオブジェクト列を含めることができます。多くの統計情報は提供されませんが、カウント、一意の値の数、最高値など、いくつかの情報が提供されます。これは新しい機能かもしれませんが、私は比較的新しいユーザーなのでわかりません。

3
Ken Wallace