Googletransを使ってDataFrameのカラム名を日本語から英語に変換する


はじめに

pandasでデータフレームを扱う際に、カラム名が日本語だと何かと不便なことがあります。
そのような場合に、日本語のカラム名を手動で変換すると手間なので、googletransを用いることで楽をしようという魂胆。

環境とバージョン

  • googletrans 4.0.0-rc.1
  • Google Colaboratory

Googletransについて

Googletransは、google翻訳のAPIを使うためのpythonライブラリです。Google colaboratoryの場合、以下のコードでインストールできます。

!pip install googletrans==4.0.0-rc1

※1月12日現在、バージョンを指定せずインストールすると、googletrans 3.0.0 がインストールされます。このバージョンではうまく動作しません。
参考:https://qiita.com/_yushuu/items/83c51e29771530646659

googletransの使い方

from googletrans import Translator
columns = df.columns

translator = Translator()
str = 'こんにちは'
print(translator.translate(str, dest='en').text)

出力結果

Hello

destのデフォルトは英語なので dest='en' は略しても問題ないです。目的から逸れますが、destを変更することで、他の言語への翻訳が可能です。

print(translator.translate(str, dest='fr').text)

出力結果

Bonjour

日本語カラムから英語カラムへ変換

いよいよ本題です。日本語から英語カラムに変換していきます。まずはデータフレームの準備です。

データフレームの準備

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(25).reshape(5, 5),
                  columns=['顧客ID', '店舗ID', '個数', '価格', '店舗面積'])
df.head()

データフレームの準備ができました。日本語カラムだと、lightGBMで訓練する際にエラーが出るなど厄介です。英語に変換していきましょう。

Googletransを用いた英語変換

eng_columns = {}
columns = df.columns
translator = Translator()

for column in columns:
    eng_columns[column] = translator.translate(column).text

print(eng_columns)

出力結果

{'顧客ID': 'Customer ID', '店舗ID': 'Store ID', '個数': 'Quantity', '価格': 'price', '店舗面積': 'Store area'}

無事に英語に変換できました。しかしこのままだと、空白が入っており煩わしいです。
空白をアンダーバーに変換するコードを実装します。

eng_columns = {}
columns = df.columns
translator = Translator()

for column in columns:
    eng_column = translator.translate(column).text
    eng_column = eng_column.replace(' ', '_')
    eng_columns[column] = eng_column

df.rename(columns=eng_columns, inplace=True)

無事に英語のカラムにすることができました。