Pandas DataFrameで値をグループ化してカウントする方法
Pandas DataFrameで値の出現回数をグループ化してカウントするには、groupby()、size()、unstack()メソッドを組み合わせて使用します。これらを連携させることで、複数のキーによる集計結果を見やすいマトリクス形式に変換できます。
まず、3つの列(商品カテゴリ、商品名、数量)を持つDataFrameを作成しましょう。
dataFrame = pd.DataFrame({
'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
'Quantity': [10, 50, 10, 20, 25, 50]
})次に、groupby()メソッドで値をグループ化し、カウントにはsize()を使用します。さらにunstack()を呼び出すことで、新しいレベルの列ラベルが生成され、マルチインデックスのデータがピボットされた形式に変換されます。ここではfill_value=0を指定して、存在しない組み合わせを0で埋めています。
dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)
完全なコード例
以下が全体のコードです。
import pandas as pd
# 3つの列を持つDataFrameを作成
dataFrame = pd.DataFrame({
'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Electronics', 'Computer', 'Mobile Phone'],
'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Camera', 'Graphic Card', 'Earphone'],
'Quantity': [10, 50, 10, 20, 25, 50]
})
# DataFrameを表示
print("Dataframe...\n", dataFrame)
# グループ化してカウントし、unstackで整形
dataFrame = dataFrame.groupby(['Product Category', 'Product Name', 'Quantity']).size().unstack(fill_value=0)
print("\nResultant DataFrame...\n", dataFrame)実行結果
上記のコードを実行すると、次のような出力が得られます。
Dataframe...
Product Category Product Name Quantity
0 Computer Keyboard 10
1 Mobile Phone Charger 50
2 Electronics SmartTV 10
3 Electronics Camera 20
4 Computer Graphic Card 25
5 Mobile Phone Earphone 50
Resultant DataFrame...
Quantity 10 20 25 50
Product Category Product Name
Computer Graphic Card 0 0 1 0
Keyboard 1 0 0 0
Electronics Camera 0 1 0 0
SmartTV 1 0 0 0
Mobile Phone Charger 0 0 0 1
Earphone 0 0 0 1このように、商品カテゴリ・商品名・数量の組み合わせごとの出現回数が、行と列が交差するマトリクス形式で確認できます。データに存在しない組み合わせはfill_value=0によって自動的に0で埋められるため、欠損値を気にせず集計結果を比較できます。クロス集計やピボットテーブル的な分析を行いたい場合に非常に便利な手法です。
-
【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