この記事では、Pandas DataFrame で NaN 値を作成する 3 つの方法を紹介します。
- Numpyの使用
- 空白の値を持つファイルのインポート
- 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 値が生成されます。
出力:

同様に、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 個表示されます。
出力:

(2)空白の値を持つファイルのインポート
Pandas を使用してファイルをインポートし、そのファイルに空白の値が含まれている場合、それらの空白のインスタンスに対して NaN 値が取得されます。
ここでは、ファイル自体の一部の値が空白になっている csv ファイルを Pandas を使用してインポートしてみましょう。
Product | Price |
Desktop Computer | 700 |
Tablet | |
500 | |
Laptop | 1200 |
デモンストレーションのために、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 値が表示されます。
出力:

(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 つ) が表示されます。
出力:

次に、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 になったことに注意してください。
出力:
