見出し画像

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([[1020], [2550]], 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()

実行結果

locとiloc

applyのコード

def Sample6():
    df = pd.DataFrame({"age": [192533], "height": [142185161], "score": [978577]}, 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()

実行結果

applyメソッド

試験問題

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() 

実行結果

以上になります。

この記事が参加している募集

自己紹介

スキしてみて

この記事が気に入ったらサポートをしてみませんか?