Python(Pandas)loc,iloc,applyよく使うメソッド
Pythonの勉強記録として残したいと思います。
今日勉強をしていて難しかったのでここで共有します。
Pandasについて
Pandasはデータ解析を容易にする為の機能が提供されているPythonのデータ解析ライブラリです。
データフレーム(DataFrame)などの独自のデータ構造が提供されており、様々な処理が可能です。
Pandasのlocとilocは値を抽出する為のメソッドになります。
locは行名もしくは列名を指定することで特定の値を抽出できる。
ilocはindexを指定することで特定の値を抽出できます。
つまり、行、列を番号(数字が0のインデックス)で指定します。
applyは、特定のデータに処理をすることが出来るメソッド。
関数やラムダで定義したものをデータフレームに適用できる。
loc,ilocのコード
def Sample5():
"""pandas基礎(locとiloc)"""
df = pd.DataFrame([[10, 20], [25, 50]], index=["1行", "2行"], columns=["1列", "2列"]) # データフレームを作成
print(df) # データフレームを表示
print('-------------')
print(df.loc["1行", :]) # 列の値を表示
print('-------------')
print(df.iloc[0:1]) # indexの指定(1行目)
print('-------------')
print(df.iloc[1:2]) # indexの指定(2行目)
print('-------------')
print(df.iloc[:, -1]) # 負のインデックスを使い、末尾の要素から位置指定し2列目の全ての行を取得。
Sample5()
実行結果
applyのコード
def Sample6():
df = pd.DataFrame({"age": [19, 25, 33], "height": [142, 185, 161], "score": [97, 85, 77]}, index=["a", "b", "c"])
f = lambda x: x + 5 # 5を足す処理
g = lambda x: max(x)-min(x) # 各列の最大-最小を求める。
print(df) # 5を足す前
print('--------------')
print(df.apply(f)) # 全ての数値に5を足す。
print('--------------')
print(df.apply(g))
Sample6()
実行結果
試験問題
def Sample7():
df = pd.DataFrame([[40, "a", True],[20, "b", False],[30, "c", False]])
df.index = ["01", "02", "03"]
df.columns = ["A", "B", "C"]
def judge(arg):
if arg <= 50:
return "low"
elif arg <= 70:
return "middle"
else:
return "high"
df.loc[:, "C"] = df.iloc[:, 0] * 2
df.loc[:, "B"] = df.iloc[:, 2].apply(judge)
_ = df["C"] > 50 # Cの50以下を消している。
df = df[_] # 削除したのを適用している。
print(df)
print('------------')
print(df.iloc[0 , 2], df.loc["03" ,"B"])
Sample7()
実行結果
以上になります。
この記事が気に入ったらサポートをしてみませんか?