データアナリストのまことです。
この記事では、私が業務で使用しているPythonでの前処理プロンプトを公開します!
データの前処理のためにPythonコードを書いている時間が長く、効率化出来ないかなと考えたことはありますか?または、Pythonの基礎は分かるけど自分でコードを一から書くのは難しい、という人は多いのではないでしょうか?
SNSなどでは、
生成AIを使えば簡単に効率化出来る!
~というサービスを使って、データをアップロードして..
以上のように簡単に言いますが、現場ではまだまだ生成AIが簡単に制限なしに使える状況ではないですよね。
多くの企業では、生成AIの利用自体は認められていても無料版のみであったりセキュリティの問題上ファイルのアップロードなどを用いて、処理したいデータをAIに読み込ませることは認められていないことがあります。
そこで、生成AIをデータの前処理に使うのであればPythonのコードを生成AIに書いてもらう。そして、実行は自分で行うということになります。
しかし、ここで問題が発生します。
データのcsv,excelファイルを読み込ませられず、データ構造を生成AIに伝えるのが手間
例えば、10カラム以上あるデータの前処理を行いたいときに10カラム以上の情報を入力するのは手間ですよね、、その手間を無くすちょっとしたテクニックも今回ご紹介できればと思っています。
今回は、chatgptなどの生成AIを活用したデータ前処理のコーディングの効率化方法についてプロンプトを完全公開したいと思います。
ぜひ実務で使ってみてください!!
データ加工・前処理のコード生成プロンプト完全公開!
さっそくプロンプトをお見せします。
正直何の変哲もないです。しかし、意外とネット上にこのようなデータを扱うためにコード生成をするプロンプトは世の中に出回っていないため今回は公開することにしました。
しかし、データのカラム(列)を生成AIに伝えるために一つ一つカラム名をコピーして記述するのは手間ですよね、、
そこでその手間を解消するテクニックを次の章でお伝えします。
#指示
データフレームを理解して、指定した処理をするPythonコードを出力して下さい。
#してほしい処理
#目的
#情報
データフレーム名:
カラム:
#ルール
シンプルで可読性の高いプログラムであること。
出来るだけ分かりやすくしてください
#出力
Pythonコード
分かりやすい説明
データのカラム(列)を生成AIに簡単に伝えるためのTips
それはPythonで以下のコードを記述することです!
import pandas as pd
df = pd.read_csv('{読み込みたいデータへのパス}')
df.dtypes
結果は以下のように帰ってきます。
order_id int64
user_id int64
product_id int64
date_time object
quantity int64
revenue int64
is_proper bool
dtype: object
この結果をプロンプトのカラム名の箇所に貼り付けてください。
すると、カラム名だけでなくてデータ型も伝えることが出来るので一石二鳥なんです。
実際の使用例
私は他部署から共有されるデータに不備がないかを確認するコードを書く必要があった際に使ったプロンプトとなります。
#指示
データフレームを理解して、指定した処理をするPythonコードを出力して下さい。
#してほしい処理
以下の条件を満たしていない行を表示したい。
・order列が6桁である。
・user_id列が5桁である。
・product_idに数値が入っている
・date_timeに日付データが入っている
・quantityに数値が入っている
・revenueに数値が入っている
・is_properにTrue,Falseのどちらかの値が入っている
#目的
与えられたデータに必要な情報に不備がないかを調べたい。正確なコードを書きたいです。
#情報
データフレーム名:sales_df
カラム:
order_id int64
user_id int64
product_id int64
date_time object
quantity int64
revenue int64
is_proper bool
dtype: object
#ルール
シンプルで可読性の高いプログラムであること。
出来るだけ分かりやすくしてください
#出力
Pythonコード
分かりやすい説明
結果
import pandas as pd
# データフレームの読み込み
sales_df = pd.read_csv('sales_data.csv')
# 条件を満たしていない行を抽出する
invalid_rows = sales_df[(sales_df['order_id'].apply(lambda x: len(str(x)) != 6)) |
(sales_df['user_id'].apply(lambda x: len(str(x)) != 5)) |
(sales_df['product_id'].apply(lambda x: not isinstance(x, (int, float)))) |
(sales_df['date_time'].apply(lambda x: not pd.notnull(pd.to_datetime(x, errors='coerce')))) |
(sales_df['quantity'].apply(lambda x: not isinstance(x, (int, float)))) |
(sales_df['revenue'].apply(lambda x: not isinstance(x, (int, float)))) |
(~sales_df['is_proper'].isin([True, False]))]
# 条件を満たしていない行を表示する
print("条件を満たしていない行:")
print(invalid_rows)
実際にこのコードを実行したところ、意図していた結果を得ることが出来ました。
もしエラーが出たとしてもエラーを生成AIに教えてコードを修正してもらいましょう!
まとめ
以上のようにchatgptなどの生成AIを使って、データ前処理のコーディングを効率化することができます。私自身も積極的に活用して業務の効率化を図っています。
プロンプト自体は何の変哲もないですが、データのカラム情報を生成AIに伝えるためのTipsが一番お伝えしたかったです、ぜひ活用してみてください!
コメント