2018/02/01
2020/04/14
pandas データフレームの行名・列名の参照と変更と追加
当記事では、pandasのデータフレーム(DataFrame)の行名・列名の参照や変更。また、列名を利用した新しい列の追加の方法を紹介しています。こちらの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
行名、列名を参照する方法
.indexで行名、.clumnsで列名を参照できます。
df.index #行名 RangeIndex(start=0, stop=5, step=1)
df.columns #列名 Index(['number', 'age', 'blood_pressure', 'lung_capacity', 'sex', 'weight', 'disease'], dtype='object')
行名、列名はリストなので、スライスで取り出したい部分だけ取り出すことも可能です。
df.columns[1:4:2] Index(['age', 'lung_capacity'], dtype='object')
行名、列名の変更
代入で変更する
行名、列名を変更するには、変更先の名前をリストにして代入します。
df.columns = ['番号','年齢','血圧','肺活量','性別','病気','体重'] print(df) 番号 年齢 血圧 肺活量 性別 病気 体重 0 1 22 110 4300 M 79 1 1 2 23 128 4500 M 10 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
df.index = ["Jack","Tom","Lisa","Michel","Jacson"] print(df) 番号 年齢 血圧 肺活量 性別 病気 体重 Jack 1 22 110 4300 M 79 1 Tom 2 23 128 4500 M 10 1 Lisa 3 24 104 3900 F 53 0 Michel 4 25 112 3000 F 45 0 Jacson 5 27 108 4800 M 80 0
ちなみに、この方法の場合、丸ごと変更する必要があります。部分的に変更しようとすると、
df.index[1] = 2 *** TypeError: Index does not support mutable operations
と、エラーに弾かれます。
.rename()を用いて変更する
.rename()を使えばピンポイントで変更したい箇所を指定して変更できます。
df.rename(columns={"age":"年齢"}) number 年齢 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
行と列を同時。カンマで区切ることで複数変更も可能です。
df.rename(columns={"age":"年齢","number":"番号"},index={0:"Jack"}) 番号 年齢 blood_pressure lung_capacity sex weight disease Jack 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
この方法の場合、以下のように変更後のものを代入しないと元の状態のままです。
df = df.rename(columns={"age":"年齢","number":"番号"},index={0:"Jack"})
新しい列を作る
データフレームに無い列名を指定して、要素を代入すると新しい列が最後尾に追加されます。
df["身長"] = [173,145,167,155,132] print(df) 番号 年齢 血圧 肺活量 性別 病気 体重 身長 Jack 1 22 110 4300 M 79 1 173 Tom 2 23 128 4500 M 10 1 145 Lisa 3 24 104 3900 F 53 0 167 Michel 4 25 112 3000 F 45 0 155 Jacson 5 27 108 4800 M 80 0 132
リストの長さは行数と一致することが求められます。してないと、、、
df["身"] = [173,145,167,155] *** ValueError: Length of values does not match length of index
と表示されます。
(totalcount 25,125 回, dailycount 488回 , overallcount 4,721,968 回)
最新投稿記事
-
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日
評判上昇中のG検定を取得するメリットを解説! 2020年7月10日
MLOpsとは|定義、メリット、課題、ツール、ワークフローを分かりやすく解説 2020年9月18日
