Pandas DataFrame DataFrame.groupby()関数
-
pandas.DataFrame.groupby()
の構文: -
コード例:単一の列の値に基づいて 2つの DataFrame を
pandas.DataFrame.groupby()
でグループ化する -
コード例:複数の条件に基づいて、
pandas.DataFrame.groupby()
で 2つのDataFrame
をグループ化する -
コード例:
pandas.DataFrame.groupby()
でas_index=False
を設定
pandas.DataFrame.groupby()
は、指定された基準に基づいて DataFrame をグループに分割します。groupby()
メソッドを使用して、大きなデータセットを簡単に操作できます。
pandas.DataFrame.groupby()
の構文:
DataFrame.groupby(
by=None,
axis=0,
level=None,
as_index=True,
sort=True,
group_keys=True,
squeeze=False,
observed=False,
)
パラメーター
by |
要素をグループ化するためのマッピング、関数、文字列、ラベル または反復可能 |
axis |
row (axis = 0)または column (axis = 1)とともにグループ化 |
level |
整数。特定のレベルでグループ化する値 |
as_index |
ブール。インデックスとしてグループラベルを持つオブジェクトを返します |
sort |
ブール。グループキーをソートします |
group_keys |
グループを識別するためにグループキーをインデックスに追加します |
squeeze |
ブール。可能であれば、リターンの次元を減らします |
observed |
ブール。いずれかのグループがカテゴリカルである場合にのみ適用され、True に設定されている場合、カテゴリグループの観測値のみを表示します。 |
戻り値
グループ化された情報を含む DataFrameGroupBy
オブジェクトを返します。
コード例:単一の列の値に基づいて 2つの DataFrame を pandas.DataFrame.groupby()
でグループ化する
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df)
print(type(grouped_df))
出力:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f73cc992d30>
<class 'pandas.core.groupby.generic.DataFrameGroupBy'>
In_Stock
列の値に基づいて DataFrame
をグループにグループ化し、DataFrameGroupBy
オブジェクトを返します。
groupby()
によって返される DataFrameGroupBy
オブジェクトの詳細を取得するには、DataFrameGroupBy
オブジェクトの first()
メソッドを使用して、各グループの最初の要素を取得します。
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df.first())
出力:
Name Price
In_Stock
No Mango 24
Yes Orange 34
df
から分割された両方のグループの最初の要素によって形成された DataFrame を出力します。
get_group()
メソッドを使用してグループ全体を出力することもできます。
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
('Mango', 24, 'No' ) ,
('banana', 14, 'No' ) ,
('Apple', 44, 'Yes' ) ,
('Pineapple', 64, 'No') ,
('Kiwi', 84, 'Yes') ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock'])
grouped_df = df.groupby('In_Stock')
print(grouped_df.get_group('Yes'))
出力:
Name Price In_Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
In_Stock
列の値がはい
である df
のすべての要素を出力します。まず、groubpy()
メソッドを使用して、In_Stock
列の値が異なる要素を個別のグループにグループ化し、次に、get_group()
メソッドを使用して特定のグループにアクセスします。
コード例:複数の条件に基づいて、pandas.DataFrame.groupby()
で 2つの DataFrame
をグループ化する
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ,'ABC') ,
('Mango', 24, 'No','ABC' ) ,
('banana', 14, 'No','ABC' ) ,
('Apple', 44, 'Yes',"XYZ" ) ,
('Pineapple', 64, 'No',"XYZ") ,
('Kiwi', 84, 'Yes',"XYZ") ]
df = pd.DataFrame(fruit_list, columns = ['Name' , 'Price', 'In_Stock',"Supplier"])
grouped_df = df.groupby(['In_Stock', 'Supplier'])
print(grouped_df.first())
出力:
Name Price
In_Stock Supplier
No ABC Mango 24
XYZ Pineapple 64
Yes ABC Orange 34
XYZ Apple 44
df
を In_Stock
と Supplier
列の値に基づいてグループにグループ化し、DataFrameGroupBy
オブジェクトを返します。
各グループの最初の要素を取得するには、first()
メソッドを使用します。次の 4つのグループの最初の要素の組み合わせによって形成される DataFrame を返します。
In_Stock
列のNo
とSupplier
列の値がABC
のグループ。In_Stock
列のNo
とSupplier
列の値がXYZ
のグループ。In_Stock
列のYes
とSupplier
列の値がABC
のグループ。In_Stock
列のYes
とSupplier
列の値がXYZ
のグループ。
複数のラベルを groupby()
関数に渡すと、GroupBy
オブジェクトのメソッドによって返される DataFrame
には MultiIndex
があります。
print(grouped_df.first().index)
出力:
MultiIndex(levels=[['No', 'Yes'], ['ABC', 'XYZ']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['In_Stock', 'Supplier'])
コード例:pandas.DataFrame.groupby()
で as_index=False
を設定
DataFrame.groupby()
メソッドの as_index
パラメーターはデフォルトで True
です。グループラベルは、first()
のような GroupBy
メソッドを適用したときに返される DataFrame
のインデックスです。
import pandas as pd
fruit_list = [
("Orange", 34, "Yes"),
("Mango", 24, "No"),
("banana", 14, "No"),
("Apple", 44, "Yes"),
("Pineapple", 64, "No"),
("Kiwi", 84, "Yes"),
]
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "In_Stock"])
grouped_df = df.groupby("In_Stock", as_index=True)
firtGroup = grouped_df.first()
print(firtGroup)
print(firtGroup.index)
print("---------")
grouped_df = df.groupby("In_Stock", as_index=False)
firtGroup = grouped_df.first()
print(firtGroup)
print(firtGroup.index)
出力:
Name Price
In_Stock
No Mango 24
Yes Orange 34
Index(['No', 'Yes'], dtype='object', name='In_Stock') In_Stock Name Price
0 No Mango 24
1 Yes Orange 34
Int64Index([0, 1], dtype='int64')
ご覧のとおり、デフォルトでは as_index=True
であるため、生成された DataFrame
のインデックスはグループラベルです。
インデックスは、as_index=False
を設定すると、自動的に生成されたインデックスになります。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn