テクノロジーの革新はアプリ開発セクターにどのように力を与えていますか? 1

パンダのデータフレームをクエリする方法

ソースノード: 1017694

パンダのデータフレームをクエリする方法

SQL に似た Python 関数に関するデータ サイエンティストの視点。


By マシューPrzybyla、FavorDeliveryのシニアデータサイエンティスト



による写真 ブルース・ホン on Unsplash [1]。

目次

 
 

  1. 概要
  2. 複数の条件
  3. 複数の特定の列でのマージ
  4. まとめ
  5. 参考文献

概要

 
 
データ エンジニア/データ アナリストから移行する場合でも、より効率的なデータ サイエンティストになりたい場合でも、データフレームのクエリは、必要な特定の行を返す非常に便利な方法であることがわかります。 適切な名前のパンダ用の特定のクエリ関数があることに注意することが重要です。 query. ただし、代わりに、データのクエリ、フィルター処理、およびマージを模倣できる他の方法について説明します。 データに対して行う一般的なシナリオや質問を提示しますが、SQL ではなく Python で行います。 以下の段落では、Python プログラミング言語を使用して pandas データフレームの行をクエリする簡単な方法をいくつか概説します。

複数の条件

 
 



サンプルデータ。 著者からのスクリーンショット [2]。

 

データ サイエンティストまたはデータ アナリストは、特定のデータ行を返したいと考えています。 これらのシナリオの XNUMX つは、すべて同じコード行で複数の条件を適用する場合です。 私の例を表示するために、名前と姓、およびそれぞれの性別と生年月日のいくつかの偽のサンプル データを作成しました。 このデータは上のスクリーンショットに表示されています。

複数の条件の例は、SQL を使用する場合と同様に、本質的に特定の質問に答えます。 問題は、データの何パーセントが男性であるかということです OR 2010年から2021年生まれの人。

これがその質問を解決するコードです(この質問に答えるにはいくつかの方法がありますが、これが私の具体的な方法です):

print(“Percent of data who are Males OR were born between 2010 and 2021:”, 100*round(df[(df[‘Gender’] == ‘M’) | (df[‘Birthdate’] >= ‘2010–01–01’) & (df[‘Birthdate’] <= ‘2021–01–01’)][‘Gender’].count()/df.shape [0],4), “%”)

このコードをよりよく視覚化するために、出力/結果とともに、上記と同じコードのこのスクリーンショットも含めました。 これらの条件を適用して、合計行から行の一部または割合を取得する代わりに、実際の行を返すこともできます。



条件コード。 著者によるスクリーンショット [3]。

 

実行したコマンドの順序は次のとおりです。

  • 男性の行を返す Gender
  • を含める OR function |
  • の行を返します Birthdate > 2010および2021
  • これらすべてを結合し、行の合計数で割ります

ご覧のとおり、このコードは SQL で見られるものと似ています。 個人的には、pandas の方がコードが少なくて済むので簡単だと思いますが、上下にスクロールしなくても、すべてのコードを XNUMX つの簡単な場所で視覚的に確認できます (しかし、この形式は私の好みです).

複数の特定の列でのマージ

 
 



マージされたデータフレームの結果。 著者によるスクリーンショット[4]。

 

おそらく他のチュートリアルでデータフレームをマージする方法を見たことがあるので、実際には見たことのないユニークなアプローチを追加したいと思いました。これは、複数の特定の列をマージすることです。 このシナリオでは、XNUMX つのフィールドが共有されている XNUMX つのデータフレームを結合します。 さらに多くの列がある場合、この方法はさらに便利であることがわかります。

最初のデータフレーム df があり、次に列を 2 番目のデータフレーム dfXNUMX にマージします。 期待される結果を達成するためのコードは次のとおりです。

merged_df = df.merge(df2, how=’inner’, left_on=cols, right_on=cols )

このマージとコードをよりよく視覚化するために、以下のスクリーンショットを提示しました。 XNUMX 番目のデータフレームが以下のように表示されます。 First および Last 名前は、最初のデータフレームと同じですが、新しい列があります。 Numeric. 次に、列を返しながら、マージしたい特定の列を取得します GenderBirthdate、そして新しい Numeric コラムも。 列は、名前が付けられた列のリストです。 cols.



データフレームのマージ。 著者によるスクリーンショット [5]。

 

ご覧のとおり、データフレームをマージするこの方法は、SQL クエリから得られるのと同じ結果を得る簡単な方法です。

まとめ

 
 
このチュートリアルでは、SQL で実行する XNUMX つの一般的な質問またはクエリを見ましたが、代わりに Python の pandas データフレームでそれらを実行しました。

要約すると、ここで使用した XNUMX つのシナリオを次に示します。

  1. 複数の条件から合計データセットから行の割合を返す
  2. 複数の特定の列をマージして、新しい列を持つ最終的なデータフレームを返す

私の記事が面白くて役に立つと思っていただければ幸いです。 これらの方法に同意または反対する場合は、以下にコメントしてください。 なぜですか、そうでないのですか? これらは確かにさらに明確にすることができますが、SQL の代わりに pandas と Python を使用できるいくつかの方法に光を当てることができたことを願っています. 読んでくれてありがとう!

ぜひプロフィールをチェックしてみてくださいね♪ マット・プリズビラ、および他の記事、LinkedIn で私に連絡してください。

私はこれらの会社とは提携していません。

 
参考文献

[1]写真提供 ブルース・ホン on Unsplash(2018)

[2] M. Przybyla、サンプル データのスクリーンショット、(2021 年)

[3] M. Przybyla、条件コードのスクリーンショット、(2021 年)

[4] M. Przybyla、マージされたデータフレーム結果のスクリーンショット、(2021 年)

[5] M. Przybyla、データフレームのスクリーンショットのマージ、(2021 年)

 
バイオ: マシューPrzybyla Favor Delivery のシニア データ サイエンティストであり、特にデータ サイエンスのフリーランスのテクニカル ライターです。

元の。 許可を得て転載。

関連する

ソース: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

タイムスタンプ:

より多くの KDナゲット