【python】maketrans/translate活用例。「兆/億/千万円」を数字変換してエクセルに記入する方法

プログラミング

企業の売上をデータ集約したいときに、数字ではなく「兆/億/千万円」という漢字で表されている場合に、数字変換したい場合があると思います。

今回は、「str.maketransとtranslate」を活用することで、企業の売上の「兆/億/千万円」を数字変換し、エクセルに記入する方法を紹介したいと思います。

例題

まず、例題を考えてみます。

ある企業の2020年の売上が、「2兆500億円」だったとします。このとき、「2兆500億円」という漢字まじりの売上を、エクセルに数字のみで記入する方法を考えたいと思います。

考え方

「2兆500億円」は、「2兆+500億」と分けることができます。

・兆は10の12乗なので、「兆=1000000000000」
・億は10の8乗なので、「億=100000000」

これより数式に直すと「2*1000000000000 + 500*100000000」となります。

この変換と同じことをpythonで行う方法を考えたいと思います。

①str.maketransで、複数の文字を一括変換するルール作成をする

str.maketransを活用して、兆、億、円を、数字に一括変換するルールを作成します。

下記がコード例となります。


 str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000''円' : '' })

‘兆’ を ‘*1000000000000+’ に変換、’億’ を ‘*100000000′ に変換、’円’ を ” (空白)に変換することを表しています。

str.maketransの使い方は、変換前の文字と変換後の文字の間に「:」を入れます。また複数の文字を変換する場合は、「,」で条件を増やします。注意点は、変換前は「1文字」しか指定できませんが、変換後は「複数文字」を指定することができます。

(replaceでも同じ作業ができますが、replaceは1文字ずつ取り出して変換する必要があるため、for構文が必要となり難しくなるのでお勧めしません)

②translateでstr.maketransを実行し、文字を一括変換する

ここでは、実際に、「2兆500億円」を、数式に変換したいと思います。

コードは下記となります。


Sale = "2兆500億円"
#企業の売上


Henkan = str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000''円' : '' })
#変換ルール作成

Sale_Formula = "=" + Sale.translate(Henkan)
#Saleを変換ルールで数式化しSale_Formulaと定義

print(Sale_Formula)
#数式を出力

------------------------------------------
=2*1000000000000+500*100000000

・Saleで、企業の売上を”2兆500億円”に定義しています。
・Henkanにて、変換ルールをstr.maketransで作成しています。
・Sale_Formulaで、数式化した売上を定義しています。
 “=”はエクセルに記入した際に自動計算し数字にするためにあたまに付けています
 translateの使い方は、「変換前.traslate(変換ルール)」となります。
 変換前「2兆500億円」を変換ルール「Henkan」に従い、
「translate」で実際に変換しています。
・printで出力した結果、「=2*1000000000000+500*100000000」となり、数式化できていることが分かります。

③エクセルに数式を記入する

先ほどの数式化したSale_Formulaを、エクセルに記入すると完了です。

エクセルに記入する方法は下記となります。


import openpyxl  #エクセル制御openyxlをインポート

wb = openpyxl.Workbook()   #エクセル起動
wb = openpyxl.load_workbook(r"C:\.\test.xlsx"#test.xlsxを開く
sheet = wb.worksheets[0] #エクセルシートの1番目を選択

Sale = "2兆500億円" #企業の売上

Henkan = str.maketrans({'兆' : '*1000000000000+' , '億' : '*100000000''円' : '' })
#変換ルール作成

Sale_Formula = "=" + Sale.translate(Henkan)
#Saleを変換ルールで数式化しSale_Formulaと定義

sheet.cell(column = 1, row = 1, value = Sale_Formula)
#エクセルシートのA1にSale_Formulaを記入

wb.save(r"C:\Users\.\Desktop\test.xlsx") #上書き保存
wb.close() #エクセル閉じる

oprenpyxlを用いて、エクセルを起動し、売上「2兆500億円」を数式化「=2*1000000000000+500*100000000」したものを、エクセルシートのA1に記入しています。

記入後のエクセルを開くと、下記のようになります。

きちんとエクセル上で、数式化「=2*1000000000000+500*100000000」が計算されて、数値表示されていることがわかります。

おわりに

今回は、企業売上の漢字交じりの「兆/億円」を数字でエクセルに記入する例を紹介させていただきました。

今回は変換だけの紹介でしたが、実際の大きく複雑なプログラムになってくると、データ母集団のなかには想定外の文字や空白が入っていたりすることがあります。

その際は、if文やfotやtry/exceptなど、さまざまな構文を用いて、python上で都度対処する必要がでてきますが、考え方の根幹としては今回紹介した方法と同じです。人間の頭で考えることをpythonコードにて表現していくことになります。

さいごに

Pythonは比較的簡単であり初心者がはじめて学ぶ言語に良いと言われています。

しかし、実際にやってみると、予期せぬエラーにはまってしまったり、解決策の調べ方も分からなかったりと、本やウェブ検索での独学ではしんどいと思いました。

Python学習を挫折せずに早くマスターして使いこなしたいという方には、Udemy動画での学習をおすすめします。

下記リンクから、Udemyのサンプル動画で講義の様子や内容を知ることができますので一度確認してみてください。本当におすすめです。

Udemy講師の方は現役でIT企業に勤めている方で、基礎的なところから応用まで丁寧に教えてくれます。また、実際のIT企業におけるコードの書き方やルールなど、独学では学べないところも教えてくれるので、就職や転職も考えている方にも最初の学習に適していると思います。

ちなみに私はプログラミング初心者でしたが、はじめにUdemy動画で基礎的なところを勉強しました。その後は、ウェブ検索で独学で勉強していますが、今では数千行のプログラムを書いて、完全自動でウェブ情報を収集したり、アプリを動かしたりなどできるようになりました。参考いただけたらと思います。


ここまで読んで頂きありがとうございました。今後もPython初心者に向けて情報発信していきたいと思います。

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