• 締切済み

テキストデータを複数の変換条件に従って高速処理

CSVファイルがあり、そこにはクレジットカード利用データが記録されています。 日付、店名、金額、処理番号とでもさせてください。 店名に従って、カテゴリを書き込んでいきます。マクドナルドなら食事とかヒルトンなら宿泊費などです。マクドナルドだけでも店場所がちがうとそれらもまとめなければなりません。このあたりは正規表現で置換させます。 どこから店名のリストと対応するカテゴリのリストを用意して条件を作成するのか、という問題がありますが(最初は手打ち)とりあえずどうやってスクリプトを書いていけばよいのか指針を教えてください。何百という対応リストに何十というデータ行があります。一行づつ読んでいき、店名リストに一つずつ照らし合わせていくのではかなり遅くなるのではないでしょうか。 こういったときにはどういうロジックを使用するのでしょう?2次元配列とか聞いたことがあります。カード利用回数だけループさせて何百という条件処理を一度にくぐらせる、もしくは履歴データを丸ごと条件処理数だけくぐらせれば時間短縮になりますよね。うまく伝わってくれればよいのですが。 エクセルマクロにするのかパイソンで書くのかも考えなければなりません。(他は経験まったく無し) どうぞよろしくお願いいたします。

みんなの回答

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

マクロが解らないなら、関数でやることをお勧めします。 ①Sheet1にCSV を読み込む。 データ、テストファイル。で行います。 ②「カテゴリ」シートを作り、Sheet1!B列☞カテゴリ!A列へコピペ。 ③A列を選択、重複の削除 ④B列にカテゴリを入力 ⑤Sheet1に関数を入力。 E2: =IFERROR(VLOOKUP(B2,カテゴリ!A:B,2,0),"") 下へオートフィル。(フィルハンドル:右下の緑■をダブルクリック)

piyo-maru7
質問者

お礼

ありがとうございます。 ボタンポチで変換させたいのでマクロやVBAで、関数は直接使いませんが参考になりました。

Powered by GRATICA
  • retorofan
  • ベストアンサー率34% (435/1276)
回答No.1

店名によってカテゴリを付ける場合、 正規表現で置換させるよりも、 辞書型を用いたほうが簡便でしょう。 CSVデータの読み込み方は、 1行ずつ読み込んでいくなんて悠長すぎます。 そういう時は、データ分析用の pandasライブラリのDataFrame 機能を使うとよいです。 Pythonに通じておられるようですので、 それで組んだらいかがでしょうか。 辞書型のカテゴリを用意しておけば、 Pythonなら数行のコーディングできる筈です。

piyo-maru7
質問者

お礼

ありがとうございます。Pythonは精通しているわけではありませんが、必要に応じて引っ張り出してきます。

Powered by GRATICA