Site cover image

Site icon imageExcelおさるくんのastro-notion-blog

VBA / Python / Notion / AIによる業務効率化とデータサイエンスに関する情報を発信しています!

Post title iconChatGPTの最新モデルGPT-4が登場!Pythonコードとブログ記事の生成方法をご紹介します!

Featured image of the post

🔄 アップデート情報

2024年9月12日よりChatGPTの最新モデルとしてOpenAI o1の提供が開始されました!
  • 高度な推論能力を持つように設計されており、特に科学、数学、コーディングの分野で優れたパフォーマンスを発揮します。
  • 応答前に「思考時間」を取るよう訓練されており、複雑な問題に対してより深い分析が可能です。
  • o1-previewo1-miniの2つのモデルがあります。主な違いを以下の表にまとめました。
特徴o1-previewo1-mini
推論能力より高度o1-previewよりやや劣る
処理速度標準より高速
コスト高いo1-previewの約80%
週間利用制限30メッセージ50メッセージ
最大出力トークン数32,768トークン65,536トークン
主な用途高度な技術開発、
研究プロジェクト
小規模プロジェクト、
基本的な自動化タスク
コーディング能力非常に高いo1-previewと同等
リソース消費多い少ない(軽量)
複雑なタスク処理優れているやや劣る
Image in a image block
🎙️
OpenAI o1とGPT-4oの出力精度の違いを漫才ネタで比較してみました!

Post title icon in a page linkArrow icon of a page linkChatGPTの最新モデルOpenAI o1で漫才ネタを作ってみた!

2024年5月13日よりChatGPTのGPT-4oモデルの提供が開始されました!
  • GPT-4o(オムニ)ではテキスト、音声、画像、映像をシームレスに扱い、自然なテンポでのリアルタイム音声会話が可能になりました。
  • 特に、視覚と音声の理解力が際立ち、多言語対応や複雑な対話の要素を理解できるようになったと言われています。
  • さらに、既存モデルや競合モデルを上回る性能でありながら、制限はありますが、無料ユーザーも利用可能となっています。
Image in a image block

2024年4月1日よりChatGPTがログイン不要で利用できるようになりました!
  • 「まずはお試しください」をクリックすると利用できます。
Image in a image block
Image in a image block
  • 米OpenAIは4月1日、ログインやアカウント作成なしでもChatGPTが利用可能になったと発表しました。
  • これまでは、ChatGPTの利用にはアカウント作成が必須でしたが、今回の更新でアカウントを作成せずにChatGPTを試せるようになりました。ただし、モデルはGPT3.5、過去のチャット履歴の保存や確認、チャットの共有、音声対話やカスタム指示などの追加機能は利用できないようです。
  • 早速試してみましたが、GPT3.5モデルでも十分な精度だと感じました!
試しにマクロの記録をリファクタリングしてみました!
Image in a image block
Image in a image block
Image in a image block

ご質問の中にありました、VBAコードの実行方法について詳しくご説明いたします。
Image in a image block
1. コードを入力するVBE(Visual Basic Editor)の画面を表示する方法
  • まずはコードを入力するVBE(Visual Basic Editor)の画面を表示する方法をご紹介します。
    Image in a image block

  • Excelのツールバーのメニューから「開発」タブを選び、「Visual Basic」をクリックします。
    Image in a image block

  • もし開発タブが表示されていない場合は、リボンの上で右クリック、リボンのユーザー設定を選択します。
    Image in a image block

  • リボンのユーザー設定が選択されていることが確認できたら、「開発」にチェックマークを入れてOKボタンをクリックします。
    Image in a image block

  • また、ショートカットキーで起動することも可能です。Excelが開いている状態で、キーボードのAlt + F11を押すことで、直接VBEを起動することができます。
    Image in a image block
    Image in a image block

2. VBE(Visual Basic Editor)にコードを貼り付ける方法
  • 次にコードの貼り付け方法をご紹介します。
    Image in a image block

  • VBE画面の、左のプロジェクトウィンドウで現在開いているExcelファイルの「VBAProject (現在のファイル名)」を右クリックし、「挿入」→「標準モジュール」を選択します。
    Image in a image block
    Image in a image block

  • キーボードショートカットで挿入する場合はAlt ➜ I ➜ Mで挿入できます。
    Image in a image block

  • 標準モジュールを削除する場合は削除するモジュールを選択し、右クリックからモジュールの解放を選択します。
    Image in a image block
    Image in a image block

  • 「いいえ」を選択することでモジュールを削除することができます。
    Image in a image block

  • 本記事でご紹介したChatGPTで作成したVBAコードを貼り付けます。
    Image in a image block

3. VBAコードの実行方法
  • 最後にコードの実行方法をご紹介します。
    Image in a image block

  • コードを貼り付けたら、エディタの上部にある「実行」ボタン(緑の再生ボタン)をクリックするか、F5キーを押して実行できます。
    Image in a image block

1️⃣ はじめに

  • 今回は、話題のChatGPTの最新モデルGPT-4を使用して「Pythonのライブラリ」の使い方を解説する記事をマークダウン記法で記述する方法をご紹介していきます。
📖
GPT-4とは?

OpenAIが開発した最新のマルチモーダルAIモデルです。GPT-4はGPT-3の後継モデルとして2023年3月に公開されました。精度の向上に加え、画像データも入力できるマルチモーダルAI(複数のデータ形式を活用できるAIのこと)として用途のさらなる拡大が期待されています。

Image in a image block
📖
マークダウン(Markdown)記法とは?

テキストを簡単にフォーマットするための軽量マークアップ言語です。HTMLのように、タグを使用してテキストのスタイルを指定しますが、マークダウンはより読みやすく、書きやすいことが特徴です。Webコンテンツの作成、ドキュメントの整形、フォーラムやブログの投稿など、様々な場面で使われています。

マークダウンの主な機能と書式は以下の通りです:

  • 見出し: # の記号を使って見出しを作成します。# の数で見出しのレベルを調整します(例:# 見出し1, ## 見出し2)。
  • 強調(太字・斜体): _ を使ってテキストを強調します。太字は **太字**__太字__、斜体は *斜体*_斜体_
  • リスト: 箇条書きリストには *+-を使い、番号付きリストには数字を使います。
  • リンク: [表示テキスト](URL) でリンクを作成します。
  • 画像: ![代替テキスト](画像URL) で画像を挿入します。
  • 引用: > を文頭に置くことで引用を作成します。
  • コード: 単一のバックティック (`) でインラインコードを、3つのバックティック (```) でコードブロックを作成します。


マークダウンはそのシンプルさから、GitHubやRedditなど多くのプラットフォームで広く使われています。また、多くのテキストエディタやノートアプリでもサポートされています。

  • それでは早速、動画でChatGPTとMindNodeを使ったマインドマップの作成方法を確認していきましょう!

2️⃣ GPT-4の利用方法について

  • ChatGPTのモデルGPT-4は現在、月額$20の有料プランであるChatGPT Plusでのみ提供されています。
Image in a image block

3️⃣ ChatGPTでブログ記事の生成

  • Pandasライブラリの基礎的な使い方を記述するように生成していきます。
graph LR
    A[ChatGPTのGPT-4を使用] --> B[Pythonライブラリの基本的な使い方を記述]

  • Pandasライブラリの基礎的な使い方を解説するブログ記事を生成していきます。
🪄
「Pandasライブラリの基礎的な使い方を解説するブログ記事をマークダウン記法を用いて3000字で記述してください」
Image in a image block
  • コードが生成されていきます。

  • 記事の生成が途中で切れてしまった場合は「続きを書いてください」と入力します。
🪄
続きを3000字で記述してください。
Image in a image block

  • ネットワークエラーが発生しました。一度に出力する文字数が多いとネットワークエラーが発生してしまうようです。
Image in a image block

  • 文字数を減らして再度指示をしてみたいと思います。
🪄
続きを1000字で記述してください。
Image in a image block

  • 目次に沿って見出しを付けながら「Pandasライブラリの基礎的な使い方についての記事が生成されました。一度に出力する文字数が多いとネットワークエラーが発生してしまうため、文字数を指定しながら指示をするのが良さそうです。
Image in a image block

  • ChatGPTでは回答に対して、さらに深掘りすることや、求める回答になるまで対話を重ねることもできます。応用的な使い方の記事の生成も指示してみたいと思います。
🪄
「Pandasライブラリの応用的な使い方を解説するブログ記事をマークダウン記法を用いて1000字で記述してください」
Image in a image block

  • 途中で途切れてしまった場合は続きを書くように指示します。
🪄
「続きを1000字で書いてください」
Image in a image block

  • Pandasライブラリの応用的な使い方を解説する記事が生成されました。
Image in a image block

4️⃣ 実践的なPythonコードの生成

🪄
上記の内容を踏まえて、実践的なコード例をダミーの表データを生成したうえで記述してください。
Image in a image block

  • 作成された記事をふまえたうえで、実践的なコード例が生成されました。
Image in a image block

  • こちらをJupyter Notebookに貼り付けて確認してみます。
Image in a image block
  • 以上で、ChatGPTによるブログ記事の作成が完了しました。

5️⃣ ChatGPTで生成したブログ記事

🔗
基礎編

Post title icon in a page linkArrow icon of a page linkPandasライブラリ入門:Pythonでデータ解析をマスターする基本ガイド

マークダウン形式で生成したブログ記事の元データ(基礎編)
# **Pandasライブラリの基礎的な使い方**

PandasはPythonでデータ解析を行うための強力なライブラリです。データの読み込み、変換、フィルタリング、集計など、様々な機能を提供しています。この記事では、Pandasライブラリの基本的な使い方を解説します。

## **目次**

1. Pandasのインストール
2. データの読み込み
3. データフレームの基本操作
4. データの選択・抽出
5. データのフィルタリング
6. データの変換
7. データの集計
8. データの結合
9. データの出力

## **1. Pandasのインストール**

まずはじめに、Pandasをインストールします。Pandasはpipを用いて簡単にインストールできます。

```
Copy code
pip install pandas

```

## **2. データの読み込み**

PandasではCSVやExcelなどのファイルからデータを読み込むことができます。以下の例ではCSVファイルを読み込みます。

```
pythonCopy code
import pandas as pd

data = pd.read_csv("data.csv")

```

## **3. データフレームの基本操作**

Pandasでは、データフレームという形式でデータを扱います。データフレームは行と列からなる表形式のデータ構造です。

### **データフレームの確認**

データフレームの先頭行を表示するには**`head()`**を、最後の行を表示するには**`tail()`**を使います。

```
pythonCopy code
data.head()
data.tail()

```

データフレームの行数と列数を確認するには、**`shape`**属性を使用します。

```
pythonCopy code
data.shape

```

列名を取得するには、**`columns`**属性を使用します。

```
pythonCopy code
data.columns

```

### **データフレームの情報**

データフレームに含まれる情報を確認するには、**`info()`**を使います。

```
pythonCopy code
data.info()

```

データフレームの統計情報を確認するには、**`describe()`**を使います。

```
pythonCopy code
data.describe()

```

## **4. データの選択・抽出**

列を選択するには、列名を指定します。

```
pythonCopy code
data["column_name"]

```

行を選択するには、**`iloc`****`loc`**を使います。

```
pythonCopy code
data.iloc[0] # 0番目の行を選択
data.loc[0] # インデックスが0の行を選択

```

特定の条件を満たす行を選択するには、ブールインデックスを使います。

```
pythonCopy code
data[data["column_name"] > value]

```

複数の条件を組み合わせて選択する場合は、**`&`**(and)や**`|`**(or)を使います。

```
pythonCopy code
data[(data["column_name1"] > value1) & (data["column_name2"] < value2)]

```

## **5. データのフィルタリング**

特定の条件に基づいてデータをフィルタリングするには、**`query()`**メソッドを使用します。

```
pythonCopy code
data.query("column_name > value")

```

## **6. データの変換**

### **列の追加・更新**

新しい列を追加するには、新しい列名を指定して代入します。

```
pythonCopy code
data["new_column"] = data["column_name1"] + data["column_name2"]

```

### **列の削除**

列を削除するには、**`drop()`**メソッドを使用します。

```
pythonCopy code
data.drop("column_name", axis=1, inplace=True)

```

### **行の削除**

行を削除するには、**`drop()`**メソッドを使用し、**`axis=0`**を指定します。

```
pythonCopy code
data.drop(index, axis=0, inplace=True)

```

### **列のリネーム**

列名を変更するには、**`rename()`**メソッドを使用します。

```
pythonCopy code
data.rename(columns={"old_name": "new_name"}, inplace=True)

```

## **7. データの集計**

### **グループ化**

データをグループ化して集計するには、**`groupby()`**メソッドを使用します。

```
pythonCopy code
grouped_data = data.groupby("column_name")

```

### **集計関数**

グループ化したデータに対して集計関数を適用します。以下は一部の集計関数です。

- **`sum()`**: 合計
- **`mean()`**: 平均
- **`min()`**: 最小
- **`max()`**: 最大
- **`count()`**: カウント

```
pythonCopy code
grouped_data["numeric_column"].sum()

```

### **ピボットテーブル**

ピボットテーブルを作成するには、**`pivot_table()`**メソッドを使用します。

```
pythonCopy code
data.pivot_table(values="numeric_column", index="row_name", columns="column_name", aggfunc="sum")

```

## **8. データの結合**

### **横方向の結合**

データフレーム同士を横方向に結合するには、**`concat()`**関数を使用します。

```
pythonCopy code
combined_data = pd.concat([data1, data2], axis=1)

```

### **縦方向の結合**

データフレーム同士を縦方向に結合するには、**`concat()`**関数で**`axis=0`**を指定します。

```
pythonCopy code
combined_data = pd.concat([data1, data2], axis=0)

```
csharpCopy code
### 内部結合

共通のキーを持つデータフレーム同士を内部結合するには、`merge()`関数を使用します。

```python
merged_data = pd.merge(data1, data2, on="key_column")

```

### **外部結合**

共通のキーを持つデータフレーム同士を外部結合するには、**`merge()`**関数で**`how="outer"`**を指定します。

```
pythonCopy code
merged_data = pd.merge(data1, data2, on="key_column", how="outer")

```

## **9. データの出力**

データフレームをCSVファイルとして出力するには、**`to_csv()`**メソッドを使用します。

```
pythonCopy code
data.to_csv("output.csv", index=False)

```

Excelファイルとして出力するには、**`to_excel()`**メソッドを使用します。ただし、**`openpyxl`**ライブラリが必要です。

```
pythonCopy code
data.to_excel("output.xlsx", index=False)

```

## **まとめ**

この記事では、Pandasライブラリの基礎的な使い方を解説しました。データの読み込み、データフレームの基本操作、データの選択・抽出、フィルタリング、変換、集計、結合、出力など、Pandasはデータ解析に必要な機能を豊富に提供しています。これらの基本操作をマスターすることで、より高度なデータ解析が可能になります。

Pandasは非常に柔軟で強力なライブラリであり、データサイエンスや機械学習の分野で広く使用されています。この記事で紹介した機能は、Pandasの一部に過ぎません。更なる習熟のためには、実際にデータを扱いながら、さまざまな操作を試してみることが重要です。

Pandasの公式ドキュメントや、Pandasを使用したデータ解析のチュートリアルなども参考にして、Pandasを活用したデータ解析のスキルを高めていきましょう。そして、日々の業務やプロジェクトにおいて、効率的かつ正確なデータ解析を行うことで、より良い意思決定や問題解決に役立ててください。
🔗
応用編

Post title icon in a page linkArrow icon of a page linkPandasライブラリ入門:Pythonでデータ解析をマスターする応用ガイド

マークダウン形式で生成したブログ記事の元データ(応用編)
# **Pandasライブラリの応用的な使い方**

この記事では、Pandasライブラリの応用的な使い方を解説します。基本的な使い方については、**[Pandasライブラリの基礎的な使い方]**を参照してください。

## **目次**

1. 欠損値の処理
2. カテゴリ変数の処理
3. 時系列データの処理
4. データの正規化
5. データの可視化

## **1. 欠損値の処理**

### **欠損値の削除**

欠損値が含まれる行や列を削除するには、**`dropna()`**メソッドを使用します。

```
pythonCopy code
data.dropna(axis=0)  # 欠損値が含まれる行を削除
data.dropna(axis=1)  # 欠損値が含まれる列を削除

```

### **欠損値の補間**

欠損値を補間するには、**`fillna()`**メソッドを使用します。

```
pythonCopy code
data.fillna(value)  # 欠損値を特定の値で補間
data.fillna(method="ffill")  # 前の値で補間
data.fillna(method="bfill")  # 後ろの値で補間

```

## **2. カテゴリ変数の処理**

### **ラベルエンコーディング**

ラベルエンコーディングを行うには、**`map()`**メソッドを使用します。

```
pythonCopy code
mapping = {"category1": 1, "category2": 2, "category3": 3}
data["encoded_column"] = data["categorical_column"].map(mapping)

```

### **ワンホットエンコーディング**

ワンホットエンコーディングを行うには、**`get_dummies()`**関数を使用します。

```
pythonCopy code
encoded_data = pd.get_dummies(data, columns=["categorical_column"])

```

## **3. 時系列データの処理**

### **日付・時刻の変換**

文字列形式の日付・時刻をdatetimeオブジェクトに変換するには、**`to_datetime()`**関数を使用します。

```
pythonCopy code
data["datetime_column"] = pd.to_datetime(data["datetime_string"])

```

### **時系列データの抽出**

日付・時刻の情報を抽出するには、**`dt`**アクセサを使用します。

```
pythonCopy code
data["year"] = data["datetime_column"].dt.year
data["month"] = data["datetime_column"].dt.month
data["day"] = data["datetime_column"].dt.day

```

### **時系列データのリサンプリング**

時系列データをリサンプリングするには、**`resample()`**メソッドを使用します。

```
pythonCopy code
data.set_index("datetime_column", inplace=True)
resampled_data = data.resample("D").mean()  # 日単位でリサンプリング

```

## **4. データの正規化**

### **Min-Max正規化**

Min-Max正規化を行うには、次の式を使用します。

```
pythonCopy code
normalized_data = (data - data.min()) / (data.max() - data.min())

```

### **Zスコア正規化**

Zスコア正規化を行うには、次の式を使用します。

```
pythonCopy code
normalized_data = (data - data.mean()) / data.std()

```

## **5. データの可視化**

PandasはMatplotlibと連携して、データフレームから直接グラフを描画する機能を提供しています。

### **折れ線グラフ**

折れ線グラフを描画するには、**`plot()`**メソッドを使用します。

```
pythonCopy code
data.plot(x="datetime_column", y="value_column")

```

### **棒グラフ**

棒グラフを描画するには、**`plot.bar()`**メソッドを使用します。

```
pythonCopy code
data.plot.bar(x="category_column", y="value_column")

```

### **散布図**

散布図を描画するには、**`plot.scatter()`**メソッドを使用します。

```
pythonCopy code
data.plot.scatter(x="column1", y="column2")

```

### **ヒストグラム**

ヒストグラムを描画するには、**`plot.hist()`**メソッドを使用します。

```
pythonCopy code
data["numeric_column"].plot.hist()

```

## **まとめ**

この記事では、Pandasライブラリの応用的な使い方を解説しました。欠損値の処理、カテゴリ変数の処理、時系列データの処理、データの正規化、データの可視化など、これらの応用的な操作をマスターすることで、さらに高度なデータ解析が可能になります。

Pandasは非常に多機能なライブラリであり、その全てをカバーすることは難しいですが、この記事で紹介した機能を使いこなすことで、データ解析の幅が広がります。継続的に実践を重ねることで、Pandasを使ったデータ解析のスキルを磨いていきましょう。
🔗
実践編
マークダウン形式で生成したブログ記事の元データ(実践的なコード例)
# **実践的なコード例**

まず、実践的なコード例を示す前に、ダミーデータを生成します。以下のコードで、日付、カテゴリ、数値データを持つダミーデータフレームを作成します。

```
pythonCopy code
import pandas as pd
import numpy as np

date_rng = pd.date_range(start='2020-01-01', end='2020-12-31', freq='D')
categories = ["A", "B", "C", "D"]

data = {
    "Date": date_rng,
    "Category": np.random.choice(categories, len(date_rng)),
    "Value": np.random.randint(50, 200, len(date_rng)),
    "Temperature": np.random.uniform(0, 100, len(date_rng))
}

df = pd.DataFrame(data)

```

### **欠損値の処理**

ダミーデータにランダムに欠損値を挿入し、欠損値を前方補間(ffill)で処理します。

```
pythonCopy code
np.random.seed(42)
missing_rows = np.random.randint(0, len(df), 10)
df.loc[missing_rows, "Value"] = np.nan

df["Value"].fillna(method="ffill", inplace=True)

```

### **カテゴリ変数の処理**

Category列をワンホットエンコーディングします。

```
pythonCopy code
df_encoded = pd.get_dummies(df, columns=["Category"])

```

### **時系列データの処理**

Date列をインデックスに設定し、月ごとにValue列の平均を計算します。

```
pythonCopy code
df.set_index("Date", inplace=True)
df_monthly_mean = df.resample("M").mean()

```

### **データの正規化**

Temperature列をMin-Max正規化します。

```
pythonCopy code
df["Temperature_normalized"] = (df["Temperature"] - df["Temperature"].min()) / (df["Temperature"].max() - df["Temperature"].min())

```

### **データの可視化**

Value列の月ごとの平均を折れ線グラフで描画します。

```
pythonCopy code
import matplotlib.pyplot as plt

df_monthly_mean["Value"].plot()
plt.xlabel("Month")
plt.ylabel("Average Value")
plt.title("Monthly Average Value")
plt.show()

```

以上のコード例では、ダミーデータを生成し、欠損値の処理、カテゴリ変数の処理、時系列データの処理、データの正規化、データの可視化について実践的な例を示しました。これらの操作を組み合わせることで、実際のデータ解析においても効果的にデータを処理できます。

6️⃣ おわりに

  • 最後までお読みいただきありがとうございます!
  • ChatGPTを使ったブログ記事の生成は記事作成の時短、効率化が期待できます!ぜひ皆様もご活用ください!
  • この記事へのご質問やアドバイスがありましたら、ぜひコメントもお待ちしております。
  • またTwitterでもVBA、Pythonに関するアウトプットをしていますので、🔽フォローいただけますと幸いです😆