Python Pandasでのグループ化(groupby)と合計(sum)の求め方
PythonのPandasでデータをグループごとに集計して合計値を求めたい場合は、groupby(columns).sum()を使用します。groupby()で指定した列の値をキーにデータをグループ化し、sum()で各グループの合計を計算できます。
手順
- サイズ変更可能な2次元の表形式データであるDataFrame(df)を作成します。
- 入力用のDataFrame(df)を出力して内容を確認します。
- df.groupby().sum()を使ってグループごとの合計を求めます。この関数は指定された列を受け取り、その値をソートします。その後、ソートされた値に基づいて他の列の値も並べ替えます。
- グループ化と合計の結果を出力して確認します。
サンプルコード
import pandas as pd
df = pd.DataFrame(
{
"Apple": [5, 2, 7, 0],
"Banana": [4, 7, 5, 1],
"Carrot": [9, 3, 5, 1]
}
)
print("Input DataFrame 1 is:\n", df)
g_sum = df.groupby(['Apple']).sum()
print("Group by Apple is:\n", g_sum)
実行結果
Input DataFrame 1 is:
Apple Banana Carrot
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
Group by Apple is:
Banana Carrot
Apple
0 1 1
2 7 3
5 4 9
7 5 5
解説
この例では「Apple」列の値をキーとしてグループ化しています。各Appleの値を持つ行が1行ずつしかないため、結果はAppleの値で昇順にソートされた形で出力されます。もし同じ値を持つ行が複数ある場合は、それらの行のBananaとCarrotの値がそれぞれ合算されます。
補足:インデックスを通常の列に戻す方法
groupby()の実行結果では、グループ化のキー(ここではApple)がインデックスとして設定されます。これを通常の列として扱いたい場合は、reset_index()を組み合わせると便利です。
result = df.groupby('Apple').sum().reset_index()
print(result)
このようにgroupby().sum()を活用することで、カテゴリ別の売上集計やログデータの集計など、さまざまな場面で効率的にデータ分析を行えます。
-
Pythonで二分木のパス合計(Path Sum)を判定する方法
パス合計問題とは二分木と目標の合計値が与えられたとき、根から葉までの経路をたどった際のノード値の合計が、与えられた値と一致するような経路が存在するかどうかを判定します。例として、木が [0, -3, 9, -10, null, 5] という構成で、合計値が 14 の場合を考えてみましょう。このとき、0 → 9 → 5 という経路が存在し、その合計はちょうど 14 になるため、答えは True となります。解法のアプローチこの問題は再帰を使うことで簡潔に解くことができます。手順は以下の通りです。根ノードが null(空)の場合、False を返します。左右の子ノードが両方とも空(つまり葉ノード)
-
Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説
Pythonによるデータ分析と可視化の概要 Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。 pandasのインストール方法 pandasをインストールするには、ターミナル