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

プログラミング
bitbank

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

今回は、「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」が計算されて、数値表示されていることがわかります。

Pythonを早く身に付けたい人は

Python初心者は、Udemyでの動画勉強をおすすめします。私もUdemyでかなり上達しました。

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

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


さいごに。本当に役立つ情報

私はものづくり技術職であり、他業種からプログラミングの勉強はじめました。

プログラミングの独学は挫折する確率が70%と言われており非常に高いです。

理由は私も体感しましたがかなり専門用語が多く、勉強の仕方も良く分からないところで苦戦しました。

モチベーションを保つには、はやくつまらない基礎学習は済ませて、気になるアプリを自分でつくってみることだと思います。

自分の思う通りに動作してくれると、結構楽しくて便利で、プログラミングにハマると思います。

もしも、悩んだ場合はプロに相談するのが良いですが、スクールなどは数万円~数十万円と値段がかかります。まずは、無料カウンセリングで、聞きたいことを聞きまくるのが良いです。

おすすめの無料カウンセリングを紹介しておきます。

大事なことですが、聞きたいことを事前にすべてまとめてから相談しましょう。

・悩んでいること
・具体的な勉強方法
・転職相談(希望あれば)
などを箇条書きに整理しておくイメージです。

無料ですので、時間の限り、どんどん質問しましょう。恥はかきすての精神です。自分の本気度次第で恥ずかしさは無くなるかと思います。
(何も考えずにいくと、スクール入会を勧められるだけで、実りある時間になりません,,,)

★プログラミング学習で悩んでいる人
プログラミングスクール大手のTechAchademyの無料学習カウンセリングです。プログラミング学習で悩んでいる人にプロの方がやさしく丁寧に答えてくれます。


★ITエンジニア転職まで考えている人

プログラミングスクール大手のTechAchademyの転職含めたカウンセリングです。IT業界に就職・転職したい人は、役立ち情報や進め方など、教えてくれます。スクールに入ると就職までしっかりと面倒を見てくれるコースもあるので参考に話を聞いてみるのはアリかなと思います。



bitbank
プログラミング
みやみつブログ