[実行環境付き]pandasの統計量一覧

pandas

本記事はブラウザ上でPythonを実行できます。

まずはデータを読み込みましょう。今回はタイタニックの乗客データを用います。

packages = ["matplotlib", "numpy", "pandas"] import io import csv from pyodide.http import open_url import pandas as pd titanic_data:str = open_url("https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv").read() # csvの文字列をリストに変換 with io.StringIO() as f: f.write(titanic_data) f.seek(0) csv_reader = csv.reader(f) read_data = [row for row in csv_reader] # 一行目をカラム名として渡す columns = read_data[0] df = pd.DataFrame(read_data[1:], columns=columns) df.head()


データがすべてstrで渡ってしまっているので、必要なものだけ前処理を行います。

# 空文字列をNaNに変換 df = df.where(df != "") # 数値が入るカラムの型を変換 numeric_columns = ["PassengerId", "Survived", "Pclass", "Age", "Fare"] df.loc[:, numeric_columns] = df[numeric_columns].astype("float") df.shape


ではpandasで集計を行っていきます。まず、今回集計で使うAge(年齢)カラムとFare(乗船料金)のカラムの要約を見てみます。要約はdescribeで行えます。

df[["Age", "Fare"]].describe()

全データ数が891なので、おおよそ20%の乗客の年齢が欠損していることが分かります。

まず乗客の年齢の平均値を取ってみます。平均値はmeanメソッドで取得できます。

df["Age"].mean()


全体での平均値は約30歳のようです。では、次にGroupByで男女別の平均値を見てみます。

df[["Sex", "Age"]].groupby("Sex").mean()

男性が約31歳、女性が28歳のようです。女性の方が若いですね。(小学生並みの感想…)

今回はmeanを使いましたが、他の集計関数には以下があります。是非上のreprで試してみてください。

count()ユニークな要素数を返す
size()それぞれのグループのサイズを返す
sum()合計を返す
mean()平均を返す(averageと同じです)
average()平均を返す
std()標準偏差を返す
var()分散を返す
sem()各グループの平均の標準誤差を返す
describe()列の他の統計量(mean, min, max, uniqueなど)を返す
min()最小値を返す
max()最大値を返す
first()最初の値を返す
last()最後の値を返す
nth()n番目の値を返す

コメント

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