この記事では、Pandas DataFrame で NaN 値を作成する 3 つの方法を紹介します。

  1. Numpyの使用
  2. 空白の値を持つファイルのインポート
  3. to_numeric の適用

Pandas DataFrame で NaN 値を作成する 3 つの方法

(1)Numpyを使う

Numpyを使用すると、Pandas DataFrameでNaN値を簡単に作成できます。

具体的には、DataFrame に NaN 値を追加するたびに np.nan を配置できます。

例えば、以下のコードでは、1つのDataFrame列の下にnp.nanのインスタンスが4つあります。

import pandas as pd
import numpy as np

data = {
    "set_of_numbers": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan, 8, 9, 10, np.nan]
}

df = pd.DataFrame(data)

print(df)

これにより、DataFrame に 4 つの NaN 値が生成されます。

出力:

Pandas DataFrame で NaN 値を作成する 1

同様に、DataFrame 内の複数の列に np.nan を配置することもできます。

import pandas as pd
import numpy as np

data = {"first_set_of_numbers": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan, 8, 9, 10, np.nan],
        "second_set_of_numbers": [11, 12, np.nan, 13, 14, np.nan, 15, 16, np.nan, np.nan, 17, np.nan, 19, np.nan],
        "third_set_of_numbers": [20, 21, 22, 23, np.nan, 24, np.nan, 26, 27, np.nan, np.nan, 28, 29, 30]
        }

df = pd.DataFrame(data)

print(df)

これで、DataFrame の複数の列にわたって NaN 値のインスタンスが 14 個表示されます。

出力:

Pandas DataFrame で NaN 値を作成する 2

(2)空白の値を持つファイルのインポート

Pandas を使用してファイルをインポートし、そのファイルに空白の値が含まれている場合、それらの空白のインスタンスに対して NaN 値が取得されます。

ここでは、ファイル自体の一部の値が空白になっている csv ファイルを Pandas を使用してインポートしてみましょう。

ProductPrice
Desktop Computer700
Tablet 
 500
Laptop1200

デモンストレーションのために、CSV ファイルが次のパスに保存されていると仮定します。

C:\Users\Ron\Desktop\Products.csv

その場合、CSV ファイルをインポートするための構文は次のようになります (ファイルがコンピューター上に保存されている場所を反映するようにパスを変更する必要があることに注意してください)。

import pandas as pd

df = pd.read_csv(r"C:\Users\Ron\Desktop\Products.csv")

print(df)

ここでは、2 つの空白インスタンスに対して 2 つの NaN 値が表示されます。

出力:

Pandas DataFrame で NaN 値を作成する 3

(3)to_numericの適用

では、1つの列を持つ新しいDataFrameを作成しましょう。今回は、列の値に数値データと非数値データの両方が含まれます。

set_of_numbers
1
2
AAA
3
BBB
4

DataFrame は次のようになります。

import pandas as pd

data = {"set_of_numbers": [1, 2, "AAA", 3, "BBB", 4]}
df = pd.DataFrame(data)

print(df)

6 つの値 (数値 4 つと非数値 2 つ) が表示されます。

出力:

Pandas DataFrame で NaN 値を作成する 4

次に、to_numeric を使って ‘set_of_numbers’ 列の値を float 形式に変換します。ただし、これらの値のうち 2 つは数値ではないため、NaN が返されます。

df["set_of_numbers"] = pd.to_numeric (df["set_of_numbers"], errors="coerce")

完全なコードは次のとおりです。

import pandas as pd

data = {"set_of_numbers": [1, 2, "AAA", 3, "BBB", 4]}
df = pd.DataFrame(data)

df["set_of_numbers"] = pd.to_numeric (df["set_of_numbers"], errors="coerce")

2 つの非数値が NaN になったことに注意してください。

出力:

Pandas DataFrame で NaN 値を作成する 5