
Pythonのデータ分析ライブラリであるpandasは、データフレームとシリーズという2つの基本的なデータ構造を提供しています。データフレームは2次元の表形式であり、表形式のデータを扱う際に最もよく使われるデータ構造です。この記事では、pandasでデータフレームを操作する際に欠かせない属性の抽出方法について、実践例を交えて紹介します。
はじめに
pandasでデータフレームを操作する際に欠かせないのが、データフレームの各属性の抽出方法です。データフレームには、列属性や行属性があります。これらの属性を適切に抽出することで、データフレームを効率的に操作することができます。
列属性の抽出方法と実践例
データフレームの列属性を抽出する方法は、df[列名]の形式で行います。以下は、列名が「A」と「B」の2つの列属性を抽出する例です。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd # データフレームの作成 df = pd.DataFrame({ "A" : [ 1 , 2 , 3 ], "B" : [ 4 , 5 , 6 ], "C" : [ 7 , 8 , 9 ] }) # 列属性の抽出 print (df[ "A" ]) print (df[[ "A" , "B" ]]) |
上記のコードを実行すると、以下のような出力結果が得られます。
1 2 3 4 5 6 7 8 | 0 1 1 2 2 3 Name: A, dtype: int64 A B 0 1 4 1 2 5 2 3 6 |
1つの列属性を抽出する場合は、df[列名]の形式で、複数の列属性を抽出する場合はdf[[列名1, 列名2, …]]の形式で指定します。また、iloc属性やloc属性を使うことで、列属性を位置で指定することもできます。以下は、列属性を位置で指定して抽出する例です。
1 2 3 4 | import pandas as pd print (df.loc[:, 'A' ]) print (df.iloc[:, 0 ]) |
データフレームの行属性を抽出する方法は、df.loc[インデックス名]やdf.iloc[インデックス番号]の形式で行います。以下は、インデックス名が「0」と「2」の2つの行属性を抽出する例です。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd # データフレームの作成 df = pd.DataFrame({ "A" : [ 1 , 2 , 3 ], "B" : [ 4 , 5 , 6 ], "C" : [ 7 , 8 , 9 ] }, index = [ "a" , "b" , "c" ]) # 行属性の抽出 print (df.loc[ "a" ]) print (df.iloc[[ 0 , 2 ]]) |
上記のコードを実行すると、以下のような出力結果が得られます。
1 2 3 4 5 6 7 | A 1 B 4 C 7 Name: a, dtype: int64 A B C a 1 4 7 c 3 6 9 |
1つの行属性を抽出する場合は、df.loc[インデックス名]またはdf.iloc[インデックス番号]の形式で、複数の行属性を抽出する場合はdf.loc[[インデックス名1, インデックス名2, …]]またはdf.iloc[[インデックス番号1, インデックス番号2, …]]の形式で指定します。また、loc属性やiloc属性を使うことで、行属性と列属性を同時に指定して抽出することもできます。
条件に基づく属性抽出方法と実践例
データフレームから、ある条件を満たす行属性や列属性を抽出する方法もあります。以下は、列属性が3より大きい行だけを抽出する例です。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd # データフレームの作成 df = pd.DataFrame({ "A" : [ 1 , 2 , 3 ], "B" : [ 4 , 5 , 6 ], "C" : [ 7 , 8 , 9 ] }) # 条件に基づく列属性の抽出 print (df.loc[:, df. max () > 3 ]) |
上記のコードを実行すると、以下のような出力結果が得られます。
1 2 3 4 | B C 0 4 7 1 5 8 2 6 9 |
条件に基づく行属性の抽出も同様に行います。以下は、列属性が3より
以下は、列属性が3より大きい行だけを抽出する例です。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd # データフレームの作成 df = pd.DataFrame({ "A" : [ 1 , 2 , 3 ], "B" : [ 4 , 5 , 6 ], "C" : [ 7 , 8 , 9 ] }) # 条件に基づく行属性の抽出 print (df[df[ "A" ] > 1 ]) |
上記のコードを実行すると、以下のような出力結果が得られます。
1 2 3 | A B C 1 2 5 8 2 3 6 9 |
条件に基づく属性抽出では、loc属性やiloc属性を使うことで、行属性と列属性を同時に指定して抽出することもできます。
複数の属性を同時に抽出する方法と実践例
データフレームから複数の属性を同時に抽出する方法は、df.loc[インデックス名, [列名1, 列名2, …]]やdf.iloc[インデックス番号, [列番号1, 列番号2, …]]の形式で行います。以下は、インデックス名が「1」である行と、列名が「B」と「C」である列属性を同時に抽出する例です。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd # データフレームの作成 df = pd.DataFrame({ "A" : [ 1 , 2 , 3 ], "B" : [ 4 , 5 , 6 ], "C" : [ 7 , 8 , 9 ] }, index = [ "a" , "b" , "c" ]) # 複数の属性を同時に抽出 print (df.loc[ "b" , [ "B" , "C" ]]) print (df.iloc[ 1 , [ 1 , 2 ]]) |
上記のコードを実行すると、以下のような出力結果が得られます。
1 2 3 4 5 6 | B 5 C 8 Name: b, dtype: int64 B 5 C 8 Name: b, dtype: int64 |
まとめ
pandasでデータフレームを操作する際に欠かせない属性の抽出方法について、列属性や行属性、条件に基づく属性抽出、複数の属性を同時に抽出する方法を紹介しました。これらの方法を適切に使いこなすことで、データフレームを効率的に操作することができます。
以上で、Pythonのpandasを使ったデータフレームの属性の抽出方法について、実践例を交えて紹介しました。これらの方法をマスターすることで、pandasをより効率的に扱うことができるようになるでしょう。