Pythonで要約統計量を計算するには、Pandasの.describe()メソッドを使用する必要があります。
.describe()メソッドは数値データだけでなく、文字列やタイムスタンプのようなオブジェクトデータに対しても機能します。
この2つの出力は異なるフィールドを含んでいます。
数値データの場合、結果は以下のようになります。
- カウント
- 平均値
- 標準偏差
- 最小値
- 最大値
- 25 パーセンタイル
- 50パーセンタイル
- 75 パーセンタイル
オブジェクトデータの場合、結果は以下のようになります。
- カウント
- ユニーク
- トップ
- フリークエンシー
describe() メソッドを使って Python で要約統計量を計算する
この記事では、数値データやオブジェクトデータに対して .describe() メソッドを使用する方法について見ていきます。
また、大規模なデータセットやタイムスタンプ系列を .describe メソッドで解析する方法についても見ていきます。
さっそく始めてみましょう。
この記事もチェック:PythonとPandasで大規模データセットを扱うコツ4つ
1. 数値データに対する要約統計量
1から6までの数字でリストを定義し、そのリストの要約統計量を取得してみます。
まずはpandasをインポートするところから始めます。
import pandas as pd
|
ここで、系列を定義することができます。
s = pd.Series([ 1 , 2 , 3 , 4 , 5 , 6 ])
|
統計情報を表示するには
s.describe() |
完全なコードと出力は次のとおりです。
import pandas as pd
s = pd.Series([ 1 , 2 , 3 , 4 , 5 , 6 ])
s.describe() |
結果は以下の通りです。
count 6.000000 mean 3.500000 std 1.870829 min 1.000000 25% 2.250000 50% 3.500000 75% 4.750000 max 6.000000 dtype: float64 |
それぞれの値が何を意味するのか理解しよう。
カウント|エントリーの総数 | |
平均値|全エントリーの平均値 | |
std|標準偏差 | |
min|最小値 | |
25% | 25パーセンタイルマーク |
50%|50パーセンタイルマーク(中央値) | |
75%|75パーセンタイルマーク | |
最大値|max|最大値 |
2. Python オブジェクトデータの要約統計量
文字列の集合として系列を定義し、それに対して .describe メソッドを使用して要約統計量を計算してみましょう。
系列は以下のように定義できます。
s = pd.Series([ 'a' , 'a' , 'b' , 'c' ])
|
要約統計量を得るには、:
s.describe() |
完全なコードと出力は次のとおりです。
import pandas
s = pd.Series([ 'a' , 'a' , 'b' , 'c' ])
s.describe() |
結果は以下の通りです。
count 4 unique 3 top a freq 2 dtype: object |
以下のそれぞれの意味を理解しよう。
count|エントリーの総数 | |
ユニーク|ユニークエントリの総数 | |
top|最も頻度の高いエントリ | |
freq|最も頻度の高いエントリーの頻度|。 |
3. 大規模データセットの要約統計量
pandasを使って大規模なデータセットから要約統計量を取得することもできます。
データセットをpandasのデータフレームにインポートして、.describeメソッドを使用するだけです。
この記事では、サンプルデータセットとしてCalifornia Housing datasetを使用します。
まずはCSVデータセットをインポートして、.describeメソッドを呼び出すところからはじめましょう。
import pandas as pd
housing = pd.read_csv( "/content/sample_data/california_housing.csv" )
housing.describe() |
を出力します。
import datetime
import numpy as np
s = pd.Series([np.datetime64( "2000-01-01" ),np.datetime64( "2010-01-01" ),np.datetime64( "2010-01-01" ),np.datetime64( "2002-05-08" )])
|
この結果には、データセットのすべての列の要約統計量が含まれていることがわかります。
4. タイムスタンプ系列のサマリー統計
.describeを使って、タイムスタンプ系列のサマリー統計も取得することができます。
まず、タイムスタンプ系列を定義してみましょう。
s.describe() |
次に、このタイムスタンプ系列に対して .describe を呼び出します。
import datetime
import numpy as np
s = pd.Series([np.datetime64( "2000-01-01" ),np.datetime64( "2010-01-01" ),np.datetime64( "2010-01-01" ),np.datetime64( "2002-05-08" )])
s.describe() |
完全なコードと出力は以下の通りです。
count 4 unique 3 top 2010-01-01 00:00:00 freq 2 first 2000-01-01 00:00:00 last 2010-01-01 00:00:00 dtype: object |
結果は以下の通りです。
s.describe(datetime_is_numeric = True )
|
.describeにdateTimeを数値として扱うように指示することもできます。
これにより、数値データと同様の方法で結果が表示されます。
平均値、中央値、25パーセンタイル、75パーセンタイルを DateTime 形式で得ることができます。
これは.NET Frameworkを使用することで可能です。
count 4
mean 2005 - 08 - 03 00 : 00 : 00
min 2000 - 01 - 01 00 : 00 : 00
25 % 2001 - 10 - 05 12 : 00 : 00
50 % 2006 - 03 - 05 12 : 00 : 00
75 % 2010 - 01 - 01 00 : 00 : 00
max 2010 - 01 - 01 00 : 00 : 00
|
出力は次のようになります。
この結果には、平均値、中央値、25パーセンタイル、75パーセンタイルがDateTimeフォーマットで含まれていることがわかります。
この記事もチェック:PandasでデータフレームをHTML形式で表示する
まとめ
このチュートリアルは、Pythonで要約統計量を計算することについてでした。
数値データ、オブジェクトデータ、大規模データセット、タイムスタンプ系列について、要約統計量を計算するために調べました。