Pythonのデータ解析支援ライブラリPandas 〜その6 行、列に対しての合計値、平均値、中央値、最大値、最小値、標準偏差を計算〜

スポンサーリンク

データ解析支援ライブラリPandas

前回はデータ解析支援ライブラリPandasで行と列の両方を指定してデータを取得する方法を解説しました。

Pythonのデータ解析支援ライブラリPandas 〜その5 行名、列名の取得と行数、列数、全要素数の取得〜
データ解析支援ライブラリPandas前回はデータ解析支援ライブラリPandasで行も列も指定してデータを取得する方法を解説しました。しかし行や列を指定してデータを取得するにはどんな名前の行、列があるのか、何行、何列...

ここまではデータを読み込んで表示するということばかりでした。

でもPandasはデータ解析を行うためのライブラリなので、データを処理して目的とするデータの傾向を解析ことに用います。

ということで今回はデータ解析でよく用いられる合計値、平均値、中央値、最大値、最小値、標準偏差を計算していきましょう。

ということでまずは準備をしていきます。

使用するデータは、自作のダミーデータ作成プログラムで作ったこちら。

Pythonでファイル数、行数、列数を指定してダミーデータのファイルを生成するプログラムを作ってみた
ランダムデータのファイルが欲しい!前にjunney様より「グラフタイトルをファイル名としたい」というご質問を頂き、答えてみました。ただどうやら他にもプログラムが動いていない部分があるようで、再度ご質問を頂きました。...

データの読み込みはこんな感じです。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

df

実行結果

ということでまずは合計値から解説していきましょう。

スポンサーリンク

Pandasで行、列の合計値を計算:.sum()

行、列の合計値を計算するには.sum()というコマンドを用います。

とりあえず使ってみましょう。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum())

実行結果
value_1    379
value_2    424
value_3    625
value_4    415
value_5    586
dtype: int64

各列の合計値が計算できました。

しかし時には各行の合計値を計算したいこともあることでしょう。

行の合計値を計算したいときは、「axis=1」か「axis=”columns”」をオプションとして括弧の中に記述します。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis=1))

実行結果
dataname
data_1     258
data_2     194
data_3     257
data_4     310
data_5     240
data_6     245
data_7     242
data_8     221
data_9     249
data_10    213
dtype: int64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis="columns"))

実行結果
dataname
data_1     258
data_2     194
data_3     257
data_4     310
data_5     240
data_6     245
data_7     242
data_8     221
data_9     249
data_10    213
dtype: int64

ちなみに「axis=0」は列を示しているので、記述しなかった場合と同じようにそれぞれの列の合計値が取得できます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis=0))

実行結果
value_1    379
value_2    424
value_3    625
value_4    415
value_5    586
dtype: int64

ちなみに「axis=”index”」は認識されるのでしょうか?

試してみましょう。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis="index"))

実行結果
value_1    379
value_2    424
value_3    625
value_4    415
value_5    586
dtype: int64

「axis=”index”」でも認識されました。

ではどれか一つの列の合計値を知りたい場合はどうしたらいいでしょうか?

その場合は、そのインデックス番号をリスト形式で指定することで取得できます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis="index")[2])

実行結果
625

連続している場合は「:」を使うこともできます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis="index")[2:4])

実行結果
value_3    625
value_4    415
dtype: int64

しかし連続していない複数の列は取れないようです。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.sum(axis="index")[2, 4])

実行結果
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
   4735             try:
-> 4736                 return libindex.get_value_box(s, key)
   4737             except IndexError:

pandas/_libs/index.pyx in pandas._libs.index.get_value_box()

pandas/_libs/index.pyx in pandas._libs.index.get_value_at()

pandas/_libs/util.pxd in pandas._libs.util.get_value_at()

pandas/_libs/util.pxd in pandas._libs.util.validate_indexer()

TypeError: 'tuple' object cannot be interpreted as an integer
(以下略)

連続していない列(行もですが)の合計を取得する方法はまた必要になったら考えます。

スポンサーリンク

Pandasで行、列の平均値を計算:.mean()

次に各行、各列の平均値を計算するには、「.mean()」を用います。

これもオプションなし、もしくは「axis=0」、「axis=”index”」では各列の平均値を、「axis=1」か「axis=”columns”」で各行の平均値を取得できます。

ここでは「axis=0」と「axis=1」の場合のみ紹介しておきます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.mean(axis=0))

実行結果
value_1    37.9
value_2    42.4
value_3    62.5
value_4    41.5
value_5    58.6
dtype: float64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.mean(axis=1))

実行結果
dataname
data_1     51.6
data_2     38.8
data_3     51.4
data_4     62.0
data_5     48.0
data_6     49.0
data_7     48.4
data_8     44.2
data_9     49.8
data_10    42.6
dtype: float64
スポンサーリンク

Pandasで行、列の中央値を計算:.median()

次は中央値です。

中央値を計算するには、「.median()」を用います。

これもオプションなし、もしくは「axis=0」、「axis=”index”」では各列の中央値を、「axis=1」か「axis=”columns”」で各行の中央値を取得できます。

ここでは「axis=0」と「axis=1」の場合のみ紹介しておきます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.median(axis=0))

実行結果
value_1    30.5
value_2    35.0
value_3    59.0
value_4    40.5
value_5    50.0
dtype: float64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.median(axis=1))

実行結果
dataname
data_1     37.0
data_2     47.0
data_3     37.0
data_4     42.0
data_5     41.0
data_6     41.0
data_7     45.0
data_8     46.0
data_9     52.0
data_10    27.0
dtype: float64
スポンサーリンク

Pandasで行、列の最大値、最小値を計算:.max()、.min()

最大値、最小値を計算するには、それぞれ「.max()」「.min()」を用います。

これもオプションなし、もしくは「axis=0」、「axis=”index”」では各列の最大値、最小値を、「axis=1」か「axis=”columns”」で各行の最大値、最小値を取得できます。

ここでは「axis=0」と「axis=1」の場合のみ紹介しておきます。

<最大値の計算>

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.max(axis=0))

実行結果
value_1    88
value_2    99
value_3    99
value_4    89
value_5    96
dtype: int64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.max(axis=1))

実行結果
dataname
data_1     99
data_2     79
data_3     92
data_4     97
data_5     88
data_6     99
data_7     88
data_8     67
data_9     84
data_10    99
dtype: int64

<最小値の計算>

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.min(axis=0))

実行結果
value_1     0
value_2     0
value_3    22
value_4     1
value_5     3
dtype: int64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.min(axis=1))

実行結果
dataname
data_1     10
data_2      1
data_3     19
data_4     33
data_5     24
data_6      6
data_7      0
data_8      8
data_9      0
data_10     3
dtype: int64
スポンサーリンク

Pandasで行、列の標準偏差を計算:.std()

標準偏差を計算するには「.std()」を用います。

これもオプションなし、もしくは「axis=0」、「axis=”index”」では各列の標準偏差を、「axis=1」か「axis=”columns”」で各行の標準偏差を取得できます。

ここでは「axis=0」と「axis=1」の場合のみ紹介しておきます。

import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.std(axis=0))

実行結果
value_1    31.991145
value_2    32.646933
value_3    30.718254
value_4    26.285822
value_5    30.317578
dtype: float64
import pandas as pd

df = pd.read_csv("python-pandas-2_data.txt", index_col=0)

print(df.std(axis=1))

実行結果
dataname
data_1     38.069673
data_2     31.340070
data_3     36.418402
data_4     31.709620
data_5     24.010414
data_6     38.852284
data_7     36.390933
data_8     24.242525
data_9     32.267631
data_10    38.056537
dtype: float64

これで基本的な統計値は大体計算できるようになったかと思います。

ただこれでは単に計算しただけ、計算したのならデータに入れ込みたいというのが次に考えることでしょう。

ということで次回は値をデータに追加する方法を解説していきます。

Pythonのデータ解析支援ライブラリPandas 〜その7 行、列の追加 基本編〜
データ解析支援ライブラリPandas前回はデータ解析支援ライブラリPandasで合計値、平均値、中央値、最大値、最小値、標準偏差を計算する方法を解説しました。このように色々な値を計算できるようになると、これらの値を...

ということで今回はこんな感じで。

コメント

タイトルとURLをコピーしました