Pandas DataFrame に行を追加する: ステップバイステップガイド
Published on
データ分析や機械学習のプロジェクトでは、しばしば Pandas DataFrame に新しい観測値を追加する必要があります。調査データ、センサー読み取りデータ、ユーザーの行動ログなどを扱っている場合、既存の DataFrame に効率的に新しい行を追加できる必要があります。Python の人気のあるデータ操作ライブラリである Pandas は、DataFrame に行を追加するためのいくつかのメソッドを提供しています。このチュートリアルでは、.loc
、.append
、.concat
の3つのメソッドを探索します。さあ、始めましょう。
Python で簡単にデータ可視化を行いたいですか?
PyGWalker はオープンソースの Python プロジェクトで、Jupyter Notebook ベースの環境内でのデータ分析と可視化のワークフローを迅速化するのに役立ちます。 Pandas Dataframe (または Polars Dataframe)をビジュアル UI に変換し、簡単にグラフを作成するために変数をドラッグアンドドロップすることができます。 以下のコードを使用してください:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
こちらの Kaggle ノートブックで PyGWalker を実行 (opens in a new tab) | こちらの Google Colab で PyGWalker を実行 (opens in a new tab) | PyGWalker に ⭐️ を付ける (opens in a new tab) | |:---:|:---:|:---:| | (opens in a new tab) | (opens in a new tab) | (opens in a new tab) |
.loc メソッドを使用して行を追加する
Pandas の .loc
メソッドを使用すると、ラベルに基づいて DataFrame のサブセットを選択できます。また、新しい行を DataFrame に追加することもできます。方法は以下のとおりです。
import pandas as pd
# サンプルの DataFrame の作成
df = pd.DataFrame({
'Name': ['John', 'Sara', 'Tim'],
'Age': [25, 34, 41],
'City': ['New York', 'London', 'Paris']
})
# .loc を使用して新しい行を追加
df.loc[3] = ['Anna', 29, 'Berlin']
print(df)
上記のコードでは、最初に3行3列のデータフレームdf
を作成します。次に、.loc
メソッドを使用して行インデックスを3に指定し、最後に新しい行の値のリストを指定します。
出力:
Name Age City
0 John 25 New York
1 Sara 34 London
2 Tim 41 Paris
3 Anna 29 Berlin
新しい行の行インデックスが3であることに注意してください。これは、データフレームの最後の行の後に追加されることを意味します。また、行ラベルを指定して特定の場所に行を挿入するには.loc
を使用することもできます。たとえば、データフレームの2番目の行の後に新しい行を挿入する場合は、次のように行います。
# inserting a new row after the second row
df.loc[2.5] = ['Peter', 37, 'Los Angeles']
print(df)
出力:
Name Age City
0 John 25 New York
1 Sara 34 London
2 Tim 41 Paris
2.5 Peter 37 Los Angeles
3 Anna 29 Berlin
ここでは、ラベル2
の後に新しい行を挿入するために2.5
というラベルを使用しています。Pandasは、行ラベルを昇順に保つために、自動的に行ラベルの並べ替えを行います。
.appendメソッドを使用した行の追加
Pandasの.append
メソッドを使用すると、2つのデータフレームを垂直に連結することができます。.append
メソッドに単一の行を持つデータフレームを渡すことで、新しい行をデータフレームに追加することができます。例を見てみましょう。
# creating a new row as a dataframe
new_row = pd.DataFrame({
'Name': ['Julia'],
'Age': [31],
'City': ['Tokyo']
})
# using .append to add the new row
df = df.append(new_row, ignore_index=True)
print(df)
出力:
Name Age City
0 John 25 New York
1 Sara 34 London
2 Tim 41 Paris
3 Anna 29 Berlin
4 Julia 31 Tokyo
## .append メソッドを使用して単一行を追加する
上記のコードでは、最初に単一行のデータを持つ新しい DataFrame `new_row` を作成します。それから `.append` メソッドを使用し、引数に `new_row` を渡します。`ignore_index=True` パラメータは Pandas に新しい DataFrame を 0 から 4 まで再インデックスするよう指示します。
## .concat メソッドを使用して複数の行を追加する
Pandas の `.concat` メソッドを使用すると、指定された軸に沿って2つの DataFrameを連結できます。`.concat` メソッドに DataFrame のリストを渡すことで、複数の行を DataFrame に追加することができます。これが `.concat` を使用して DataFrame `df` に2行を追加する方法です。
```python
# 2つの新しい DataFrame を作成します
new_rows = [pd.DataFrame({
'Name': ['Maria', 'Adam'],
'Age': [27, 45],
'City': ['Sydney', 'Toronto']}),
]
# .concat を使用して新しい行を追加します
df = pd.concat([df] + new_rows, ignore_index=True)
print(df)
出力:
Name Age City
0 John 25 New York
1 Sara 34 London
2 Tim 41 Paris
3 Anna 29 Berlin
4 Maria 27 Sydney
5 Adam 45 Toronto
上記のコードでは、まず2つの新しい DataFrame new_rows
を作成します。その後、df
と共に .concat
メソッドにリストとして渡します。ignore_index=True
パラメータは、インデックスを 0 から 5 まで再順序付けします。
結論
このチュートリアルでは、PythonのPandas DataFrameに新しい行を追加するために3つの異なる方法、.loc
、.append
、および.concat
を探索しました。状況に応じて、それぞれのメソッドには利点と欠点があります。.loc
メソッドは、特定の場所に単一行を追加したい場合に便利です。.append
メソッドは DataFrame の末尾に単一行を簡単に追加する方法です。.concat
メソッドは、一度に複数の行を追加する場合に最適です。これらの方法を知っていると、データ分析や機械学習プロジェクトにおいて、効率的にかつ効果的に DataFrame を操作することができます。Happy coding!