作者: とりすたー
目次
- テーブルのデータを処理したい
- ChatGPT はCSVデータの処理ができるのか
- Pythonを経由しないで処理したい
- CSVデータのテキストを処理してもらう
- 年齢順に出力して
- テキストを送信する場合、何件くらいまで処理できるのか
- 20歳以下を出力して
- テスト用CSVデータを作る
- 今回わかったこと
- 同姓同名対策
テーブルのデータを処理したい
ちょっとしたテーブルのデータを処理したい。
手作業は面倒です。少し件数が多くなったら手に負えません。
テキストに grep を掛けて探すとか、もうちょっと面倒な作業があったらどんなツールを使えばいいだろうか?
PostgreSQL は昔使っていたからなんとかなるかも・・・とMacBook Air にPostgreSQLをインストールしました。
しかし、風呂に入っている間に、ChatGPT はCSVデータの処理ができるのではないかと思いました。
ChatGPT はCSVデータの処理ができるのか
ChatGPTに聞いてみます。
ChatGPT はCSVデータの読み書きができますか
はい、できます。Pythonの標準ライブラリであるcsvモジュールを使用することで、PythonプログラムからCSVファイルを読み書きすることができます。
例えば、CSVファイルを読み込むには、以下のようなコードを使用できます。
(以下略)
できるらしい。
Pythonを経由しないで処理したい
Pythonを経由しないで直接にテキストファイルを読んで処理はできないのですか?
ChatGPTの回答
Pythonを経由せずにテキストファイルを直接処理することは可能です。テキストエディタなどのテキストファイルを扱うソフトウェアを使用して、テキストファイルを開いて編集することができます。
(以下略)
できるらしい。
CSVデータのテキストを処理してもらう
試しに CSV を書いてChatGPTへ指示してみます。
以下のCSVデータは名前、年令、ボーリングのスコアを表現している。
ボーリングのスコア順に出力して
CSV:山田太郎,55,250
シロッコ,18,120
青木つかさ,40,210
ChatGPTの回答
以下はPythonを使用して、CSVファイルのデータを読み取り、ボーリングのスコアが高い順に並べ替えて出力する例です。
import csv
with open('example.csv', 'r') as file:
reader = csv.reader(file)
next(reader) # ヘッダー行をスキップ
sorted_rows = sorted(reader, key=lambda row: int(row[2]), reverse=True)
for row in sorted_rows:
print(row[0], row[1], row[2])
このコードでは、CSVファイルのデータを読み込んで、sorted()関数を使用して、ボーリングのスコアが高い順に並べ替えています。sorted()関数には、key引数にボーリングのスコアを表す列のインデックスを指定し、reverse引数にTrueを指定して降順に並べ替えます。
最後に、並べ替えたデータをprint()関数を使用して出力しています。出力結果は以下のようになります。
山田太郎 55 250
青木つかさ 40 210
シロッコ 18 120
おぉ、ボーリングのスコア順になっている。
年齢順に出力して
年齢順に出力して
今までの指示を覚えていますから、たったこれだけの指示で「年齢順」に出力してくれます。
ChatGPTの回答
以下はPythonを使用して、CSVファイルのデータを読み取り、年齢が若い順に並べ替えて出力する例です。
import csv
with open('example.csv', 'r') as file:
reader = csv.reader(file)
next(reader) # ヘッダー行をスキップ
sorted_rows = sorted(reader, key=lambda row: int(row[1]))
for row in sorted_rows:
print(row[0], row[1], row[2])
このコードでは、CSVファイルのデータを読み込んで、sorted()関数を使用して、年齢が若い順に並べ替えています。sorted()関数には、key引数に年齢を表す列のインデックスを指定し、デフォルトの昇順に並べ替えます。
最後に、並べ替えたデータをprint()関数を使用して出力しています。出力結果は以下のようになります。
シロッコ 18 120
青木つかさ 40 210
山田太郎 55 250
おぉ、年齢順になっている。
テキストを送信する場合、何件くらいまで処理できるのか
このようにテキストファイルを送信する場合、何件くらいまで処理できますか?
テキストファイルを送信する場合に処理できる件数は、使用するシステムの性能やハードウェア、処理内容に依存します。
(略)一般的なサーバーやクラウドプラットフォームにおいては、(略)これらの手法を使用することで、より多くのテキストファイルを高速に処理することが可能となります。
したがって、処理できる件数については一概には言えませんが、(略)数千件や数万件程度のテキストファイルを処理することは一般的に可能です。ただし、実際の処理にあたっては、システムのスペックや処理内容、処理の実装方法などを考慮して、最適な処理方法を検討する必要があります。
聞き方が悪かった。指示文にCSVを含める場合のことを聞きたかった。
Pythonのコードだけ書いて、データを出力しないときがあり、Pythonをインストールすることになります。
20歳以下を出力して
以下のCSVデータは名前、年令、ボーリングのスコアを表現している。
20歳以下を出力して
CSV:
山田太郎,55,250
シロッコ,18,120
青木つかさ,40,210
ChatGPTの回答
以下のようにPythonのコードを書くことで、20歳以下のデータを出力できます。
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
age = int(row[1])
if age <= 20:
print(row)
今回は結果を表示してくれません。
これでは Pythonをインストールしないとダメです。
テスト用CSVデータを作る
CSVデータをランダムに10行作ってください
1行のデータは次のように定義します。
第1カラムは氏名です。アメリカの有名人をあててください。
第2カラムは年令です。18~60までの数字をランダムに作って
第3カラムはボーリングスコアです。80~300までの数字をランダムに作って
ChatGPTの回答
以下はPythonを使用してランダムな10行のCSVデータを作成する例です。氏名はアメリカの有名人からランダムに選び、年齢とボーリングスコアは指定された範囲からランダムに生成します。
import csv
import random# ランダムな氏名を選択するためのリスト
names = [
'Tom Hanks', 'Leonardo DiCaprio', 'Meryl Streep', 'Jennifer Lawrence',
'Brad Pitt', 'Angelina Jolie', 'George Clooney', 'Robert De Niro',
'Denzel Washington', 'Johnny Depp', 'Tom Cruise', 'Julia Roberts'
]# CSVデータを格納するリスト
csv_data = []# 10行のランダムなデータを作成
for i in range(10):
name = random.choice(names)
age = random.randint(18, 60)
score = random.randint(80, 300)
row = [name, age, score]
csv_data.append(row)# CSVファイルに書き込む
with open('random_data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerows(csv_data)
CSVファイルに書き込むので Python をインストールしないとダメのようです。
ChatGPTが選んだ有名人の名前が面白い。
トム・ハンクス、レオナルド・ディカプリオ、メリル・ストリープ、ジェニファー・ローレンス、ブラッド・ピット、アンジェリーナ・ジョリー、ジョージ・クルーニー、ロバート・デ・ニーロ、デンゼル・ワシントン、ジョニー・デップ、トム・クルーズ、ジュリア・ロバーツ
今回わかったこと
- ChatGPT はCSVデータの読み書きができる。
- Pythonを経由しないで直接にテキストファイルを処理はできる。
- CSVデータのテキストを送ってテストしてみた。
- 何件くらいまでデータを送れるかは一概に言えない。
- テスト用CSVデータを作ろうとすると、ファイルに書き込むコードを書いた
先に進めるにはPython をインストールしないとダメと分かりました。
次回はPython のインストールから書きます。
同姓同名対策
同姓同名の人がいるかもしれません。
そのときのために、行の先頭カラムに一連番号をつけて固有IDとしなければなりませんね。徐々に反映させます。