はじめに
データ分析では、望むような形に整列していないデータセットに遭遇することがよくあります。データの整形とは、データを行と列にどのように整理するかを変更するプロセスを指します。この実験では、Pandas におけるデータの整形に関するいくつかの重要な方法を検討します。それには、ピボット、スタック、アンスタック、メルト、クロス集計、タイリング、因数分解、および爆発が含まれます。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替えて、Jupyter Notebook を使用して練習します。
場合によっては、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすると、迅速に問題を解決します。
必要なライブラリのインポートと DataFrame の作成
まず、必要なライブラリをインポートして、例に使用する DataFrame を作成しましょう。
import pandas as pd
import numpy as np
## Create DataFrame
np.random.seed([3, 1415])
n = 20
cols = np.array(["key", "row", "item", "col"])
df = cols + pd.DataFrame((np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str))
df.columns = cols
df = df.join(pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix("val"))
単一の集約を伴うピボット
ピボットは、Pandas でデータを整形するための重要な方法の 1 つです。これにより、データを変換して、さまざまな角度から見ることができます。
## Pivot df with the mean of val0
df.pivot_table(values="val0", index="row", columns="col", aggfunc="mean", fill_value=0)
複数の集約を伴うピボット
ピボットでは、複数の集約も行うことができます。
## Pivot df with the mean and sum of val0
df.pivot_table(values="val0", index="row", columns="col", aggfunc=["mean", "sum"])
クロス集計
クロス集計は、複数の変数間の関係を定量的に分析する方法です。
## Cross tabulation between row and col
df.pivot_table(index="row", columns="col", fill_value=0, aggfunc="size")
まとめ
おめでとうございます!Pandas を使ったデータの整形の実験を終えました。技術力を向上させるために、LabEx でさらに実験を行って練習してください。