このPythonチュートリアルでは、DataFrame.query()関数を使ってpandasのDataFrameに問い合わせる方法について説明します。
では、さっそく話を聞いてみましょう。
pandasのDataFrame.query()関数のシンタックス
pandas.DataFrame.query(expr, inplace=False, **kwargs)` とします。
expr = pandas DataFrameの行を選択する論理式(expr=Trueの時)を含む文字列です。
inplace = DataFrameをインプレースで修正するか、修正したDataFrameの新しいコピーを返すかを決定するブーリアン値(True
または False
)です。
**kwargs = 他のキーワード引数がある場合、それを参照します。
DataFrame.query() 関数はいつ使うのか?
PandasはDataFrameオブジェクトから行を選択したり、フィルタリングしたりするための多くの方法/メソッドを提供しています。
そして、pandasの DataFrame.query()
関数はpandasのDataFrameオブジェクトの行をフィルタリングするための堅牢なメソッドの一つです。
そして、pandas の DataFrame オブジェクトの行を選択したり、フィルタリングしたりするには、伝統的でよく使われるインデックスの代わりに DataFrame.query()
関数を使用することが望ましいとされています。
この DataFrame.query()
関数は、他の pandas のメソッドと一緒に使うことで、データ操作をスムーズかつ簡単にすることができます。
この記事もチェック:Pandasのmelt()とpivot()関数を使ってデータの整形をする方法
DataFrame.query()関数の例
それでは、pandasのDataFrameオブジェクトのサンプルを作成し、いくつかの例を参考に DataFrame.query()
関数の機能/動作を理解することに努めましょう。
サンプルpandas DataFrameオブジェクトの作成
# Import pandas Python module import pandas as pd
# Create a pandas DataFrame object df = pd.DataFrame({ 'Dept' : [ 'ECE' , 'ICE' , 'IT' , 'CSE' , 'CHE' , 'EE' , 'TE' , 'ME' , 'CSE' , 'IPE' , 'ECE' ],
'GPA' : [ 8.85 , 9.03 , 7.85 , 8.85 , 9.45 , 7.45 , 6.85 , 9.35 , 6.53 , 8.85 , 7.83 ],
'Name' : [ 'Mohan' , 'Gautam' , 'Tanya' , 'Rashmi' , 'Kirti' , 'Ravi' , 'Sanjay' , 'Naveen' , 'Gaurav' , 'Ram' , 'Tom' ],
'RegNo' : [ 111 , 112 , 113 , 114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 ],
'City' : [ 'Biharsharif' , 'Ranchi' , 'Patna' , 'Patiala' , 'Rajgir' , 'Patna' , 'Patna' , 'Mysore' , 'Patna' , 'Mumbai' , 'Patna' ]})
# Print the created pandas DataFrame print ( 'Sample pandas DataFrame: )
print (df)
|
結果を出力すると、以下の様になります。
Sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif 1 ICE 9.03 Gautam 112 Ranchi 2 IT 7.85 Tanya 113 Patna 3 CSE 8.85 Rashmi 114 Patiala 4 CHE 9.45 Kirti 115 Rajgir 5 EE 7.45 Ravi 116 Patna 6 TE 6.85 Sanjay 117 Patna 7 ME 9.35 Naveen 118 Mysore 8 CSE 6.53 Gaurav 119 Patna 9 IPE 8.85 Ram 120 Mumbai 10 ECE 7.83 Tom 121 Patna |
例 #1
サンプルのDataFrameのうち、(City = “Patna”)の行を選択します。
# Filter the rows of the sample DataFrame which has City = 'Patna' # Using the DataFrame.query() function df2 = df.query( 'City=="Patna"' )
# Print the filtered sample pandas DataFrame print ( 'Filtered sample pandas DataFrame: )
print (df2)
|
結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
2 IT 7.85 Tanya 113 Patna 5 EE 7.45 Ravi 116 Patna 6 TE 6.85 Sanjay 117 Patna 8 CSE 6.53 Gaurav 119 Patna 10 ECE 7.83 Tom 121 Patna |
例 #2
サンプルのDataFrameのうち、(GPA < 8)の行を選択します。
# Filter the rows of the sample DataFrame which has GPA < 8 # Using the DataFrame.query() function df2 = df.query( 'GPA < 8' & City = = "Patna" )
# Print the filtered sample pandas DataFrame print ( 'Filtered sample pandas DataFrame: )
print (df2)
|
を結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
2 IT 7.85 Tanya 113 Patna 5 EE 7.45 Ravi 116 Patna 6 TE 6.85 Sanjay 117 Patna 8 CSE 6.53 Gaurav 119 Patna 10 ECE 7.83 Tom 121 Patna |
例 #3
サンプルのDataFrameのうち、(GPA < 7 and City = ‘Patna’)の行を選択します。
# Filter the rows of the sample DataFrame which has GPA < 7 & City = 'Patna' # Using the DataFrame.query() function df2 = df.query( 'GPA < 7 & City == "Patna"' )
# Print the filtered sample pandas DataFrame print ( 'Filtered sample pandas DataFrame: )
print (df2)
|
結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
6 TE 6.85 Sanjay 117 Patna 8 CSE 6.53 Gaurav 119 Patna |
例 #4
ECE, CSE, IT]にDepartmentを持つサンプルDataFrameの行を選択します。
# Filter the rows of the sample DataFrame which has Dept in (ECE, CSE, IT) # Using the DataFrame.query() function df2 = df.query( "Dept in ['CSE','ECE','IT']" )
# Print the filtered sample pandas DataFrame print ( 'Filtered sample pandas DataFrame: )
print (df2)
|
出力せよ。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif 2 IT 7.85 Tanya 113 Patna 3 CSE 8.85 Rashmi 114 Patiala 8 CSE 6.53 Gaurav 119 Patna 10 ECE 7.83 Tom 121 Patna |
例 #5
サンプルのDataFrameのうち、(RegNo < 115 and GPA > 7)の行を選択します。
# Filter the rows of the sample DataFrame which has (RegNo < 115 & GPA > 7) # Using the DataFrame.query() function df2 = df.query( "RegNo < 115 & GPA > 7" )
# Print the filtered sample pandas DataFrame print ( 'Filtered sample pandas DataFrame: )
print (df2)
|
結果は以下の通りです。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif 1 ICE 9.03 Gautam 112 Ranchi 2 IT 7.85 Tanya 113 Patna 3 CSE 8.85 Rashmi 114 Patiala |
まとめ
この Python チュートリアルでは、Pandas の DataFrame.query()
関数を使用して pandas DataFrame オブジェクトに問い合わせを行う方法を学びました。
このチュートリアルで説明したコンセプトと例を理解し、自分のpandas DataFrameにクエリを発行する準備ができていることを願っています。
お読みいただきありがとうございました。
これからもPythonプログラミングの素晴らしい学習コンテンツを提供していきますので、よろしくお願いします。