スライドショー

【Pandas入門】DataFrame等の列の名前を指定できるcolumns引数!

こんにちは!インストラクターのフクロウです!

この記事では、DataFrameの列の名前にまつわる操作についてまとめました。

  • DataFrameのculumns引数で列名を作成時に指定
  • DataFrameのculumns引数で列名を作成後に変更
  • DataFrameのrenameメソッドで列名・行名を作成後に変更

これらの操作、使い方わかりますか?

もしもわからないものがあったら、この記事の続きを是非ご覧ください!

データフレームと行の名前

DataFrameを作る際には様々なパラメータが使えます。

例えばデータフレームの要素を代入するパラメータだったり、列の名前を設定するcolumnsだったりです。

ここでは、

  • 列の名前にfeature変数
  • 行の名前にname変数
  • DataFrameの要素にdata変数

を与える場合を考えます。

In [1]:

import pandas as pd 
import numpy as np
In [2]:
name = ["taro","jiro","saburo","shiro"]

feature = ["height","weight","blood type","age"]

data = np.array([
    [190,180,170,160],
    [100,90,80,70],
    ["A","B","AB","O"],
    [30,28,26,24]
]).T

df = pd.DataFrame(data, 
                  index=name) # 行の名前を設定
df
Out[2]:
0 1 2 3
taro 190 100 A 30
jiro 180 90 B 28
saburo 170 80 AB 26
shiro 160 70 O 24

この表において、[0,1,2,3]と書かれている列が「 列の名前」と呼んでいるものです。

何も設定しない場合は、からナンバリングされます。

この値を変更する方法を学んでいきましょう。

columnsパラメータで列名を指定

DataFrame作成後に列名を指定

DataFrameにはcolumnsというパラメータ(インスタンス属性)があります。

このパラメータを使うことで、作成した後のDataFrameにも列名を付与できます。

In [3]:
df2 = df.copy()

df2.columns = feature

df2
Out[3]:
height weight blood type age
taro 190 100 A 30
jiro 180 90 B 28
saburo 170 80 AB 26
shiro 160 70 O 24

ちなみに列数と列名リストのサイズが違うと、エラーになってしまうので注意です。

In [4]:
df2.columns = feature[:-1]
[エラーメッセージ]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-0196f13dbfe5> in <module>
----> 1 df2.columns = feature[:-1]

~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in __setattr__(self, name, value)
   4387         try:
   4388             object.__getattribute__(self, name)
-> 4389             return object.__setattr__(self, name, value)
   4390         except AttributeError:
   4391             pass

pandas/_libs/properties.pyx in pandas._libs.properties.AxisProperty.__set__()

~/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py in _set_axis(self, axis, labels)
    644 
    645     def _set_axis(self, axis, labels):
--> 646         self._data.set_axis(axis, labels)
    647         self._clear_item_cache()
    648 

~/anaconda3/lib/python3.7/site-packages/pandas/core/internals.py in set_axis(self, axis, new_labels)
   3321             raise ValueError(
   3322                 'Length mismatch: Expected axis has {old} elements, new '
-> 3323                 'values have {new} elements'.format(old=old_len, new=new_len))
   3324 
   3325         self.axes[axis] = new_labels

ValueError: Length mismatch: Expected axis has 4 elements, new values have 3 elements

DataFrame作成時に列名を指定

DataFrameの設定時に、columnsを使うことでDataFrameの列名を指定できます。

In [5]:
df3 = pd.DataFrame(data, 
                   columns=feature, # 列の名前を指定
                   index=name)      # 行の名前を設定
df3
Out[5]:
height weight blood type age
taro 190 100 A 30
jiro 180 90 B 28
saburo 170 80 AB 26
shiro 160 70 O 24

renameメソッドで列名・行名を後から変更する

columnsパラメータは、列数と代入するリストのサイズが同じでないといけませんでした。

それだと列数が膨大であるとき大変ですね。

そのようなときは、変更したい名前だけを辞書型で指定して変更することができるrenameメソッドが使えます。

In [6]:
df3.rename(
    columns={"height":"身長", "weight":"体重"}, # 列名を変更,  {変更前:変更後}
    index={"jiro":"kojiro"} # 行名を変更
    
)
Out[6]:
身長 体重 blood type age
taro 190 100 A 30
kojiro 180 90 B 28
saburo 170 80 AB 26
shiro 160 70 O 24

このメソッドだと、df.rename( columns={変更前:変更後})と書くことで変更したい値だけ変更することが可能です!

まとめ

この記事では、DataFrameの列名を設定・変更する方法についてまとめました。

大きく分けて二つ、

  • DataFrameのcolumnsパラメータ
  • DataFrameのrenameメソッド

これらを使いこなすことで、列名を好きな値にすることができますよ!

使い方も簡単でしたね。ぜひ使ってみて下さい!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説