Pandasで空のDataFrameを作成する方法を解説する

スポンサーリンク

この記事では、Pythonで空のDataFrameを作成するためのさまざまな方法について説明する予定です。

また、空のDataFrameとNaN値を持つDataFrameの違いについても説明します。

それでは、始めましょう。

スポンサーリンク

Pythonで空のDataFrameとは何ですか?

Pythonでは、DataFrameはPythonのpandasモジュールが提供する2次元のデータ構造で、表形式(行と列)でデータを格納します。

空のDataFrameは、完全に空の(データがない)pandas DataFrameオブジェクトで、すべての軸の長さはゼロです。

また、行数か列数が0でなければなりません。

pandas DataFrameオブジェクトが空かどうかは、pandas DataFrameオブジェクトの DataFrame.empty プロパティを使用して確認することができます。

このプロパティをpandas DataFrameオブジェクトに適用すると、そのDataFrameオブジェクトが空かどうかの条件に応じて、TrueまたはFalseというブール値を返します。

空のデータフレームを作成する方法

Pythonでは、以下の方法で空のpandas DataFrameを作成することができます。

これらを一つずつ理解していきましょう。

1. 行も列もない空のDataFrameを作成する

これは pd.DataFrame() 関数を用いて空の pandas DataFrame オブジェクトを作成する最もシンプルで簡単な方法です。

このメソッドでは、パラメータなしでpandas DataFrameクラスのコンストラクタを呼び出し、空のpandas DataFrameオブジェクトを返します。

このメソッドを実装するためのPythonのコードを見てみましょう。

# Method-1
 
# Import pandas module
import pandas as pd
 
# Create an empty DataFrame without
# Any any row or column
# Using pd.DataFrame() function
df1 = pd.DataFrame()
print('This is our DataFrame with no row or column:
'
)
print(df1)
 
# Check if the above created DataFrame
# Is empty or not using the empty property
print('
Is this an empty DataFrame?
'
)
print(df1.empty)

結果は以下の通りです。

This is our DataFrame with no row or column:
 
Empty DataFrame
Columns: []
Index: []
 
Is this an empty DataFrame?
 
True

2. 行だけを含む空のDataFrameを作成する

これは、pd.DataFrame()関数を使用して行だけを含む空のpandas DataFrameオブジェクトを作成するもう一つの簡単な方法です。

このメソッドでは、pandas DataFrameクラスのコンストラクタをindexという1つのパラメータで呼び出し、渡された行またはインデックスリストを持つ空のPandas DataFrameオブジェクトを返します。

このメソッドを実装するための Python コードを書いてみましょう。

# Method-2
 
# Import pandas module
import pandas as pd
 
# Create an empty DataFrame with
# Five rows but no columns
# Using pd.DataFrame() function with rows parameter
df2 = pd.DataFrame(index = ['R1', 'R2', 'R3', 'R4', 'R5'])
print('This is our DataFrame with rows only no columns:
'
)
print(df2)
 
# Check if the above created DataFrame
# Is empty or not using the empty property
print('
Is this an empty DataFrame?
'
)
print(df2.empty)

結果は以下の通りです。

This is our DataFrame with rows only no columns:
 
Empty DataFrame
Columns: []
Index: [R1, R2, R3, R4, R5]
 
Is this an empty DataFrame?
 
True

3. カラムだけの空の DataFrame を作成する

pd.DataFrame()` 関数を使ってカラムだけを含む空の Pandas DataFrame オブジェクトを作成するには、Pandas DataFrame クラスのコンストラクタに columns という 1 つのパラメータを渡して呼び出し、その結果、渡されたカラムリストを含む空の Pandas DataFrame オブジェクトが返されます。

このメソッドをPythonのコードで実装してみましょう。

# Method-3
 
# Import pandas module
import pandas as pd
 
# Create an empty DataFrame with
# Five columns but no rows
# Using pd.DataFrame() function with columns parameter
df3 = pd.DataFrame(columns = ['C1', 'C2', 'C3', 'C4', 'C5'])
print('This is our DataFrame with columns only no rows:
'
)
print(df3)
 
# Check if the above created DataFrame
# Is empty or not using the empty property
print('
Is this an empty DataFrame?
'
)
print(df3.empty)

結果は以下の通りです。

This is our DataFrame with columns only no rows:
 
Empty DataFrame
Columns: [C1, C2, C3, C4, C5]
Index: []
 
Is this an empty DataFrame?
 
True

4. 行と列の両方を持つ空のDataFrameを作成する

このメソッドでは、行と列の両方を含む空の Pandas DataFrame オブジェクトを作成します。

列とインデックスという2つのパラメータを指定してpandas DataFrameクラスのコンストラクタを呼び出すと、渡されたインデックスと列のリストを持つ空のpandas DataFrameオブジェクトを返します。

このメソッドをPythonのコードで実装する方法を見てみましょう。

# Method-4
 
# Import pandas module
import pandas as pd
 
# Create an empty DataFrame with
# Five rows and five columns
# Using pd.DataFrame() function
# With columns & index parameters
df4 = pd.DataFrame(columns = ['C1', 'C2', 'C3', 'C4', 'C5'],
                   index = ['R1', 'R2', 'R3', 'R4', 'R5'])
print('This is our DataFrame with both rows and columns:
'
)
print(df4)
 
# Check if the above created DataFrame
# Is empty or not using the empty property
print('
Is this an empty DataFrame?
'
)
print(df4.empty)

結果は以下の通りです。

This is our DataFrame with both rows and columns:
 
     C1   C2   C3   C4   C5
R1  NaN  NaN  NaN  NaN  NaN
R2  NaN  NaN  NaN  NaN  NaN
R3  NaN  NaN  NaN  NaN  NaN
R4  NaN  NaN  NaN  NaN  NaN
R5  NaN  NaN  NaN  NaN  NaN
 
Is this an empty DataFrame?
 
False

注意:このメソッドには一つ問題があり、その出力では empty 属性が False を返しています。

これは、このメソッドで作成したDataFrameが、pandasモジュールによって空のDataFrameとして認識されていないことを意味します。

空のデータフレーム vs NaN値を持つデータフレーム

上記のPythonコードの出力に問題があることがわかりました。

空のDataFrameと全てのNaN値を持つDataFrameは、Pandasモジュールによって異なる扱いを受けます。

これは、このメソッドを使って空のpandas DataFrameを作成しようとすると、DataFrameオブジェクトに何もデータを提供または入力しないのに、デフォルトでNaN値で埋め尽くされるために起こります。

そのため、このような種類のpandas DataFrameに empty 属性を適用すると、Falseが返されます。

そこで、この問題を解決する一つの簡単な方法は、DataFrameにデフォルトで配置されているNaN値をすべて削除することです。

pandas DataFrameクラスの dropna() 関数を使用して、DataFrame内のすべてのNaN値を削除することができます。

そして、DataFrameオブジェクトのemptyプロパティを適用して結果を確認すると、Trueが返されます。

Pythonコードで実装してみましょう。

# Compare an empty DataFrame
# With a DataFrame with all NaN values
 
# Import pandas module
import pandas as pd
 
# Create an empty DataFrame with
# Three rows and four columns
# Using pd.DataFrame() function
# With columns & index parameters
df = pd.DataFrame(columns = ['Col-1', 'Col-2', 'Col-3', 'Col-4'],
                   index = ['Row-1', 'Row-2', 'Row-3'])
print('This is our DataFrame with NaN values:
'
)
print(df)
 
# Check if the above created DataFrame
# Is empty or not using the empty property
print('
Is this an empty DataFrame?
'
)
print(df.empty)
 
# Remove all the NaN values using dropna() function
# Then apply the empty attribute/property on the DataFrame
print('
After removing all the NaN values:
'
)
print('Is this an empty DataFrame?
'
)
print(df.dropna().empty)

結果は以下の通りです。

This is our DataFrame with NaN values:
 
      Col-1 Col-2 Col-3 Col-4
Row-1   NaN   NaN   NaN   NaN
Row-2   NaN   NaN   NaN   NaN
Row-3   NaN   NaN   NaN   NaN
 
Is this an empty DataFrame?
 
False
 
After removing all the NaN values:
 
Is this an empty DataFrame?
 
True

まとめ

この記事では、空のPandas DataFrameオブジェクトを作成する4つの方法と、空のDataFrameとNaN値を持つDataFrameの違いについて学びました。

この記事では、空のデータフレームを作成する4つの方法と、空のデータフレームとNaN値を持つデータフレームの違いについて説明しました。

このようなエキサイティングなPythonチュートリアルをもっと見るために私たちと一緒にいてください。

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