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)


ご参考になれば幸いです。

竹内由多可