パンダ:ゼロからヒーローへ

Dec 11 2022
お気に入りの昼間のテレビを見ながら読むことができる全体的な記事ですが、実際に仕事を成し遂げるために知っておくべきことをすべて教えるのに十分です. はじめに Pandas は、Python のデータ分析および処理ライブラリです。

お気に入りの昼間のテレビを見ながら読むことができる全体的な記事ですが、実際に仕事を成し遂げるために知っておくべきことをすべて教えるのに十分です.

入門

Pandasは、Python のデータ分析および処理ライブラリです。Pandas は、データ サイエンスと機械学習に広く使用されています。これは、科学計算に使用される NumPy と呼ばれる別の Python パッケージの上に開発されています。NumPy についてよく知らない場合は、Pandas を始める前に、私の 5 分間の記事を読んですぐに確認することをお勧めします。これは必須ではありませんが、強くお勧めします。

開始するには、まずシステムに Python、NumPy、および Pandas があることを確認します。どのように取得するかは、システムと好みの IDE によって異なりますが、Anaconda をお勧めします。基本的な Anaconda のインストールでは、ターミナルに移動して「conda install numpy」を実行し、次に「conda install pandas」を実行して出来上がりです!

それでは、example.pyファイルを作成して作業を開始しましょう。

注:使用する単一のサンプル ファイルではなくプロジェクトを作成する場合は、単純にディレクトリとその中に__init__.pyファイルを作成する必要があります。

ファイル内で Pandas を操作できるようにするには、ファイルの先頭に次の行を追加する必要があります。

numpy を np としてインポート

パンダを pd としてインポート

注:通常、NumPy を np としてインポートし、Pandas を pd としてインポートします。これにより、ライブラリから関数を呼び出すたびに numpy と pandas を入力する必要がなくなります。変更することはできますが、nppd 一般的な規則であることに注意してください。

その後、ターミナルに移動して次のコマンドを実行するだけで、サンプル ファイル内のコードを実行できます。

python example.py

シリーズ

プログラミング言語に配列があるのと同様に、NumPy に行列があるのと同様に、Pandas でシリーズを取得します。シリーズと通常の行列/配列の主な違いは、シリーズ内のアイテムがその値にアクセスするためのインデックス番号またはキーを持つことができることです。JSON データのようなキーと値のペアのリストと考えてください。

興味深い事実: Pandas は、キー ペアを保存し、それらを視覚的に表示し、MS Excel と同様の方法で計算を実行するという事実から、「データ サイエンス用の Excel」と表現されることがよくあります。

Python 辞書から Pandas シリーズを作成できます。

myDictionary = { “ジョン” : 35, “ジェーン” : 40}

pd.Series(myDictionary) // ジョン 35、ジェーン 40 を返します

辞書の代わりに配列を追加する場合、シリーズ内の項目はキーとして整数を持ちます。

myArray = [ 35, 40]

pd.Series(myArray) // 0 35、1 40 を返します

次のように、2 つの配列を一緒に追加して、それらからシリーズを作成できます。

myArray1 = [ 35, 40]

myArray2 = [「ジョン」、「ジェーン」]

pd.Series(data= myArray1, index=myArray2) // John 35、Jane 40 を返します

同じキーを持つ 2 つの異なるシリーズがある場合、次のように数学演算を実行できます。

series1 = pd.Series({ “ジョン” : 35, “ジェーン” : 40})

series2 =pd.Series({ “ジョン” : 100, “ジェーン” : 50})

seriesSum = series1 + series2 // John 135、Jane 90 を返します

注:異なるキーを持つシリーズで数学演算を実行する場合、一致するキーは演算の結果を値として持ちますが、一致しないキーはこれらのキーの結果がないため NaN の値を持ちます。

データ フレーム

データ フレームはシリーズと見なすことができますが、行列用です。基本的に、インデックスがキーで、全体がキーと値のペアであるマトリックスは、データ フレームと呼ばれます。

次のように、任意の配列または行列からデータ フレームを作成できます。

myMatrix = [ [10, 20, 30], [ 100, 200, 300] ]

dataFrame = pd.DataFrame(myMatrix)

列と行のキーを次のように割り当てることができます。

myMatrix = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]

行 = [「ジョン」、「ジェーン」、「サラ」]

列 = [「テニス」、「バスケットボール」、「ピンポン」]

dataFrame = pd.DataFrame(myMatrix、インデックス = 行、列 = 列)

データ フレームから特定の列を次のように呼び出すことができます。

dataFrame[「テニス」]

ただし、上記のキーを使用して行を呼び出すと、エラーがスローされます。次のようにキーを使用して行を呼び出すことができます。

dataFrame.loc[ “ジョン” ]

列と行を呼び出すキーがあるからといって、インデックスがないわけではありません。マトリックスと同様に、インデックスは引き続き存在します。たとえば、最初の行を次のように呼び出すことができます。

dataFrame.iloc[1] // 値が 2、20、200 の行 Jane を返します

次のように、新しい列をデータ フレームに追加できます。

dataFrame[ “フットボール” ] = [ 1000, 2000, 3000]

逆に、次のようにデータ フレームから列または行を削除できます。

dataFrame.drop( “Football”, axis=1, inPlace=True) // 列を削除するには、軸を 1 に設定する必要があります

dataFrame.drop( “John”, axis=0, inPlace=True) // 行を削除するには、軸を 0 に設定する必要があります

注: Pandas は、列全体または行を誤って変更することを望んでいません。古いデータ フレームを実際に変更するのではなく、別のデータ フレームを作成して、1 つの列が欠落している古いデータ フレームを設定しようとしている可能性があります。したがって、実際にデータ フレーム自体を変更していることを確認するために、関数内に inPlace=True パラメーターを配置します。

セル値は次のように呼び出すことができます。

dataFrame.loc[「ジョン」、「テニス」]

次のようにデータ フレーム内で削除できます。

dataFrame[ dataFrame[「テニス」] > 5]

// Tennis 列の値が 5 未満の行を削除するため、行 John を削除します

データ フレーム内のインデックスを変更するには、最初に新しいインデックス配列を列として古いデータ フレームに追加する必要があります。次に、列名でそれをキャプチャし、その値を新しいインデックスとして次のように割り当てることができます。

dataFrame.set_indexes(“新しいインデックス列”, inPlace=True)

マルチインデックス データ フレームは、Excel では次のようになります。

ここには、果物と野菜と製品名の 2 つの行へのインデックスがあります。Pandas を介して、このようなマルチインデックスを作成することもできます。そのためには、次のことを行う必要があります。

  • 外側のインデックスと内側のインデックスの 2 つのリストを定義し、これら 2 つをタプル uzing リストと zip メソッドに結合します。
  • 次に、MultiIndex.from_tuples() メソッドを使用して、タプルをマルチインデックスに変換します。
  • 次に、列のリストを作成します。
  • その後、データのリストを行列として作成し、np.array() メソッドを使用して実際に行列に変換します。
  • 最後に、Pandas の DataFrame() 関数を使用して、マルチインデックスでデータ フレームを作成します。

outerIndexes = [「野菜」、「野菜」、「果物」、「果物」]

innerIndexes = [「トマト」、「キュウリ」、「オレンジ」、「ブルーベリー」]

結合されたインデックス = リスト (zip(outerIndexes, innerIndexes) )

combinedIndexes = pd.MultiIndex.from_tuples(combinedIndexes)

listAmountPrice =[ [ 2 米ドル、5 ポンド]、[ 1 米ドル、3 ポンド]、[ 2 米ドル、3 ポンド]、[ 3 米ドル、2 ポンド] ]

numpySeriesAmountPrice = np.array( listAmountPrice )

myColumns = [「価格」、「金額」]

multiIndexDataFrame = pd.DataFrame ( numpySeriesAmountPrice、インデックス = 結合インデックス、列 = myColumns)

そして、ブルーベリーの量と価格を次のように呼び出すことができます。

multiIndexDataFrame.loc[ “フルーツ” ].loc[ “ブルーベリー” ]

次のように、マルチインデックス列にいくつかの名前を付けることもできます。

multiIndexDataFrame.index.names = [「通路」、「商品名」]

オペレーション

  • NaN 値を含む行が削除された元のデータ フレームからデータ フレームを返すには、次のようにします。
  • NaN 値を含む列が削除された元のデータ フレームからデータ フレームを返すには、次のようにします。
  • 3 つ以上の NaN 値を含む行が削除された元のデータ フレームからデータ フレームを返すには、次のようにします。
  • NaN 値を含むセルが特定の値 (整数 20 など) に変更された元のデータ フレームからデータ フレームを返すには、次のようにします。
  • 操作を実行し、列に基づいてデータ フレームに関するデータを収集するには、groupby を使用してその列に関連してデータ フレームをグループ化する必要があります。次に、データをカウントしたり、値の平均を取得したりする操作を実行できます。

group.mean() // テーブル内の給与の平均を取得します

group.count() // 各給与に対して特定の給与を受け取る従業員の数を計算します

group.describe() // グループ化された「給与」列に関連するそのデータ フレームの平均値、最大値、最小値などの統計分析結果をもたらします

  • 同じ列を持つ 2 つ以上のデータ フレームがある場合は、次のようにそれらを (1 つ下に) まとめることができます。
  • 同様に、同じ行を持つ 2 つ以上のデータ フレームがある場合、次のようにそれらを (1 つ下に) まとめることができます。
  • ただし、列が異なる 2 つ以上のデータ フレームを取得する場合は、以下のようにマージ メソッドを使用します。ただし、これを行うには、マージするすべてのデータ フレームに少なくとも 1 つの共通の列が必要です。
  • 次のように、データベース内の列内の一意の値のみを取得できます。
  • 次のように、データ フレーム内の列内に存在する一意の値の数を計算できます。
  • .apply() 関数を使用して、関数を定義し、データ フレーム内の各値に適用できます。例でさらに説明するには:

return price * 1.33 // 元の価格に %33 税を追加する関数

priceDataFrame[ “Price” ].apply( priceWithTax ) // 価格が更新されたシリーズを返します

パンダでエクセル

上記でデータ フレームとシリーズを使用しましたが、実際のデータは Excel ファイルの形式で渡される可能性が高くなります。

Excel ファイルを操作できるようにするには、Python ファイル (Pandas の関数と操作を実行する Python ファイル) とまったく同じディレクトリにファイルを保存してください。次に、Excel ファイルを次のようにインポートできます。

myDataFrame = pd.read_excel( “myExcelFile.xlsx” )

Excel ファイルはデフォルトで DataFrame タイプとしてインポートされるため、準備完了です。

結論

Pandas には他にも多くの定義済み関数と使いやすい構造があり、タスクによっては必要になる場合がありますが、ここまでで作業を完了するのに十分なはずです。これに関するキャリア全体を探している場合、またはさらに学習することに興味がある場合は、タスクに取り組んでいるときに何か他のもの (よりスマートなもの!) の必要性に出くわしたときに、上級レベルのコースまたは研究から続けることができます. Pandas には、ほぼすべてのソリューションがあります。