讃岐小僧のEngineering×Techメモ

未経験から挑戦中のプログラミングや、趣味の野球や狩猟について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【Python】PandasでDataFrameを操作する ~part3~

はじめに

本記事も前回と同様にPandasの操作をメモしていこうと思う。
今回は特定の行・列・フィールドにアクセスする操作をメモする。

特定の列を表示する

本記事でも引き続き広島カープの選手のデータを利用します。
もしこの記事からみているという方は下記をコピペして利用してみてください。

import numpy as np
import pandas as pd 

df = pd.DataFrame(data=[['.269','5'],['.273', '5'],['.300','2'],['.304', '18'],['.323', '1'],['.258', '1'],['.201', '3'],['.143', '0'], ['.111', '0']], columns=['AVG', 'HR'])

df.index = ['菊池','西川','メヒア', '鈴木','高橋','小窪', '田中', '石原','ジョンソン']

df['AVG'] = df['AVG'].astype(float)
df['HR'] = df['HR'].astype(int)

では特定列、AVG(打率)列を抜き出します。
たったこれだけですが。

df['AVG']

f:id:keisuke8925gdk:20190705113526p:plain

こっちでもいける。
※ただしカラム名にスペースが入ってたりすると利用できない。
そんなことはめったにしないと思うが、、

df.AVG

locを利用して抽出する

df.loc[:, ['AVG']]

ちょっと説明を入れておく
f:id:keisuke8925gdk:20190705115756p:plain

locの使い方

loc[ [行], [列] ]を表示する

なので菊池の行だけ表示する場合ならばこうなる。

df.loc[['菊池'], :,]

f:id:keisuke8925gdk:20190705120222p:plain:left





当然複数行を同時に抽出することも可能で、西川と鈴木の行を表示する場合は以下の通り。

df.loc[['西川','鈴木'], :,]

f:id:keisuke8925gdk:20190705120555p:plain:left

指定のフィールドを表示

ジョンソンの打率を表示する

df['AVG']['ジョンソン']

もしくは

df.loc[['ジョンソン'], ['AVG']]

その他の行列抽出方法

これまで.locを中心にデータの抽出方法をみてきました。
実際には‘.loc‘以外に'iloc'というものがあります。

'iloc'はインデックス番号およびカラム番号を指定してデータを抽出する方法です。

例えば、行【0】の要素、ここでは菊池の行。

df.iloc[0]

f:id:keisuke8925gdk:20190705131112p:plain

その他にもレンジを指定することで対象のレンジのデータを抽出することができる。

df.iloc[0:4]

f:id:keisuke8925gdk:20190705131456p:plain

今回の記事はここまで。

次回はもう少し待ってくださいませ。