Pandas DataFrameのすべてのグループに集計リストを適用する方法
グループごとに集計結果をリスト形式でまとめたい場合は、agg()メソッドを使います。このメソッドの引数としてlistを指定することで、各グループ内の値をリストとして集約できます。
agg()メソッドによるリスト集計の手順
1. 必要なライブラリをインポートする
まず、pandasをインポートします。
import pandas as pd
2. サンプルDataFrameを作成する
次に、「Car(車種)」と「Units(台数)」の2列を持つDataFrameを作成します。
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],
"Units": [100, 150, 110, 80, 110, 90]
}
)3. agg()でlistを引数に指定してグループ化する
groupby()で「Car」列ごとにグループ化し、agg(list)を適用すると、同じ車種の台数がすべてリストにまとめられます。
dataFrame = dataFrame.groupby('Car').agg(list)完全なサンプルコード
以下が実行可能なコード全体です。
import pandas as pd
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Lexus', 'Mustang', 'Bentley', 'Mustang'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
print("DataFrame ...\n", dataFrame)
# agg()の引数にlistを指定してグループごとに集計
dataFrame = dataFrame.groupby('Car').agg(list)
# 結果を表示
print("\nDataFrame ...\n", dataFrame)
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame ...
Car Units
0 BMW 100
1 Lexus 150
2 Lexus 110
3 Mustang 80
4 Bentley 110
5 Mustang 90
DataFrame ...
Units
Car
BMW [100]
Bentley [110]
Lexus [150, 110]
Mustang [80, 90]ポイント解説
groupby('Car')によって車種ごとに行がグループ化され、agg(list)により各グループ内の「Units」の値がPythonのリストとして1つのセルに格納されます。たとえば「Lexus」は150と110の2件あるため、[150, 110]というリストにまとめられています。この手法は、カテゴリ別に複数の値を保持したい場合や、さらに加工を行う前の中間データを作成したい場合に非常に便利です。
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存
-
MatplotlibでPandasデータフレームのプロットDPIを変更する方法
PandasのDataFrameプロットのDPI(dots per inch:1インチあたりのドット数)を変更するには、MatplotlibのrcParamsを使用して解像度を設定します。rcParamsを使うことで、スクリプト全体に対して一括で描画設定を適用できるため、グラフの画質を簡単に調整できます。手順図のサイズを設定し、figure.autolayoutでサブプロット間および周囲の余白を自動調整します。plt.rcParams[figure.dpi] = 120 のようにしてDPI値を設定します。プロット用のPandasデータフレームを作成します。データフレームをプロットします。sho