ホームページ >バックエンド開発 >Python チュートリアル >Pandas のヒント: 基本的な DataFrame 操作と Null 値の入力

Pandas のヒント: 基本的な DataFrame 操作と Null 値の入力

coldplay.xixi
coldplay.xixi転載
2020-09-16 16:20:364561ブラウズ

Pandas のヒント: 基本的な DataFrame 操作と Null 値の入力

関連する学習の推奨事項: Python チュートリアル

##今日は

pandas データ処理このトピックの 4 番目の記事では、DataFrame のインデックスについて説明します。

前の記事では、iloc、loc、論理インデックスなど、DataFrame データ構造でよく使用されるインデックスの使用方法を紹介しました。今日の記事では、DataFrame の

基本操作 をいくつか見てみましょう。

データ アライメント

2 つの DataFrame の合計を計算できます。

pandas は自動的に 2 つの DataFrame を実行します。データ配置. データが一致しない場合は、Nan (非数値) に設定されます。

最初に 2 つの DataFrame を作成します:

import numpy as npimport pandas as pddf1 = pd.DataFrame(np.arange(9).reshape((3, 3)), columns=list('abc'), index=['1', '2', '3'])df2 = pd.DataFrame(np.arange(12).reshape((4, 3)), columns=list('abd'), index=['2', '3', '4', '5'])复制代码
結果は私たちが想像したものと一致しています。実際には、numpy 配列を使用して

DataFrame を作成するだけです。インデックスと列を指定します。これは非常に基本的な使用法であると考えてください。

次に、2 つの DataFrame を追加すると、次の結果が得られます:

pandas が 2 つの DataFrame を追加したことがわかります。マージすると、

両方の DataFrame に表示されない位置は Nan に設定されます。実はこれには意味があり、足し算だけではなく、2つのDataFrameの加減乗除の四則演算も計算できます。 2 つの DataFrame の割り算を計算すると、それに該当しないデータが Nan に設定されるだけでなく、ゼロで割るという行為も外れ値の発生につながります (必ずしもそうではない場合があります) Nan ですが、inf です)。

fill_value

2 つの DataFrame を操作する場合、もちろん null は必要ありません表示される値。このとき、null 値を埋める必要があります。演算子を直接使用して演算を実行すると、埋めるためのパラメータを渡すことができません。このとき、で提供されている

算術メソッドを使用する必要があります。データフレーム。

DataFrame には一般的に使用される演算子がいくつかあります:

add、sub、p については誰もがよく理解していますが、ここでの radd メソッドと rsub メソッドは何を意味するのでしょうか?なぜ前に r があるのでしょうか?

ややこしいようですが、率直に言うと、radd は パラメータを反転するために使用されます。たとえば、DataFrame 内のすべての要素の逆数を取得したい場合は、1/df と記述できます。 1 自体は DataFrame ではないため、1 を使用して DataFrame 内のメソッドを呼び出すことはできず、パラメーターを渡すこともできません。この状況を解決するには、1/df を df.rp(1)## として記述します。 # なので、パラメータを渡すことができます。

除算の計算中にゼロによる除算が発生するため、無限大を表す inf が得られます。

add メソッドと p メソッドで fill_value パラメータを渡すことができます。このパラメータは

計算前に片側の欠損値の場合に埋め込むことができます。つまり、1 つの DataFrame でのみ欠落している位置は、指定した値で置き換えられます。両方の DataFrame で欠落している場合でも、Nan になります。

結果を比較すると、加算後の (1, d)、(4, c)、および (5, c) の位置はすべて Nan であることがわかります。 2 つのデータフレーム df1 および df2 内のこれらの位置は空の値であるため、埋められません。

#fill_value このパラメータは、インデックスの再作成など、多くの API で使用されます。使用方法は同じなので、API ドキュメントを確認するときに注意してください。

それでは、入力後も表示されるこの種の空の値をどうすればよいでしょうか?これらの場所を手動で見つけて入力することしかできませんか?もちろん、それは非現実的ですが、Pandas は、特に null 値を解決する API も提供します。

#null 値を入力する前に、最初に行う必要があるのは

null 値を検索します

。この問題を解決するには、bool DataFrame を返す isna API を使用します。DataFrame 内の各位置は、元の DataFrame の対応する位置が null 値であるかどうかを示します。

dropna

もちろん、null 値かどうかを確認するだけです。明らかに十分ではありません。null 値が表示されないことを期待する場合もありますが、この時点では、null 値を削除する を選択できます。この状況では、DataFrame の Dropna メソッドを使用できます。

dropna を使用すると、null 値を含む行が破棄されることがわかりました。 null 値を持たない行のみが保持されますが、行ではなく列を破棄したい場合がありますが、このときは axis パラメータを渡すことで制御できます。

このようにして、null 値を含まない列が得られます。行と列の制御に加えて、 厳密性も制御できます。ドロップ を実行中。 How パラメータで判断できますが、How は 2 つの値 (1 つは 'all'、もう 1 つは 'any') を渡すことをサポートしています。 All は、特定の行または列がすべて null 値の場合にのみ破棄されることを意味し、any に対応すると、null 値が出現する限り破棄されます。デフォルトで入力されていない場合は、any とみなされますが、通常はこのパラメータを使用せず、印象があれば十分です。

fillna

null 値を含むデータを削除するだけでなく、パンダも使用できます Fill empty値、実際、これは最も一般的に使用される方法でもあります。

塗りつぶし用に特定の値を渡すだけです。

fillna は新しい DataFrame を返します。すべて Nan の値です。指定した値に置き換えられます。新しい DataFrame を返さずに元のデータを直接変更する場合は、inplace パラメーターを使用してこれがインプレース操作であることを示すことができ、パンダは元の DataFrame を変更します。

df3.fillna(3, inplace=True)复制代码

除了填充具体的值以外,我们也可以和一些计算结合起来算出来应该填充的值。比如说我们可以计算出某一列的均值、最大值、最小值等各种计算来填充。fillna这个函数不仅可以使用在DataFrame上,也可以使用在Series上,所以我们可以针对DataFrame中的某一列或者是某些列进行填充:

除了可以计算出均值、最大最小值等各种值来进行填充之外,还可以指定使用缺失值的前一行或者是后一行的值来填充。实现这个功能需要用到method这个参数,它有两个接收值,ffill表示用前一行的值来进行填充,bfill表示使用后一行的值填充。

我们可以看到,当我们使用ffill填充的时候,对于第一行的数据来说由于它没有前一行了,所以它的Nan会被保留。同样当我们使用bfill的时候,最后一行也无法填充。

总结

今天的文章当中我们主要介绍了DataFrame的一些基本运算,比如最基础的四则运算。在进行四则运算的时候由于DataFrame之间可能存在行列索引不能对齐的情况,这样计算得到的结果会出现空值,所以我们需要对空值进行处理。我们可以在进行计算的时候通过传入fill_value进行填充,也可以在计算之后对结果进行fillna填充。

在实际的运用当中,我们一般很少会直接对两个DataFrame进行加减运算,但是DataFrame中出现空置是家常便饭的事情。因此对于空值的填充和处理非常重要,可以说是学习中的重点,大家千万注意。

想了解更多编程学习,敬请关注php培训栏目!

以上がPandas のヒント: 基本的な DataFrame 操作と Null 値の入力の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。