Pandasデータマージャーの記事がpd.merge()を理解する

CDAデータアナリストが作成

データをマージする操作では、pd.concat()関数に加えて、よく使用されるもう1つの関数はpd.merge()です。これら2つの関数はよく比較されます。実際、関数内の重要なパラメーターの役割を理解している限り、各関数の使用法を理解した後、どの関数をどの場合に使用し、関数内のどのパラメータを設定する必要があるかを知るのは自然です。では、トピックに足を踏み入れて、pd.merge()関数を理解しましょう!

pd.merge()関数の概要

関数の公式ドキュメントでは、pd.merge()を使用して、DataFrameまたは名前付きシリーズをデータベーススタイルの接続とマージするように記述されています。次は、この関数を使ってLushanの本当の顔を見てみましょう。

pd.merge(left、right、how = 'inner'、on = None、left_on = None、right_on = None、left_index = False、right_index = False、sort = False、suffixes =( '_ x'、 '_y')、 copy = True、indicator = False、validate = None、)

上記はすべてpd.merge()関数のパラメーターですが、以下では例を通して一般的なパラメーターについて説明します。

左右のパラメーター

pd.concat()とは異なり、pd.merge()は2つのテーブルのスプライシングにのみ使用でき、パラメーター名から、接続方向が左と右のスプライシング、1つの左のテーブルと1つの右のテーブルであり、スプライシングがパラメーターで指定されていないことがわかります軸のパラメーターなので、pd.merge()を使用してテーブルを上下にスプライスすることはできません。

スプライスが必要な2つのテーブルの列情報が同じ場合、スプライシング時に、どのフィールドを主キー関数として使用するかを指定しなくても、次の例のように、デフォルトで2つのテーブルは主キーと同じ情報を持つ列を使用してスプライスされます。

これが人間の部門の従業員情報の統計表であるとします

これが、従業員の販売実績に関する販売部門の統計表であるとします。

これら2つのテーブルの従業員は同じ人のバッチであり、両方のテーブルの「従業員名」列には繰り返しの列しかないことがわかります。通常、この場合、pd.merge()を使用して、主キーを指定せずにスプライスします。左側のパラメーターに渡され、別のテーブルの名前が右側のパラメーターに渡されます。

パラメータオン

このパラメーターは、どのフィールドが主キーであるかを決定します。前述のように、同じ列情報で主キーが指定されていない場合は、ここで主キーを指定できます。結果が上記の主キーを指定しない結果と一致するかどうかを確認します。

それは確かに完全に一貫しています。

この状況に加えて、パラメーターには他にどのような役割がありますか?2つのテーブルに同じ情報を持つ列が3つ以上ある場合は、どの列を主キーにするかを指定できます。指定しない場合、同じ情報を持つ列がスプライシングの基礎として使用されます。

これらの2つのテーブルは、2つの列名、ジョブ番号と従業員名が同じであることがわかります。これを見ると、インデックスが付いたレコードが5であることがわかります。従業員名は同じですが、ジョブ番号は異なりますが、会社がある可能性があります同じ名前の従業員の場合、これら2つのテーブルをつなぎ合わせました。

主キーを指定しない場合:

pd.merge()のデフォルトは内部接続であるため、同じ主キー情報を持つパーツのみがスプライスされ、IDは従業員名とまったく同じです。IDのみが004です

主キーのステッチを指定します。

主キーを従業員名として指定すると、従業員名が一致する限り、情報は保持されます。ここで使用される接続方法は内部接続であることに注意してください。

パラメータleftindexおよびrightindex

フィールドを主キーとして指定することに加えて、インデックスをスティッチングの主キーとして使用することを検討することもできます。LeftindexとrightindexのデフォルトはFalseで、これはインデックスが主キーとして使用されず、Trueに調整できることを意味します。次の2つのテーブルのインデックスは同じです:

インデックスでステッチした後:

2つのテーブルのインデックスはまったく同じであるため、スプライシングの効果は非常に良好です。インデックスを調整できない場合、デフォルトの内部接続では、インデックスが調整されたレコードのみがスプライスされます。

パラメータ方法

howパラメータはスプライシング方法を制御します。デフォルトでは、内部接続(内部)で、異なるスプライシング方法は結果にどのように影響しますか?内部接続は、同じ主キーで2つのテーブルの情報をつなぎ合わせるだけです。外部接続を見てください。

外部結合は、2つのテーブルのすべての情報を保持するためのものです。スプライスするときに、ラベルを位置合わせできない部分はNANで埋められます。

左の結合は、左のテーブルのすべての情報を保持することです。右のテーブルの主キーの情報は、左のテーブルと一致しています。位置合わせできないラベルの部分は、NANで埋められます。

右の接続は、右のテーブルのすべての情報を保持することです。左のテーブルと左のテーブルの主キーの情報が接合されます。ラベルを揃えることができない部分には、NANが入力されます。

パラメータleftonおよびrighton

このような状況が発生する場合があります。2つのテーブルには正確な列名がありませんが、一貫した情報を持つ列があります。たとえば、次の場合、「従業員名」の列がありますが、名前が異なります。

このとき、各テーブルで主キーとして使用するフィールドを指定する必要があります。leftonとrightonの2つのパラメーターが使用されます。

パラメータの接尾辞

2つのテーブルに同じ列名がいくつかある場合があります。主キーである列を除いて、同じ名前の他の列がテーブルにスプライスされると、名前を区別するために使用される、この列がどのテーブルに由来するかを示すサフィックスが表示されます。同じ列では、このサフィックスのデフォルトは(xおよびy)です。たとえば、このスプライシングの結果、主キーとして従業員名が表示されます。スプライスされたテーブルには2つの「work ID」列があり、後ろにサフィックスがあります。

このサフィックスは変更できますが、それを制御するパラメータはサフィックスです。サフィックスを(左右)に変更しましたが、実際の作業では必要に応じて変更できます。

パラメータインジケーター

pd.concat()では、スプライスされたテーブルのどの情報がどのテーブルからのものかを表示するようにパラメーターを設定できます。これは、インジケーターパラメーターによって設定されるpd.merge()でも実行できます。デフォルトはFalseです。データソースを表示するには、パラメーターをTrueに設定します。

このようにして、テーブルの最後に新しい列があり、このレコードがどのレコードからのものかを示します。両方のテーブルにデータがある場合は、両方にマークが付けられます。

上記は、pd.merge()関数の一般的に使用されるパラメーター設定であり、データのマージにこの関数を使用する必要がある問題のほとんどを解決できます。

現在の流行では、過去の慌ただしいペースがようやく減速し、キャリアプランやライフプランを考える時期でもあります。事前に準備し、事前に計画し、将来に備えてエネルギーを蓄えましょう!

公開された2740件の元の記事 276のような 560,000以上の訪問

おすすめ

転載: blog.csdn.net/yoggieCDA/article/details/105629701