この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 moduleimport pandas as pd
# Create a pandas DataFrame objectdf = 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 DataFrameprint('Sample pandas DataFrame:)
print(df)
|
結果を出力すると、以下の様になります。
Sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif1 ICE 9.03 Gautam 112 Ranchi2 IT 7.85 Tanya 113 Patna3 CSE 8.85 Rashmi 114 Patiala4 CHE 9.45 Kirti 115 Rajgir5 EE 7.45 Ravi 116 Patna6 TE 6.85 Sanjay 117 Patna7 ME 9.35 Naveen 118 Mysore8 CSE 6.53 Gaurav 119 Patna9 IPE 8.85 Ram 120 Mumbai10 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() functiondf2 = df.query('City=="Patna"')
# Print the filtered sample pandas DataFrameprint('Filtered sample pandas DataFrame:)
print(df2)
|
結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
2 IT 7.85 Tanya 113 Patna5 EE 7.45 Ravi 116 Patna6 TE 6.85 Sanjay 117 Patna8 CSE 6.53 Gaurav 119 Patna10 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() functiondf2 = df.query('GPA < 8' & City == "Patna")
# Print the filtered sample pandas DataFrameprint('Filtered sample pandas DataFrame:)
print(df2)
|
を結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
2 IT 7.85 Tanya 113 Patna5 EE 7.45 Ravi 116 Patna6 TE 6.85 Sanjay 117 Patna8 CSE 6.53 Gaurav 119 Patna10 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() functiondf2 = df.query('GPA < 7 & City == "Patna"')
# Print the filtered sample pandas DataFrameprint('Filtered sample pandas DataFrame:)
print(df2)
|
結果を出力すると、以下の様になります。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
6 TE 6.85 Sanjay 117 Patna8 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() functiondf2 = df.query("Dept in ['CSE','ECE','IT']")
# Print the filtered sample pandas DataFrameprint('Filtered sample pandas DataFrame:)
print(df2)
|
出力せよ。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif2 IT 7.85 Tanya 113 Patna3 CSE 8.85 Rashmi 114 Patiala8 CSE 6.53 Gaurav 119 Patna10 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() functiondf2 = df.query("RegNo < 115 & GPA > 7")
# Print the filtered sample pandas DataFrameprint('Filtered sample pandas DataFrame:)
print(df2)
|
結果は以下の通りです。
Filtered sample pandas DataFrame: Dept GPA Name RegNo City
0 ECE 8.85 Mohan 111 Biharsharif1 ICE 9.03 Gautam 112 Ranchi2 IT 7.85 Tanya 113 Patna3 CSE 8.85 Rashmi 114 Patiala |
まとめ
この Python チュートリアルでは、Pandas の DataFrame.query() 関数を使用して pandas DataFrame オブジェクトに問い合わせを行う方法を学びました。
このチュートリアルで説明したコンセプトと例を理解し、自分のpandas DataFrameにクエリを発行する準備ができていることを願っています。
お読みいただきありがとうございました。
これからもPythonプログラミングの素晴らしい学習コンテンツを提供していきますので、よろしくお願いします。