pandas データフレーム内の列の名前変更は一般的な操作です。 pandas 列の名前を変更する 4 つの異なる方法を学びます。
Pandas は、 データ分析用の人気のある Python ライブラリです。分析する必要があるデータは、csv ファイルや tsv ファイル、リレーショナル データベースなど、さまざまな形式で入手できることがよくあります。また、データに対していくつかの予備チェックを行い、欠損値を処理し、さらなる分析のためにデータを準備する必要があります。
パンダを使用すると、次のことができます。
- さまざまなソースからデータを取り込む
- データセットを探索し、その中の欠損値を処理する
- データセットを分析して洞察を得る
すべてのデータ分析プロジェクトでは、辞書などの Python データ構造からデータ フレームを作成することがよくあります。または、CSV ファイルなどの他のソースからデータをデータ フレームに読み取ります。
データフレームは、pandas の基本的なデータ構造です。行に沿ってレコードが含まれ、列に沿ってさまざまなフィールドまたは属性が含まれます。
ただし、より説明的で読みやすくするために、列名の変更が必要になる場合があります。ここでは、列の名前を変更する 4 つの異なる方法を学習します。さぁ、始めよう!
Pandas データフレームの作成
パンダがインストールされている Jupyter ノートブック環境でチュートリアルを進めることができます。または、 Google Colab でフォローすることもできます。
まず、パンダ データフレームを作成し、チュートリアルの残りの部分でそれを使用します。
これが辞書
book_dict
です。
books_dict = {
"one": [
"Atomic Habits",
"His Dark Materials",
"The Midnight Library",
"The Broken Earth",
"Anxious People",
],
"two": [
"James Clear",
"Philip Pullman",
"Matt Haig",
"N.K.Jemisin",
"Fredrik Backman",
],
"three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
"four": [4, 5, 3, 5, 4],
}
まずパンダをインポートし、次に
books_dict
からデータフレーム
df
を作成します。
import pandas as pd
注 : 列の名前を変更する前に、データフレームの初期バージョンを作成するために、次のコード セルに繰り返し戻ります。
df = pd.DataFrame(books_dict)
df.head()
を使用して、データフレーム
df
の最初の数行を取得できます。デフォルトでは、最初の 5 行が返されます。ここでは
df
は 5 行しかありません。したがって、
df.head()
を使用すると、データフレーム全体が取得されます。
df.head()
現在、列名がディクショナリのキーになっていることがわかります。しかし、これはあまり説明的ではありません。それでは、名前を変更してみましょう。 👩🏫
Pandas で列の名前を変更する方法
次に、パンダで列の名前を変更するさまざまな方法を見てみましょう。
-
データフレームの
columns
属性を新しい列名のリストに設定する - データフレームでの rename() メソッドの使用
- str.replace を使用して 1 つ以上の列の名前を変更する
-
データフレームでの
set_axis()
メソッドの使用
列属性の設定
どのデータフレームでも、
columns
属性には列名のリストが含まれます。
df.columns
# Index(['one', 'two', 'three', 'four'], dtype='object')
各フィールドが何を表すかを示すために列の名前を変更し、
df.head()
を呼び出して結果を確認しましょう。
df.columns = ['Title','Author','Genre','Rating']
df.head()
rename() メソッドの使用
pandas で列の名前を変更するには、次の構文で
rename()
メソッドを使用できます。
df.rename(column={mapping})
このマッピングは、次の形式の辞書にすることができます。
{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}
books_dict
辞書から
df
を作成しましょう。
df = pd.DataFrame(books_dict)
上記の構文で
rename()
メソッドを使用すると、
df_1
が得られます。これは、列の名前が変更されたデータフレームのコピーです。
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()
したがって、
df_1
の列名が変更されます。
ただし、元のデータフレーム
df
の列名は変わりません。
df.head()
このメソッドを使用すると、古い列名と新しい列名の間のマッピングが提供されるため、単一の列と複数の列の両方の名前を変更するために使用できます。
列の名前をその場で変更する
新しいコピーを作成せずに、既存のデータ フレームを変更したい場合はどうすればよいでしょうか?
これを行うには、メソッド呼び出しで
inplace
True
に設定します。
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()
これにより、元のデータフレーム
df
の列の名前が変更されます。
これまでに次の方法を見てきました。
- 古い列名を新しい列名にマップする辞書を提供して、列の名前を変更します。
- 新しいデータフレームを作成せずに列の名前を適切に変更する
rename メソッドは別の方法でも使用できます。
列の名前を変更する別のアプローチ
列の名前を大文字になるように変更しましょう。
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()
データフレーム
df
次のようになります。
これらの各列名をタイトルケースに変更するとします。各列名に辞書を提供する代わりに、次のようにオブジェクトの関数またはメソッド呼び出しを指定できます。
df.rename(str.title,axis='columns',inplace=True)
df.head()
ここでは、
axis
'columns'
に設定し、
str.title
を使用してすべての列名をタイトルの大文字に変換します。
列名の文字列に対する str.replace() の使用
いつものように、次のコード セルを実行して、ディクショナリからデータフレームを作成します。
df = pd.DataFrame(books_dict)
Python では、
replace()
メソッドを
str.replace(this, with_this)
構文で使用して、必要な変更を含む文字列の
コピー
を取得します。以下に例を示します。
>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'
columns 属性には、列の名前を含む文字列のリストが含まれていることがわかります。したがって、次のように
str.replace('old_column_name','new_column_name')
を呼び出すことができます。
df.columns = df.columns.str.replace('one','Title')
df.head()
ここでは、列「one」のみの名前を「Title」に変更したため、他の列名は変更されません。
次に、同じ方法を使用して他の列の名前を変更しましょう。
df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()
列の名前を変更するこの方法は、列の 1 つまたは小さなサブセットのみの名前を変更する必要がある場合に役立ちます。
set_axis() メソッドの使用
データフレームの初期バージョンに戻ってみましょう。
df = pd.DataFrame(books_dict)
set_axis()
メソッドを使用して列の名前を変更することもできます。構文は次のとおりです。
df.set_axis([list_of_column_names],axis='columns')
デフォルトでは、
set_axis()
メソッドはデータフレームのコピーを返します。ただし、データフレームをその場で変更したい場合は、
copy
False
に設定できます。
df = df.set_axis(['Title','Author','Genre','Rating'],axis='columns',copy=False)
df.head()
結論
ここでは、pandas データフレーム内の列の名前を変更するさまざまな方法を確認します。
-
サンプル データフレーム
df
の場合、列属性df.columns
列名のリストです。列の名前を変更するには、この属性を新しい列名のリストに設定します。 -
列の名前を変更する
rename()
メソッドはdf.rename(columns={mapping})
という構文で動作します。ここで、mapping
は、古い列名から新しい列名へのマッピングを指します。すべての列名に適用される関数を指定して、rename()
メソッドを使用することもできます:df.rename(function or method call, axis='columns')
。 -
Python 文字列で
replace()
メソッドを使用するのと同じように、df.columns.str.replace('old_column_name', 'new_column_name')
を使用して列名を置換できます。 -
列の名前を変更するもう 1 つの方法は、 set_axis メソッドを構文
df.set_axis(list_of_col_names,axis='columns')
で使用することです。
このチュートリアルはこれですべてです。データ分析用の共同ノートブックのリストを確認してください。