この記事ではpandasライブラリにおけるDataFrame(データフレーム)の使い方を具体的に解説します。
サンプルコードをコピペしながらサクサク処理を試せますので、 ぜひ活用してみてください。
ライブラリのインストール
初めにpythonの実行環境にpandasライブラリをインストールしましょう。
ターミナル(mac)もしくはコマンドプロンプト(Windows)で以下を実行します。
pip install pandas
最終行に「Successfully installed 〜〜〜」と表示されていれば、インストールは成功です。
pandasでデータフレームを作成
pandasのDateFrame
は2次元配列、もしくは複数の1次元配列(リストなど)からデータテーブルを構成するオブジェクトです。
基本的なDataFrame
の作成方法を見ていきましょう。
DataFrame
の引数data
に配列を指定することでデータフレームを作成できます。
複数の1次元配列から作成
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 複数の1次元配列からDataFrameを作成
df = pd.DataFrame(data=[data1, data2, data3])
![](https://junpage.com/wp-content/uploads/2021/12/8835fc092578048fb6c3c16e5157b306-2.png)
複数の1次元配列を並べて作成した場合のDataFrame
の構造です。
1次元配列が順に各行の値となっていることがわかります。
辞書型配列から作成
DataFrame
を辞書型の配列から作ることもできます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 辞書型からDataFrameを作成
df = pd.DataFrame(data={"A": data1, "B": data2, "C": data3})
![](https://junpage.com/wp-content/uploads/2021/12/55205582af1d1d53ba22093b9e6c5d8d.png)
辞書型の配列からDataFrame
を作成した場合、列名が辞書のキー、列の値が辞書の要素となる特徴があります。
numpyのndarray配列から作成
pythonのnumpyモジュールで構成される配列からもDataFrame
を作成することができます。
import pandas as pd
import numpy as np
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# numpyのndarray配列からDataFrameを作成
df = pd.DataFrame(np.array([data1, data2, data3]))
![](https://junpage.com/wp-content/uploads/2021/12/8835fc092578048fb6c3c16e5157b306-3.png)
numpyのndarray
配列からDataFrame
を作成する場合、複数の1次元配列から作成するのとデータ構造は同じになります。
列名・行名を指定
作成したDataFrame
の列名や行名を指定してみましょう。
列名(columns)を指定
DataFrame
に列名を指定してみます。
引数columns
にDataFrame
の列数と同じ要素数の配列を指定することで、列名を指定することができます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 列名を指定
df = pd.DataFrame(data=[data1, data2, data3], columns=['col_1', 'col_2', 'col_3', 'col_4'])
![](https://junpage.com/wp-content/uploads/2021/12/a3a46eccb73a74f6d855efc3500e26f2.png)
行名(index)を指定
DataFrame
の行名を指定してみます。
引数index
にDataFrame
の行数と同じ要素数の配列を指定することで、行名を指定することができます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 行名を指定
df = pd.DataFrame(data=[data1, data2, data3], index=['row_1', 'row_2', 'row_3'])
![](https://junpage.com/wp-content/uploads/2021/12/3c24e8ae107ff2deaa36394c38dccec1-1.png)
DataFrameの編集
列を追加
DataFrame
に列を追加してみましょう。
df["列名"] = 配列
によって、DataFrame
に新たな列を追加することができます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame(data={"A": data1, "B": data2, "C": data3})
# 列を追加
df["D"] = [12, 13, 14, 15]
![](https://junpage.com/wp-content/uploads/2021/12/c1a4fc83625ae5730811221d8f24bcf0.png)
![](https://junpage.com/wp-content/uploads/2021/12/9cf45c3055132a70fae0fca866066fba.png)
行を追加
DataFrame
に行を追加してみましょう。
df.loc["行名"] = 配列
で新たに行を追加することができます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# 行を追加
df.loc["row_5"] = [100, 200, 300]
![](https://junpage.com/wp-content/uploads/2021/12/921a6fe24ae013231e9670f384d88c19.png)
![](https://junpage.com/wp-content/uploads/2021/12/c3b2ab5e554c6aa25441a9e1b84b5357.png)
列の値を更新
DataFrame
の列の値を更新してみましょう。
既存の列名に対して、df["列名"] = 新しい配列
とすることで列の値を更新することができます。
値を更新すると古い値が書き変わってしまうため注意が必要です。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# A列の値を更新
df["A"] = [10, 100, 1000, 10000]
![](https://junpage.com/wp-content/uploads/2021/12/d93e18c663cc5f999dfc6fd17cdb08d7.png)
![](https://junpage.com/wp-content/uploads/2021/12/c3b2ab5e554c6aa25441a9e1b84b5357-1.png)
行の値を更新
DataFrame
の行の値を更新してみましょう。
既存の行名に対して、df.loc["行名"] = 新しい配列
とすることで列の値を更新することができます。
値を更新すると古い値が書き変わってしまうため注意が必要です。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# 行row_3の値を更新
df.loc["row_3"] = [10, 100, 1000]
![](https://junpage.com/wp-content/uploads/2021/12/d6bdebe23843818ffd687c04936a718f.png)
![](https://junpage.com/wp-content/uploads/2021/12/096adade7631ee2fa31674c104f3d37f.png)
列の削除(drop)
既存のDataFrame
から列を削除してみましょう。
列を削除するにはdf.drop("列名", axis=1, inplace=True)
を使用します。
inplace=True
と指定することで削除前のDataFrameを上書きし、置き換えます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# C列を削除(axis=1で列を削除)
df.drop("C", axis=1, inplace=True)
![](https://junpage.com/wp-content/uploads/2021/12/1cce8fe1d6610ddc498e4f471613d7cb.png)
![](https://junpage.com/wp-content/uploads/2021/12/53491d59860cd023d8d4cab3d846f90b.png)
行の削除(drop)
既存のDataFrame
から行を削除してみましょう。
行を削除するにはdf.drop("行名", axis=0, inplace=True)
を使用します。
inplace=True
と指定することで削除前のDataFrame
を上書きし、置き換えます。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# 行row_4を削除(axis=0で行を削除)
df.drop("row_4", axis=0, inplace=True)
![](https://junpage.com/wp-content/uploads/2021/12/40a43fffd041ff6dfad4f5a0b49aeb4e.png)
![](https://junpage.com/wp-content/uploads/2021/12/69cd620314fad9c73e8e79defac0997b.png)
DataFrameから特定の値を取得
特定の列の値を取得
既存のDataFrame
から特定の列の値を取得してみましょう。
特定の列の値を取得するにはdf["列名"].values
を使用します。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
![](https://junpage.com/wp-content/uploads/2021/12/69cd620314fad9c73e8e79defac0997b.png)
上のようなDataFrame
のB列の値を取得してみましょう。
# B列の値を取得
print(df["B"].values)
# 出力結果
[4 5 6 7]
複数の列をまとめて取得
複数の列をまとめて取得することもできます。
複数列を取得するにはdf[列名の配列]
を使用します。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# B, C列を取得
df_BC = df[["B", "C"]]
![](https://junpage.com/wp-content/uploads/2021/12/d54de179329ecc00873289033104fd39.png)
B列とC列のDataFrame
を取得されていることがわかります。
特定の行の値を取得
既存のDataFrame
から特定の列の値を取得してみましょう。
特定の列の値を取得するにはdf.loc["行名"].values
を使用します。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
![](https://junpage.com/wp-content/uploads/2021/12/69cd620314fad9c73e8e79defac0997b.png)
上のDataFrame
から行row_2の値を取得してみましょう。
# 列row_2の値を取得
data_r2 = df.loc["row_2"]
print(data_r2.values)
# 出力結果
[1 5 9]
複数の行をまとめて取得
複数の行をまとめて取得することもできます。
複数行を取得するにはdf.loc[行名の配列]
を使用します。
import pandas as pd
data1 = [0, 1, 2, 3]
data2 = [4, 5, 6, 7]
data3 = [8, 9, 10, 11]
# 基準のDataFrameを作成
df = pd.DataFrame({"A": data1, "B": data2, "C": data3}, index=['row_1', 'row_2', 'row_3', 'row_4'])
# 行row_2, row_3を取得
df_r23 = df.loc[["row_2", "row_3"]]
![](https://junpage.com/wp-content/uploads/2021/12/f7756beec8a001b785877d5df77c5424.png)
行row_2と行row_3のDataFrame
が取得されていることがわかります。
まとめ
今回はpandasライブラリでDataFrame
を扱う方法を具体的に紹介しました。
データ整理やデータ分析の際にpandasのDataFrame
オブジェクトはとても便利ですので、ぜひ活用してみてください。
![](https://junpage.com/wp-content/uploads/2021/12/picture22a-300x158.png)
![](https://junpage.com/wp-content/uploads/2021/12/abec87242b53042071ff38eaa2f1a14d-1-300x212.png)
![](https://junpage.com/wp-content/uploads/2021/12/sww-300x158.png)