当ページではpandas.DataFrameのデータの検索方法を記載している。
pandas.DataFrameのデータを作成する方法は、別途以下で記載している。
pandas.DataFrameの表を作成する方法 | エクヌツITブログ
1.前提
本ページでは、以下のデータをベースのデータとして扱い、
そのデータが各作業でどのようになるかを説明する。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 8, 9]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print(df)
実行結果:
a b c
d 1 2 3
e 6 5 4
f 7 8 9
2.特定の行の検索
以下の3つの方法で検索することが出来る。
(a)行数を指定して検索する方法
(b)行名を指定して検索する方法
(c)条件を指定して検索する方法
(a)行数を指定して検索する
何行目かを設定してデータを取得するときは以下のように[iloc]を使用して設定する。
ilocの配列に複数の要素を設定することで、同時に複数行のデータを取得することができる。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 8, 9]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print("初期データ")
print(df)
print("1行目のデータを取得")
print(df.iloc[[1]])
print("1行目・2行目のデータを取得")
print(df.iloc[[1,2]])
実行結果:
初期データ
a b c
d 1 2 3
e 6 5 4
f 7 8 9
1行目のデータを取得
a b c
e 6 5 4
1行目・2行目のデータを取得
a b c
e 6 5 4
f 7 8 9
(b)行名を指定して検索する
行名を設定してデータを取得するときは以下のように[loc]を使用して設定する。
locの配列に複数の要素を設定することで、同時に複数行のデータを取得することができる。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 8, 9]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print("初期データ")
print(df)
print("e行のデータを取得")
print(df.loc[["e"]])
print("e行・f行のデータを取得")
print(df.loc[["e","f"]])
実行結果:
初期データ
a b c
d 1 2 3
e 6 5 4
f 7 8 9
e行のデータを取得
a b c
e 6 5 4
e行・f行のデータを取得
a b c
e 6 5 4
f 7 8 9
(c)条件を指定して検索する方法
1カラムの要素による検索
カラムの要素による検索を使用するときは以下のように[loc]を使用して設定する。
locの配列に複数の要素を設定することで、同時に複数の列の検索をして、データを取得することができる。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 8, 9]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print("初期データ")
print(df)
print("カラムaの値が5より大きいデータの取得")
print(df.loc[df['a'] > 5])
print("カラムaの値が5より大きいデータ、且つ、カラムcの値が5より小さいデータの取得")
print(df.loc[(df['a'] > 5) & (df['c'] < 5)])
実行結果:
初期データ
a b c
d 1 2 3
e 6 5 4
f 7 8 9
カラムaの値が5より大きいデータの取得
a b c
e 6 5 4
f 7 8 9
カラムaの値が5より大きいデータ、且つ、カラムcの値が5より小さいデータの取得
a b c
e 6 5 4
9行目では、aが5より大きいデータを取得して表示する。
11行目では、aが5より大きいデータ、且つ、cが5より小さいデータを取得して表示する。
複数条件によって検索するときは、locの[]内に&を入れて二つの条件を設定する。
2つ以上条件がある場合はそれぞれを括弧で囲んで設定する。
2つ以上のカラムの比較による検索
2つのカラム同士を比較して検索するときは以下のように[query]を使用して設定する。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 8, 9]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print("初期データ")
print(df)
print("カラムaの値がカラムbより大きいデータの取得")
print(df.query('a > b'))
9行目では、カラムaの値がカラムbより大きいデータを取得して表示している。
以下の演算子で比較を行える
| 比較演算子 | 意味 | 設定例 |
| == | [左]と[右]が同等 | df.query(‘a == b’) |
| != | [左]と[右]が異なる | df.query(‘a != b’) |
| < | [左]が[右]より小さい | df.query(‘a < b’) |
| <= | [左]が[右]以下 | df.query(‘a <= b’) |
| >= | [左]が[右]以上 | df.query(‘a >= b’) |
| > | [左]が[右]より大きい | df.query(‘a > b’) |
設定例は以下の通り。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[1, 2, 3], [6, 5, 4], [7, 7, 7]]),
columns=['a', 'b', 'c'],index=['d', 'e', 'f'])
print("初期データ")
print(df)
print("カラムaの値がカラムbより大きいデータの取得")
print("a>b")
print(df.query('a > b'))
print("a>=b")
print(df.query('a >= b'))
print("a<=b")
print(df.query('a <= b'))
print("a<b")
print(df.query('a < b'))
print("a==b")
print(df.query('a == b'))
print("a!=b")
print(df.query('a != b'))
実行結果:
初期データ
a b c
d 1 2 3
e 6 5 4
f 7 7 7
カラムaの値がカラムbより大きいデータの取得
a>b
a b c
e 6 5 4
a>=b
a b c
e 6 5 4
f 7 7 7
a<=b
a b c
d 1 2 3
f 7 7 7
a<b
a b c
d 1 2 3
a==b
a b c
f 7 7 7
a!=b
a b c
d 1 2 3
e 6 5 4
3.参考
公式ドキュメント:
列名検索
loc
https://pandas.pydata.org/pandas-docs/version/2.3/reference/api/pandas.DataFrame.loc.html
iloc
https://pandas.pydata.org/pandas-docs/version/2.3/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc
条件検索
loc
https://pandas.pydata.org/pandas-docs/version/2.3/reference/api/pandas.DataFrame.loc.html
query
https://pandas.pydata.org/pandas-docs/version/2.3/reference/api/pandas.DataFrame.query.html#pandas.DataFrame.query
表の作成
pandas.DataFrameの表を作成する方法 | エクヌツITブログ
pandas値の取得・更新・削除
pandas.DataFrameの値の取得・更新・削除 | エクヌツITブログ
pandasのカラム追加・削除
pandasのカラム追加・削除(assign・drop) | エクヌツITブログ
pandasのインポート
pandasのインポートread_csv,read_excel | エクヌツITブログ
pandasのエクスポート
pandasデータのエクスポートto_csv,to_excel | エクヌツITブログ
pandasの要素数取得
pandas.DataFrame要素数を取得size,count | エクヌツITブログ

コメント