Pythonで仕訳テスト(キーワード検索)
★監査人の重要な手続きの1つである仕訳テストについて、Pythonを活用できないか、トライしてみました。
監査人の重要な手続きの1つに、「仕訳テスト」があります。
これは、詳細は割愛しますが、簡単に言えば、「年間の全件仕訳データから、特定の属性を持つ仕訳を抽出し、リスクに応じた詳細な検討を行う」というものです。
年間の全件仕訳データは、会社の規模や起票方法、システム体系などによって数千行のものから数百万行、あるいはさらに多いケースまであります。
そして、本手続きは、年度末に1回の場合もあれば、四半期ごとのケースもあります。
あまりにデータが大きい場合には、データ解析用の専用のソフトウェアの力を借りることになりますが、小規模の場合にはエクセル上で作業、というケースが実務上は多いと思われます。
そのときに、「仕訳を抽出する」のは作業に過ぎないのですが、
・エクセル上でフィルタをかけて
・抽出された仕訳を別シートにコピーペーストして
・そしてまた次の条件で
、、、とやっていると、時間がかかるのと、人の手によるため、例えば選択範囲のミスなど、失敗する可能性がどうしてもあります。
ここを、Pythonで、ということです。
今回は、「キーワード検索」をやってみました。「偽」「不正」「架空」など、不正の可能性を示す文字列を含む摘要欄を持つ仕訳を抽出する、というタイプの仕訳テストです。
キーワードごとに、新規ファイルを作成し、抽出された仕訳が転記される、というスタイルにしました。
「pandas」が、かなり強力で、エクセルを多用する監査作業では威力を発揮しそうなモジュールだということを感じました。
仕訳テストは、どの監査業務でも必ず行う手続ですので、汎用性を高められれば、横展開でさらに効果が大きくなるかもしれません。
# 仕訳テスト用キーワード.csv のA列にキーワードを羅列する
# 仕訳テスト用仕訳ファイル.csv に対象仕訳データを格納する
# 「摘要」欄はプログラムにあわせ、「摘要」の名称にしておく
import pandas
df1 = pandas.read_csv(‘仕訳テスト用キーワード.csv’)
list = list(df1[‘キーワード’])
df2 = pandas.read_csv(‘仕訳テスト用仕訳ファイル.csv’)
for i in range(len(list)):
result = df2.query(‘摘要.str.contains(list[0])’, engine=’python’)
result.to_excel(‘./検索結果_’ + list[0] + ‘.xlsx’, sheet_name=’keyword_’ + list[0] )
list.pop(0)
ご参考になれば幸いです。
竹内由多可