空のDataFrameを作成し、後で行または列を追加してデータを入力するさまざまな方法について説明します。
最初に空のDataFrameを作成してから、後の段階でデータを追加したいとします。その方法を見てみましょう、
このようにpythonのpandasモジュールをインポートし、
import pandas as pd
列名のみを持ち、行を持たない空のDataFrameを作成します
DataFrameの列名はわかっているが、現時点ではデータがないと仮定します。したがって、このような列名のみで空のDataFrameを作成します。
# Creating an empty Dataframe with column names only
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'])
print("Empty Dataframe ", dfObj, sep='\n')
作成された空のDataFrameの内容は、
Columns: [User_ID, UserName, Action]
Index: []
仕組み
Dataframeクラスは、次のように引数に列名、インデックス名、データを渡すことでDataframeオブジェクトを作成するコンストラクターを提供します。
def __init__(self, data=None, index=None, columns=None, dtype=None,
空のデータフレームオブジェクトを作成するには、列引数のみを渡し、インデックスとデータにはデフォルトの引数が使用されます。
空のDataFrameに行を追加する
空のDataFrameを作成したので、行を追加する方法を見てみましょう。
# Append rows in Empty Dataframe by adding dictionaries
dfObj = dfObj.append({'User_ID': 23, 'UserName': 'Riti', 'Action': 'Login'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 24, 'UserName': 'Aadi', 'Action': 'Logout'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 25, 'UserName': 'Jack', 'Action': 'Login'}, ignore_index=True)
print("Dataframe Contens ", dfObj, sep='\n')
出力:
User_ID UserName Action
0 23 Riti Login
1 24 Aadi Logout
2 25 Jack Login
DataFrameに3つの行が追加されました。
列名またはインデックスなしで完全な空のDataFrameを作成します
このような引数なしでDataframeクラスコンストラクターを呼び出すだけで、完全
な空のデータフレームを作成できます。
# Create an completely empty Dataframe without any column names, indices or data
dfObj = pd.DataFrame()
引数を渡していないため、すべての引数のデフォルト値はNoneになり、空のデータフレームdfObjが作成されます。内容は以下の通りです、
Columns: []
Index: []
この空のデータフレームにデータを含む列を追加する方法を見てみましょう。
空のDataFrameに列を追加します
# Append columns to the Empty DataFrame
dfObj['UserName'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
print("Dataframe Contents ", dfObj, sep='\n')
出力:
Dataframe Contens
UserName Name
0 Riti Riti
1 Aadi Aadi
2 Jack Jack
列名と行インデックスはあるがデータはない空のデータフレームを作成する
場合によっては、開始時に列名と行インデックスを知っているが、まだデータを持っていない可能性があります。したがって、空のDataFrameを作成し、このような後の段階でデータを追加します。
# Create an empty Dataframe with columns or indices
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'], index=['a', 'b', 'c'])
print("Empty Dataframe", dfObj, sep='\n')
ここでは、列とインデックス引数をDataframeコンストラクターに渡しましたが、データ引数はありません。そのため、すべてのデータがNaNである空のデータフレームが作成されます。
User_ID UserName Action
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
既存のインデックスで空のデータフレームに行を追加します
dfObj.loc['a'] = [23, 'Riti', 'Login']
dfObj.loc['b'] = [24, 'Aadi', 'Logout']
dfObj.loc['c'] = [25, 'Jack', 'Login']
print("Dataframe Contents ", dfObj, sep='\n')
出力:
Dataframe Contents
User_ID UserName Action
a 23 Riti Login
b 24 Aadi Logout
c 25 Jack Login
完全な例は次のとおりです。
import pandas as pd
def main():
print('*** Create an empty DataFrame with only column names ***')
# Creating an empty Dataframe with column names only
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'])
print("Empty Dataframe ", dfObj, sep='\n')
print('*** Appends rows to an empty DataFrame using dictionary with default index***')
# Append rows in Empty Dataframe by adding dictionaries
dfObj = dfObj.append({'User_ID': 23, 'UserName': 'Riti', 'Action': 'Login'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 24, 'UserName': 'Aadi', 'Action': 'Logout'}, ignore_index=True)
dfObj = dfObj.append({'User_ID': 25, 'UserName': 'Jack', 'Action': 'Login'}, ignore_index=True)
print("Dataframe Contens ", dfObj, sep='\n')
print('*** Create an completely empty DataFrame ***')
# Create an completely empty Dataframe without any column names, indices or data
dfObj = pd.DataFrame()
print("Empty Dataframe", dfObj, sep='\n')
print('*** Appends columns to an empty DataFrame ***')
# Append columns to the Empty DataFrame
dfObj['UserName'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
dfObj['Name'] = ['Riti', 'Aadi', 'Jack']
print("Dataframe Contents ", dfObj, sep='\n')
print('*** Create an empty DataFrame with column and index names but no Data ***')
# Create an empty Dataframe with columns or indices
dfObj = pd.DataFrame(columns=['User_ID', 'UserName', 'Action'], index=['a', 'b', 'c'])
print("Empty Dataframe", dfObj, sep='\n')
print('*** Appends rows to an empty DataFrame on an existing index***')
dfObj.loc['a'] = [23, 'Riti', 'Login']
dfObj.loc['b'] = [24, 'Aadi', 'Logout']
dfObj.loc['c'] = [25, 'Jack', 'Login']
print("Dataframe Contents ", dfObj, sep='\n')
if __name__ == '__main__':
main()
出力:
*** Create an empty DataFrame with only column names ***
Empty Dataframe
Empty DataFrame
Columns: [User_ID, UserName, Action]
Index: []
*** Appends rows to an empty DataFrame using dictionary with default index***
Dataframe Contens
User_ID UserName Action
0 23 Riti Login
1 24 Aadi Logout
2 25 Jack Login
*** Create an completely empty DataFrame ***
Empty Dataframe
Empty DataFrame
Columns: []
Index: []
*** Appends columns to an empty DataFrame ***
Dataframe Contents
UserName Name
0 Riti Riti
1 Aadi Aadi
2 Jack Jack
*** Create an empty DataFrame with column and index names but no Data ***
Empty Dataframe
User_ID UserName Action
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
*** Appends rows to an empty DataFrame on an existing index***
Dataframe Contents
User_ID UserName Action
a 23 Riti Login
b 24 Aadi Logout
c 25 Jack Login