Python Pandas:空のDataFrameを作成し、Pythonで行と列を追加する方法

空の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

コメントを残す

メールアドレスが公開されることはありません。

Next Post

IGDAウェビナー、2016年1月27日:Ubisoftでの生産性の向上:UXによるツールとパイプラインの改善

月 2月 24 , 2020
https://www.youtube.com/watch?v=lzCror3g2dM