LoginSignup
1
2

More than 3 years have passed since last update.

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

Posted at

はじめに

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()

image.png

データフレームの準備ができました。日本語カラムだと、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)

image.png

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2