PandasにおけるDataFrameでNaN(非数)値を作成する

PandasにおけるDataFrameでNaN値を作成してみます。

NaN(非数)とは、「Not a Number」の略語で、無効な計算が実行されたときに常に表示されます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■NumPyを使用する

NumPyを使用し、NaN値を作成することができますので、やってみます。

■コード

import pandas as pd 
import numpy as np

data = {
    '数字':[1,2,3,4,np.nan,6,7,8,9,np.nan]
}

df = pd.DataFrame(data)

print(df)

インポートでPandasモジュールと、numpyモジュールを呼び出します。dataという変数を作成し、その中に、今回は「数字」という1つの列を追加し格納します。数字の列の中には数値を入れていますが、一部np.nanと記述しています。np.nanと記述することで、NaN値を作成することができます。

格納した後に、dfという変数を作成。pd.DataFrame()を使用し、dataを元にDataFrameを作成し格納します。

その後、print関数でdataという変数の情報を出力してみます。

■実行

このスクリプトを「df_n.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、DataFrame内の列が出力され、np.nanと記述した位置が、「NaN」と表示されることが確認できました。

■空白のインスタンスを持つCSVファイルを作成しインポートする

次に、空白のインスタンスを持つCSVファイルを作成しインポートすることでも、NaN値を作成できますので、やってみます。

今回は「test.csv」という上記のcsv形式のファイルを用意しました。ファイル内のデータには空白の箇所があります。ファイルが保存されている場所は「C:\Users\user\test(フォルダパス)」です。

■コード

import pandas as pd 

df = pd.read_csv(r"C:\Users\user\test\test.csv")

print(df)

インポートでPandasモジュールを呼び出します。その後にdfという変数を作成し、pd.read_csv()で、今回用意したcsv形式のファイルを読み込み、格納します。

格納後、print関数でdfという変数の情報を出力します。

■実行

このスクリプトを「df_n_2.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、csv形式のファイルをDataFrameとして出力させることができ、csv形式のファイル内の空白の箇所が「NaN」と出力されていることが確認できました。

なお、csv形式のファイル内のデータは複数の列(2列以上)がある場合に「NaN」と表示されましたが、1列だと「NaN」と出力されませんでした。

■to_numeric関数を使用する

次に、to_numeric関数を使用することでも、NaN値を作成できますので、やってみます。

■コード

import pandas as pd 

data = {
    '数字':["sanfasidan",2,"dasihgnrjisd",4,5]
}

df = pd.DataFrame(data)

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

print(df)

インポートでPandasモジュールを呼び出します。dataという変数を作成し、その中に、今回は「数字」という1つの列を追加し格納します。数字の列の中には数値を入れていますが、一部意味のない文字列を記述しています。

格納後、dfという変数を作成。pd.DataFrame()を使用し、dataを元にDataFrameを作成し格納します。

その後、dfという変数に対して、to_numeric関数を使用します。使用する際に、括弧内の第1の引数で、dfという変数内の「数字」という列を指定し、第2の引数では、「errors=”coerce”」と記述し、数値は数値として変換し、そうでないものは「NaN」と変換されます。

変換後、print関数でdfという変数の情報を出力します。

■実行

このスクリプトを「df_n_3.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、to_numeric関数を使用したことにより、DataFrame内の列の値が変換されて「NaN」と出力できることが確認できました。

コメント

タイトルとURLをコピーしました