Pandas はカテゴリ値を Int 値に変換します

Pandas Hakategori Zhiwo Int Zhini Bian Huanshimasu



機械学習を実行するためのデータセットには、数値変数とカテゴリ変数の両方が含まれます。カテゴリ変数は、人間が簡単に理解できる文字列型のデータです。一方、機械はカテゴリー入力を直接理解することはできません。したがって、カテゴリのコンテンツは、機械が解釈できる数値に変換する必要があります。

カテゴリカルを Int に変換するメソッド

DataFrame のカテゴリ値を int 値に変換するために「pandas」で使用できる手法は、次のとおりです。

    • DataFrame.replace() メソッド
    • DataFrame.apply(factorize()) メソッド

この記事ではこれらの方法を活用し、「pandas」で両方の方法を使用する方法を詳しく説明します。







例 # 1: Pandas Replace() メソッドの利用

pandas の「DataFrame.replace()」メソッドを使用して、DataFrame のカテゴリ値を int に変換できます。ここでは、この方法を利用する方法を学びます。



「Spyder」ツールを使用して、この手法を Python で最適に実行しました。スクリプトの作成を開始するには、「Spyder」ツールで新しい Python ファイルを開きます。スクリプトを作成するための最も重要な要件は、適切なライブラリをインポートすることです。 「pandas」メソッドを実装する必要があるため、「pandas としてインポート」を使用して「pandas」の機能にアクセスします。次に、コア Python コードを開始します。 「pd.DataFrame()」メソッドを使用して DataFrame を作成しました。 DataFrame は、「Name」、「Degree」、「Income」の 3 つの列で初期化されます。すべての DataFrame の列には、同じ長さの値が格納されます。



最初の列「Name」には、「bush」、「albert」、「harry」、「peter」、「emma」、「newton」、「smith」、および「elsa」の 8 つの値があります。 2 列目の 'Degree' にも、'BS'、'MS'、'MS'、'BS'、'BS'、'BS'、'MS'、'MS' の 8 つのカテゴリ値が格納されます。最後の列「収入」には、8 つの整数値「60000」、「80000」、「75000」、「45000」、「56000」、「65000」、「55000」、および「70000」があります。 「pd.DataFrame()」関数の呼び出しの出力を格納するために、DataFrame オブジェクト「staff」を作成しました。最初の DataFrame を表示するために、スクリプトの最終行でパラメータとして DataFrame の名前「staff」を指定した「print()」メソッドを使用しました。






ターミナルで出力を表示するには、「Spyder」ツールの「Run File」ボタンを使用するか、「Shift + Enter」キーを押します。ターミナルに表示される出力は、正常に生成された 3 つの列を含む DataFrame を示しています。


これで、DataFrame が構築されました。必要な手法を適用する必要があります。 pandas の「DataFrame.replace()」メソッドを使用して、指定された列のカテゴリ値を整数値に変換し、マシンが読み取れるようにします。



DataFrame の名前に、値を置き換える必要がある特定の列名 (「staff['degree']」) を指定しました。カテゴリ値を持つ列「Degree」の値を整数値に置き換えたいと考えています。次に、「.replace()」メソッドが呼び出されます。これを 2 つのセットに渡しました。最初の値には、「学位」列から抽出した 2 つのカテゴリ値「['BS', 'MS']」が含まれています。ご覧のとおり、'Degree' 列はこれら 2 つの値を繰り返し使用しています。 3 番目の値がある場合は、それについても言及したに違いありません。 2 番目のセットには 2 つの int 値「[0, 1]」があり、それぞれ最初のセット値の代わりになります。もう 1 つのパラメータ「inplace」は「True」に設定され、値の置換が有効になります。 「False」に設定すると、置換が無効になります。最後に、「print()」メソッドを使用して、更新された「staff」DataFrame を表示しました。


結果の DataFrame には、「Degree」列に整数値があります。値「BS」は「0」に置き換えられ、「MS」は「1」に置き換えられます。


プロパティ「dataframe.dtype」を使用して、各列のデータ型を確認することもできます。これにより、指定された DataFrame 内のすべての列のデータ型が取得されます。


ここで、DataFrame のデータ型を取得します。 「Degree」列のデータ型が「int64」に変更されていることがわかります。

例 # 2: Pandas の apply() メソッドの利用

pandas が提供するもう 1 つのメソッドは、カテゴリ値を整数に変換するための「DataFrame.apply()」関数です。前の例では、1 つのカテゴリ列を整数に変換する方法を学習しました。 DataFrame のすべてのカテゴリ列を int に変換する方法を見ていきます。

実際の実装から始めて、このメソッドに不可欠なライブラリである pandas をインポートする必要があります。 「pandas を pd としてインポート」スクリプトを使用して、「pd」を使用して pandas モジュールにアクセスできるようにする「Spyder」ツールの Python ファイルに pandas をインポートしました。 「pd.DataFrame()」関数を使用して DataFrame を構築しました。

この DataFrame には、「グループ」、「ポジション」、「スコア」、「アシスト」の 4 つの列があります。各列には 9 つの値が格納されます。 「グループ」列の値は、「X」、「X」、「Y」、「X」、「Y」、「Y」、「Y」、「X」、および「Y」です。 「位置」列には、「A」、「C」、「D」、「A」、「C」、「B」、「B」、「D」、「B」の 9 つの値があります。 「スコア」列には、「4」、「8」、「7」、「10」、「9」、「5」、「7」、「3」、および「23」の整数値があります。最後の列「アシスト」の値は、「10」、「2」、「3」、「9」、「3」、「7」、「4」、「2」、および「9」です。

DataFrame オブジェクト「prog」を作成し、「pd.DataFrame()」メソッドの呼び出しの出力を割り当てました。したがって、「pd.DataFrame()」から生成された結果の DataFrame フレームは、「prog」に格納されます。これで、このオブジェクトを使用して DataFrame にアクセスできます。この DataFrame を表示するために、DataFrame オブジェクト「prog」をパラメータとして「print()」メソッドを使用しました。


先ほどの Python プログラムを実行すると、4 列の DataFrame がターミナルに表示されます。


複数のカテゴリ列を整数に変換するために、この手法に従いました。まず、pandas の「DataFrame.select_dtypes().columns」メソッドを使用して、オブジェクト データ型を含むすべての列を選択する必要があります。必要に応じてスクリプトで使用すると、「prog.select_dtypes(['object']).columns」になります。 「prog」DataFrame 内のデータ型「object」を持つすべての列を選択します。このメソッドの出力を格納する変数「concate_col」を作成しました。この変数「concat_col」を使用するだけで、「object」データ型列にアクセスできるようになりました。

これらの列を整数に変換するために、パンダの「DataFrame.apply()」と「pd.factorize()」メソッドを使用しました。 「concat_col」変数を DataFrame 名とともに使用した後、「.apply()」メソッドが呼び出されます。 「.apply」メソッドの括弧の間で、「pd.factorize()」メソッドを呼び出しました。ここで、「x」は、「object」データ型の「prog」DataFrame からの任意の値にすることができます。したがって、このコード行全体は「prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])」のように記述されます。 factorize メソッドは、 「オブジェクト」データ型を「int」に変換します。最終的な出力は、「prog」変数をパラメーターとして渡して「print()」関数を呼び出すことで表示できます。


更新された DataFrame では、「グループ」列と「位置」列の値が最初はカテゴリ、つまりオブジェクトであったことがわかります。更新された出力 DataFrame でも、両方の列に整数値があります。 「グループ」列の「X」は「0」に、「Y」は「1」に置き換えられます。一方、「位置」列「A」は「0」に、「C」は「1」に、「D」は「2」に、「B」は「3」に置き換えられます。


それでは、更新されたデータ型を確認しましょう。


次の列はすべて「int64」データ型です。

結論

私たちのガイドは、カテゴリ値を数値に変換することを中心に展開しています。これにより、オブジェクトのデータ型はマシンで処理できないため、マシンが理解できるようになります。必要なデータ型を取得するために、「pandas」ライブラリが特徴とする 2 つのアプローチを紹介しました。また、「Spyder」ツールで実行されるサンプル コードの実用的な実装により、各サンプルの結果を共有しました。最後に、目的の結果を達成するためのすべてのステップについて詳しく説明しました。