
Pandasでデータフレーム(DataFrame)内の要素を見つける方法:検索テクニック入門
はじめに
データ分析において、データを探索することは非常に重要です。PandasはPythonでよく使われるデータ分析ライブラリであり、データフレーム内の要素を検索するための多数の機能を提供しています。本記事では、Pandasを使ったデータフレーム内の要素検索について解説します。
データフレーム内の要素検索の重要性
データフレームは、表形式のデータを扱うためのPandasの主要なデータ構造です。データフレームには多数の行と列があり、それらの要素を検索することが非常に重要です。たとえば、ある条件を満たす行を見つけたり、ある列の特定の値を持つ行を見つけたりすることができます。
Pandasを使った効率的な検索方法の紹介
次に、Pandasを使ったデータフレーム内の要素検索について解説します。
こんな人におすすめ
この記事は、Pandasを初めて使う人や、Pandasで要素検索を行いたい人におすすめです。
使用する主なライブラリ
本記事では、PythonのPandasライブラリを使用します。
Pandasの基本概念
まずは、Pandasの基本概念について確認しましょう。
データフレームとシリーズの違い
データフレームは、行と列から構成される2次元の表形式のデータ構造です。一方、シリーズは、1次元のラベル付き配列であり、データフレームの1列に相当します。
インデックスとカラムについて
データフレームには、行に対してインデックスが付けられています。また、列にはカラム名が付けられています。これらのインデックスとカラム名を使用して、データフレーム内の要素を検索することができます。
データフレーム内の要素を検索する方法
Pandasでは、データフレーム内の要素を検索するために、いくつかの方法があります。以下では、代表的な検索方法を紹介します。
query()メソッドを使った検索
query()メソッドは、SQLのようなクエリ言語を使用して、データフレーム内の要素を検索する方法です。
例えば、次のようにquery()メソッドを使用すると、カラム名が”age”で、値が30以上の行を取得することができます。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd df = pd.DataFrame({ "name" : [ "Alice" , "Bob" , "Charlie" , "David" ], "age" : [ 25 , 30 , 35 , 40 ], "score" : [ 80 , 70 , 90 , 75 ] }) result = df.query( "age >= 30" ) print (result) |
出力結果:
1 2 3 4 | name age score 1 Bob 30 70 2 Charlie 35 90 3 David 40 75 |
loc[]やiloc[]を使った位置指定検索
loc[]やiloc[]を使用すると、データフレーム内の要素を行と列の位置で指定して取得することができます。
例えば、次のようにloc[]を使用すると、インデックスが2の行とカラム名が”score”の列を取得することができます。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd df = pd.DataFrame({ "name" : [ "Alice" , "Bob" , "Charlie" , "David" ], "age" : [ 25 , 30 , 35 , 40 ], "score" : [ 80 , 70 , 90 , 75 ] }) result = df.loc[ 2 , "score" ] print (result) |
出力結果:
1 |
boolインデックスを使った条件検索
boolインデックスを使用すると、条件に合致する行を取得することができます。
例えば、次のようにboolインデックスを使用すると、カラム名が”score”で、値が80以上の行を取得することができます。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd df = pd.DataFrame({ "name" : [ "Alice" , "Bob" , "Charlie" , "David" ], "age" : [ 25 , 30 , 35 , 40 ], "score" : [ 80 , 70 , 90 , 75 ] }) bool_index = df[ "score" ] > = 80 result = df[bool_index] print (result) |
出力結果:
1 2 3 | name age score 0 Alice 25 80 2 Charlie 35 90 |
文字列型シリーズのstrアクセサを利用した検索
文字列型のシリーズには、strアクセサを使用することができます。strアクセサを使用することで、文字列に対して様々な操作を行うことができます。
例えば、次のようにstrアクセサを使用すると、文字列に”h”が含まれる行を取得することができます。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd df = pd.DataFrame({ "name" : [ "Alice" , "Bob" , "Charlie" , "David" ], "age" : [ 25 , 30 , 35 , 40 ], "score" : [ 80 , 70 , 90 , 75 ] }) bool_index = df[ "name" ]. str .contains( "h" ) result = df[bool_index] print (result) |
出力結果:
1 2 3 | name age score 1 Bob 30 70 2 Charlie 35 90 |
Pandasの活用例
ここまで、Pandasを使ったデータフレーム内の要素検索について解説しました。最後に、Pandasを使ったデータ分析の活用例をいくつか紹介します。
CSVファイルの読み込みとデータフレームの作成
CSVファイルを読み込んで、データフレームを作成する方法を紹介します。
1 2 3 4 5 | import pandas as pd df = pd.read_csv( "data.csv" ) print (df.head()) |
条件に基づくデータの抽出とフィルタリング
条件に基づくデータの抽出やフィルタリングを行う方法を紹介します。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd df = pd.read_csv( "data.csv" ) # 年齢が30歳以上のデータを抽出する result = df.query( "age >= 30" ) # スコアが80以上のデータをフィルタリングする result = result[result[ "score" ] > = 80 ] print (result.head()) |
検索結果を利用したデータの変更や追加処理
検索結果を利用して、データの変更や追加処理を行う方法を紹介します。
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd df = pd.read_csv( "data.csv" ) # スコアが70未満のデータを削除する df = df[df[ "score" ] > = 70 ] # スコアが80以上のデータに"pass"という列を追加する df.loc[df[ "score" ] > = 80 , "pass" ] = True print (df.head()) |
まとめ
Pandasを使ったデータフレーム内の要素検索について、いくつかの方法を紹介しました。データフレーム内の要素を検索することは、データ分析において非常に重要です。本記事が、Pandasの使い方について学ぶための参考になれば幸いです。