iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
生成式 AI

LLM與生成式AI筆記系列 第 23

Day22: 使用ChatGPT,Gemini或類似服務對資料集進行清理

  • 分享至 

  • xImage
  •  

1.直接詢問:

Yes
How to Use ChatGPT for Data cleaning and Analysis

使用 ChatGPT 進行資料清理和分析的完整指南

影片介紹

這段影片由 Cobalt Intelligence 的 Jordan Hansen 主持,主要討論如何使用 ChatGPT 來進行資料清理和分析。Hansen 認為這是 ChatGPT 最實用的應用之一,尤其適合從事資料分析的專業人員,因為它能夠有效地處理和清理大量數據,省去傳統手動處理數據的繁瑣工作。

主要內容

  1. 介紹 ChatGPT 的應用場景

    • Hansen 開場強調,使用 ChatGPT 進行資料清理是非常方便的,尤其適合需要處理大量數據、清理數據或移除雜質的情況。
    • 他表示,這對於任何資料分析角色都非常有幫助,特別是在處理龐大的數據集時,ChatGPT 能快速清理並去除不必要的內容。
  2. 示範如何使用 ChatGPT 生成和處理數據

    • Hansen 提供了一個使用 ChatGPT 生成商業數據的範例。他要求 ChatGPT 生成一個包含 1,200 行的 CSV 檔案,其中包括地址、聯絡人姓名和職位等資訊。ChatGPT 不僅快速完成了生成,還能確保每一行數據都是唯一的,避免重複出現相同的名稱。
    • 他提到,過去手動生成或清理這樣的數據非常麻煩,但現在使用 ChatGPT 可以輕鬆實現。
  3. 處理重複數據的案例

    • Hansen 展示了一個擁有重複商業資料的電子表格,並說明如何利用 ChatGPT 清理重複項。他將這些數據上傳到 ChatGPT,並要求它移除所有基於公司名稱的重複項目,然後生成一個可以下載的新 CSV 檔案。
    • ChatGPT 自動執行此任務,並在過程中提供一個包含 25 行樣本的簡單預覽。這大大減少了傳統使用 Excel 或編寫腳本來手動去除重複項的麻煩。
  4. 進一步的數據分析和互動

    • Hansen 表示,使用 ChatGPT 進行資料分析就像和資料分析師進行對話一樣。他舉例說明如何詢問 ChatGPT 例如「有多少公司位於奧克拉荷馬州」以及「其中有多少位 CFO」,並由 ChatGPT 自動運行程式碼來回應這些問題。
    • ChatGPT 能夠即時進行資料分析,例如根據地理位置計數公司數量,並提供相應的結果。
  5. 建立圖表

    • Hansen 也嘗試使用 ChatGPT 來生成線圖,以顯示各州的公司數量分佈。儘管他承認自己此前沒有使用過這項功能,但仍希望測試其效果。雖然過程中遇到一些技術挑戰(如字體緩存建置),但 ChatGPT 表現出強大的數據處理能力。

總結

影片總結了使用 ChatGPT 作為資料分析工具的幾個優勢。Hansen 認為,ChatGPT 可以有效處理和清理數據,快速執行傳統上需要大量手動操作的工作。雖然圖表生成功能還不完全成熟,但 ChatGPT 已經能夠擔任數據分析師的角色,透過簡單的互動即可完成資料處理和分析的任務。

這段教學對於那些希望提升數據處理效率和使用 AI 進行自動化分析的企業來說,提供了實際的操作指南和應用場景。

2.參考傳統的作法並結合llm 的api:

以使用Kaggle 數據集為例

步驟 1:瞭解數據集和工作環境設定

  • 前往 Kaggle 數據集 下載 nlp-with-disaster-tweets-cleaning-data 數據集。

  • 瀏覽數據集的描述,了解數據集的特徵(如文本、標籤、ID 等)以及數據清理的目標。

  • 準備一個 Python 環境,建議使用 Jupyter Notebook 進行數據清理的實驗。

  • 安裝所需的庫,如 Pandas、NumPy、NLTK、Scikit-learn 等,用於數據處理和分析。

pip install pandas numpy nltk scikit-learn openai

步驟 2:數據探索

  • 使用 Pandas 讀取數據集,進行初步的探索性數據分析 (EDA)。
  • 檢查數據的缺失值、異常值和數據分佈情況。
import pandas as pd

# 讀取數據集
data = pd.read_csv('disaster_tweets_clean.csv')
print(data.head())

# 檢查缺失值
print(data.isnull().sum())

# 查看數據統計信息
print(data.describe())

步驟 3:資料清理

  • 文本正規化:去除特殊字符、標點符號、URL、@標記等。
  • 去除停用詞:使用 NLTK 或其他語言處理工具來去除停用詞。
  • 詞形還原和詞幹提取:將單詞轉換為其基本形式或根形式。
import re
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

# 初始化
lemmatizer = WordNetLemmatizer()
stop_words = set(stopwords.words('english'))

def clean_text(text):
    # 去除URL
    text = re.sub(r'http\S+', '', text)
    # 去除@標記
    text = re.sub(r'@\w+', '', text)
    # 去除非字母字符
    text = re.sub(r'[^a-zA-Z\s]', '', text)
    # 轉換為小寫
    text = text.lower()
    # 去除停用詞和詞形還原
    text = ' '.join([lemmatizer.lemmatize(word) for word in text.split() if word not in stop_words])
    return text

# 應用到整個數據集中
data['cleaned_text'] = data['text'].apply(clean_text)
print(data['cleaned_text'].head())

步驟 4:使用 Gemini 和 ChatGPT 進行自動化數據清理

  • 可以將一些清理任務自動化,例如標籤噪聲數據或分類文本。
  • 使用 OpenAI 的 API 將數據傳送到 GPT 模型進行清理建議,特別是語義清理。
import openai

openai.api_key = 'your_openai_api_key'

def get_cleaning_suggestions(text):
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=f"清理以下文本數據:'{text}' 並提供建議。",
        max_tokens=100
    )
    return response.choices[0].text.strip()

# 示例:對單個文本進行清理建議
example_text = data['text'][0]
suggestions = get_cleaning_suggestions(example_text)
print(f"原始文本: {example_text}")
print(f"清理建議: {suggestions}")

步驟 5:測試和驗證清理效果

  • 使用圖表和統計數據來展示清理前後數據的變化。
  • 可以在文件中包含一些代碼片段以說明如何進行每個步驟。
  • 測試清理後的數據,確保沒有遺漏重要信息或引入新的錯誤。
  • 使用清理後的數據進行簡單的分類或情感分析,以評估清理的效果。

3.參考傳統的作法,LLM 給出的流程:

1. 一開始便是測驗以及調整你從網路上找的方法以及LLM 給出的方法和流程,並把最適合這份資料或方案的方法固定成程式碼。

2. trouble shoot 或是 各式各樣沒考慮到的意外狀況可以透過調用 LLM API 以及 Prompt 試著讓模型給出程式碼處理, 假如LLM 能順利處理變紀錄過程並固化成程式碼。

程式碼上code 跟寫test case 或相關的流程也有一部分是可以使用LLM 輔助的,應該吧?

3. 最後不行的話就是使用傳統的程式開發方法以及code copilot 慢慢debug.

另外關於在資料預處理或調用 LLM API 導致的公司資料外洩這一點,可能再傳給chat bot 或調用LLM API時,就要使用一些方法去除或加密一些敏感或重要的資料就是了,這個我目前就沒啥想法。


上一篇
Day21: (Customer Personality Analysis)(客戶分群)使用Chatgpt以及gemini
下一篇
Day 23: 什麼是 RAG?
系列文
LLM與生成式AI筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言