2018/02/01
2020/04/14
pandasのデータフレームの要素を参照する【Python3】
当記事では、pandasのデータフレーム(DataFrame)の要素を参照する方法を紹介いたします(Python3)。こちらのcsvファイル→サンプルcsvファイルを説明用に使うので、同じことがしたい方はダウンロードして使ってください!
まずはデータを読み込みます。
import pandas as pd #pandasをpdとしてインポート #データをdfに読み込み。 df = pd.read_csv("sample.csv") #dfの中身を確認 print(df)
今回使うデータは以下のような形になっています。
number age blood_pressure lung_capacity sex weight disease 0 1 22 110 4300 M 79 1 1 2 23 128 4500 M 65 1 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
列名、行名による要素の参照
pandasでは、変数名の後に[]をつけて列名、行名の順番に指定すれば任意の要素を取り出すことが出来ます。df[“列名”][“行名”]というような感じで記述してください。
3列目(lung_capacityの列)を取り出したい場合。
df["lung_capacity"] 0 4300 1 4500 2 3900 3 3000 4 4800
複数列取り出したい場合は、列名をリストにします。
df[["lung_capacity","weight"]] lung_capacity weight 0 4300 79 1 4500 65 2 3900 53 3 3000 45 4 4800 80
行も指定したい場合。
df["lung_capacity"][3] 3000
複数行の指定。
df["lung_capacity"][1:4] 1 4500 2 3900 3 3000
補足になりますが、『1:4』は、1以上4未満という意味です。
ちなみに、指定した列名、行名ないと次のようなエラーメッセージがでます。
df[3] KeyError: 3
『df[“列名”]』の代わりに『df.列名』でも同様に列を参照することができます。
df.weight 0 79 1 65 2 53 3 45 4 80
スライスによる行の参照
スライスとは、pythonのリストの要素を参照する際に使うテクニックです。
変数名[◯:△:□]
で、リストの◯以上△未満の要素について□個おきに取得すると言う意味です。(◯:開始位置、△:終了位置、□:間隔)
例えば、
list1[2:10:2]
なら、2以上10未満2個おきなので、(2が開始、10が終了、2個間隔)
2番目、4番目、6番目、8番目
の要素が参照されることになります。(python界では0番目から要素を数え始めることには気をつけましょう。)
pandasではこのスライスによってデータフレームを横に切ることができます。3行目以上5行目未満を参照する場合、
df[3:5] number age blood_pressure lung_capacity sex weight disease 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
df[“列名”][“行名”]の時と違い、一つ目の[]が行の番号を指定ので混同しないように注意が必要です。
2行目以降全部を参照する場合。
df[2:] number age blood_pressure lung_capacity sex weight disease 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
1行読み込んだら次の行はスキップする場合。
df[::2] number age blood_pressure lung_capacity sex weight disease 0 1 22 110 4300 M 79 1 2 3 24 104 3900 F 53 0 4 5 27 108 4800 M 80 0
このようにpandasでもスライスが使えます。
.ilocを用いた行・列番号による指定
変数名.iloc[行番号,列番号]とすることで、番号を指定して要素そこにある要素を参照します。
0行目2列目の場合。
df.iloc[0,2] 110
もちろんここでもスライスが利用可。行は1行ごとにスキップ、列は1列目以上3列目未満の場合。
df.iloc[::2,1:3] age blood_pressure 0 22 110 2 24 104 4 27 108
指定した条件にマッチする要素を参照
pandasはデータフレームごと比較演算子を適用して、各要素の真偽判定が可能です。
df == 3 number age blood_pressure lung_capacity sex weight disease 0 False False False False False False False 1 False False False False False False False 2 True False False False False False False 3 False False False False False False False 4 False False False False False False False
これを応用して、例えば真の部分だけを残して、同じ形のデータフレームを作ることができます。
df[df == 3] number age blood_pressure lung_capacity sex weight disease 0 NaN NaN NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN NaN NaN 2 3.0 NaN NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN NaN NaN
『.iloc』や『.列名』も合わせて利用すると、条件に合うデータだけを取り出せます。
23歳より年上の人のデータだけを取り出す場合。
df[df.iloc[:,1] > 23] number age blood_pressure lung_capacity sex weight disease 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
df[df.age>23] number age blood_pressure lung_capacity sex weight disease 2 3 24 104 3900 F 53 0 3 4 25 112 3000 F 45 0 4 5 27 108 4800 M 80 0
最新投稿記事
-
AIプロジェクトの企画と失敗しない進め方を解説 2021年1月19日
-
AVILEN人材育成コース受講体験談:山田裕之さん「E資格の”その先”を目指して」 2021年1月8日
-
AI導入とは?RPAとの関係、プロセス、事例、メリット、費用を詳細に解説 2020年12月7日
-
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
-
AI人材を育成できる研修プログラムを一挙紹介! 2020年10月20日
-
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
-
JDLAとは?G検定、E資格の認定プログラム、合格者の会など紹介! 2020年10月14日
-
G検定(2020#3)受験申し込み開始、11月7日(土)実施-JDLA 2020年10月1日
-
【独占】コロナ禍で人材登録急増、アノテーション単月売上高は4倍超-パソナJOB HUB 2020年10月1日
-
E資格を転職に活用!評判とデータを徹底調査! 2020年9月29日
週間ランキング
【2021年版】コスパ重視のG検定対策!おすすめの本・講座・教材を一挙紹介! 2020年6月6日
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
G検定に短期間・独学で合格した勉強法を解説! 2020年8月3日
G検定は難しい?難易度・合格ライン・問題を徹底解説! 2020年6月19日
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
G検定に落ちた人、合格した人。勉強法の違いはどこにある? 2020年6月25日
最弱オセロを初めて攻略した天才オセロ高校生。負け方を解説! 2020年7月31日
【2021年版】E資格とは?大注目のディープラーニングの資格を解説! 2020年9月29日
E資格の難易度を、合格率と問題から徹底分析! 2020年8月11日
評判上昇中のG検定を取得するメリットを解説! 2020年7月10日
