
まくまく
プラグラミング言語「PYTHON」を使ってみよう!!業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。
今回の内容
- CSVファイルを読み込み、列(項目)を追加する
- 追加した列の最終行に合計値を入力する
文字で書くと分かりにくいかもしれませんが、何をやっているかは出力を見ればすぐに理解して頂けると思います。
まずは結果から見ていきましょう。
最終行に値を入力するのが思うようにいきませんでしたが、なんとか完成しました!!
出力
元ファイル「fruits price.csv」ファイルの中身です。A列に果物、B列に価格、C列に個数が入力されています。
プログラムを実行すると、D列に合計(価格と個数をかけた数値)が追加され、さらにD列の最終行にはトータル金額が表示されたエクセルファイルを作成することができました。
実施している内容は至ってシンプルです。では、実際にどのようなプログラムで動いているかを見ていきましょう。
使用するのはopenpyxl
今回使用するのは、エクセルファイルを読み書きできるPythonライブラリ「openpyxl」です。
サンプルコード
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb=Workbook()
ws=wb.active
df=pd.read_csv('fruits price.csv',encoding='shift_jis')
df['合計']=df['価格'] * df['個数']
for row in dataframe_to_rows(df,index=None,header=True):
ws.append(row)
ws.cell(row=ws.max_row+1,column=4).value =df['合計'].sum()
wb.save('keisan.xlsx')
コメント
- 予めPythonファイルと同じフォルダに「voltage.csv」を保存しておく
- 8行目 df=pd.read_csv〜 で元ファイル「fruits price.csv」を読み込む
- 9行目 df[‘合計’]=df〜 で列を追加する
- 11行目 for row in dataframe〜 で1行ずつ取得する
- 12行目 ws.append(row)で取得した値をwsへ書き込む
- 14行目 ws.cell (row〜 でD列の最終行にトータルの金額を追加
最後の「ws.cell (row〜」の部分が分かりにくいかもしれません。
「(row=ws.max_row+1,column=4)」でD列の最終行です。そこにトータル金額「df[‘合計’].sum()」を代入しています。
注記
うまくいかないときは「encoding=’shift_jis’」を「encoding=’utf-8’」などへ変えると良いかもしれません。macかwindowsかで変わります。