【Python】データフレームの列名変更とその用途

Python

本記事をご覧いただきありがとうございます。本記事では、Pythonのライブラリ、Pandasのデータフレームの列名に関する処理について取り扱います。

本記事のターゲットは、データフレームの取り扱いにまだそこまで慣れていない方を対象としています。上級者の方、お気づきの点がございましたら、ご指導いただけますと幸いです。

該当コード

まずは、いますぐ使えるコードを貼っておきます。なんとなく使い方がわかっている方は、コチラでサクッと解決しちゃってください。

import pandas as pd

# データのインポート
df = pd.read_csv('data.csv')

シンプルな使い方

df_rename = df.rename(columns={'Col_1':'column_a'}, index={'idx_1':'index_a'})

複数変更したい場合

# 列名変更の場合
df_rename = df.rename(columns={'Col_1':'column_a', 'Col_2':'columns_b'})

# 行名変更の場合
df_rename = df.rename(index={'idx_1':'index_a', 'idx_2':'index_b'})

inplaceも使える

df_copy = df.copy()
df_rename = df_copy.rename(columns={'Col_1':'column_a'}, inplace=True)

解説

一つ目のシンプルな使い方。
まずはこれをなんとなく頭に入れておく。「.rename()あったな」くらいで覚えておくと良いかも


二つ目の複数について。これは列名などを一気に変更する方法。columnsやindexは辞書で受け取るので、辞書の中身を増やせば、いくらでも変更できる。
これは処理に関係ないが、複数を一気に変更する場合は、あまり全てを関数の中に入れすぎない方が個人的にはおすすめ。なぜなら、関数の中身が増えてしまい、可読性が下がるから。
コードを読んでて、横にスクロールしないといけないと、結構ストレスなので。個人的な感想だけど、結構真理だと思っています。

最後のinplace。
inplaceはいきなり元のデータフレームを変更すると、warningが出たりするので、ちょっと邪魔になるので注意。それに元のデータフレームを変更してしまうと、その後の処理に諸々影響が出る可能性があるので、良くないと考えています。

データフレームの列名は変更して終わりということはほぼないので、inplaceは慎重に。エクセルで例えるとマスターは簡単に変更しない方が良いということ。作業用にコピーしてやったりする感覚なので、inplaceをする場合は、確実に.copy()を活用することをオススメします。

そのほかも引数がありますが、私はあまり使いません。列名変更したい処理なのであれば、あまり込み入ったことはせず、コード内のその行は、列名を変更することだけに絞った方が可読性が高くなりますので、オススメです。

参照サイト

安定のnkmk

pandas.DataFrameの行名・列名の変更 | note.nkmk.me
pandas.DataFrameの行名(index, インデックス)・列名(columns)を変更するには、rename()メソッドやset_axis()メソッドなどを使う。任意の行名・列名を変更: rename()基本的な使い方複数の行名・列名を変更元のオブジェクトを変更: 引数inplaceラムダ式や関数で一括処理...
【リファレンス】カラム名を変更【Python】
カラム名を変更したい。DataFrame.rename()を使います。

まとめ

以上となります。
いかがでしたでしょうか。簡単な処理ですが、「あれ、エラー出ちゃった」ということもあると思いますので、その際は立ち返って、このサイトにまた戻ってみてもらえると嬉しいです。

簡単な処理とはいえ、侮るなかれ、ですね。簡単な処理ほど、可読性を意識しましょう。初心者は特に処理スピードの前に先輩や既存のコードなどから可読性を学んでいく方が、その後の伸びが違うように思います。

Pythonライフ、データ分析ライフを楽しんでいきましょう!

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

その他の技術系記事も書いています

転職・スキルアップはこちらからどうぞ

オススメ転職はこちらからどうぞ
オススメのスキルアップはこちらからどうぞ

コメント

タイトルとURLをコピーしました