返回文章列表

資料分析超簡單?用AI 輔助Python 資料分析

ai 人工智慧 python

你曾經想過,要如何利用人工智慧分析資料嗎?這篇文章將帶你窺探如何利用ChatGPT 與資料直接進行對話,用最簡單的自然語言分析資料,這個過程不需要使用艱澀的程式語法或數學統計,你可以輕鬆的找出資料中潛在的意義

OpenAI 最有名的服務是ChatGPT,我們可以透過對話的介面與AI 交談,我之前有製作一段影片用ChatGPT 撰寫操作Excel 的Python 程式,ChatGPT 能夠取代軟體工程師建立自動化系統嗎?,示範如何使用ChatGPT 撰寫操作Excel 的Python 程式,這段影片就是使用ChatGPT 的對話介面,請AI 幫我們生成操作Excel 的程式碼,然後再複製貼上到程式編輯器上執行程式,但如果我們想要將OpenAI 直接整合到我們的系統,不是複製貼上AI 生成的程式碼,那我們就需要在OpenAI 的官網建立一個API Key ,然後在Python 程式中透過API Key 整合人工智慧的模型,接下來我將會和你介紹一個好用的Python 模組Pandas AI,它可以幫助我們無痛整合人工智慧,讓我們直接與資料進行高階的對話 

 

建立OpenAI API Key

我要先在OpenAI 官網建立一個API Key,透過API Key 我們可以將OpenAI 人工智慧的模型,整合到我們自己的系統,進行資料分析或其他人工智慧的應用

 

建立好API Key 之後,我就可以透過API Key 整合OpenAI 的人工智慧模型,輔助自動化工作系統,你可以參考我設計的Python AI 自動化課程,將Excel, Word 等文書軟體自動化的教學,提高你的工作效率,減少繁瑣的工作流程,接下來我要示範如何使用Python 程式語言,整合OpenAI 的人工智慧模型,與資料對話,進行資料分析

建立API Key 和安裝Pandas AI

請你在開始之前先準備好你的API key,然後使用pip install 安裝pandasai,這是一個將人工智慧與Pandas 結合的模組,我們可以透過簡單的自然語言,與資料進行對話畫出圖表,它可以幫助我們用更直觀的方式操作Pandas

示範資料-四間餐廳來客數

接下來的示範會使用一個外部的CSV 檔進行資料分析,你也可以用同樣的方式匯入Excel 或是串接資料庫中的資料,這個CSV 檔是一個餐廳來客數的資料,記錄了四間餐廳每一天的來客數,這四間餐廳分別是欄位rest1到4,最後一個欄位total 是這四間餐廳的總和,你可以在我Code Gym 的Github帳號下載這份CSV 檔

 

程式碼說明 

我在程式一開始,要先匯入等一下要用的模組,第一個是pandas,然後是pandasai 的類別Agent,最後是我們要使用的語言模型OpenAI,模組匯入完成後,我要宣告一個變數llm,這是一個OpenAI 物件,我在參數api_token ,輸入剛才我設定的環境變數OPENAI_API_KEY,這樣就可以使用你在上面輸入的API key,串接OpenAI 的API 功能,接著我要將剛才介紹的CSV 檔透過Pandas 匯入進來,轉成一個DataFrame,我宣告一個變數df,然後用函式read_csv 讀取CSV 檔,我在函式中輸入檔案的路徑,這樣就可以將檔案讀進來,進行後續的資料操作,如果你要讀取Excel ,只需要將函式改為read_excel 就可以了

import pandas as pd
from pandasai import Agent
from pandasai.llm import OpenAI

# 請輸入你自己的API Key
llm = OpenAI(api_token=os.environ['OPENAI_API_KEY'])
df = pd.read_csv('/Users/Code Gym/RestaurantVisitors.csv')

 

接著我繼續宣告變數agent,這一個Agent 物件,我們在初始化這個物件時需要輸入三個參數,第一個是上面讀進來的資料df,第二個參數是description,這是描述我們資料的內容和欄位定義,這會讓AI 能夠對我們的資料有更好的理解,回覆我們更正確的答案,我在這裡輸入,DataFrame 是一個餐廳來客數的資料,總共有四間餐廳,對應的餐廳名稱分別是rest1, rest2, rest3, rest4,每一筆資料則是日期當天的來客數,最後一個欄位total 是四間餐廳來客數的總和,有了這個描述後,AI 就能夠理解欄位rest1 中紀錄的是一間餐廳的用餐人數,接著我要輸入最後一個參數config,指定語言模型是我剛才在上方設定好的OpenAI物件llm,做到這裡我們就完成了所有的設定,接下來我就可以開始提問,與資料進行溝通

agent = Agent(
    df,
    description='DataFrame 是一個餐廳來客數的資料,總共有四間餐廳,對應的餐廳名稱分別是rest1, rest2, rest3, rest4,\
    每一筆資料則是日期當天的來客數,最後一個欄位total 是四間餐廳來客數的總和',
    config={'llm':llm}
)

 

我先宣告一個變數query1,這是我要提問的問題,我請AI 幫我計算出哪一間餐廳在2016年1月來客數最多,如果我們從資料來看,應該是要先過濾出2016年的數據,然後將四間餐廳的人數加總起來,最後比較哪一間餐廳的來客數最多,才能得出最後的答案,但我我們結合AI 的話,就可以直接將我們想知道的分析結果傳送給AI 就好,接下來我宣告一個變數response1,這是AI 回傳結果的內容,我可以用agent 的函式chat,將問題傳給AI,最後我用print 將AI 回傳後的資料印出來

Pandas-AI 的好處並不只是整合AI 而已,當我們在執行程式之後,程式的目錄夾下會產生一個新的檔案夾,這個名為cache 的檔案夾紀錄了我們與AI 傳遞資料的內容,這可以幫助我們與AI 進行連續性的對話,並且減少重複呼叫API 的次數,因為使用OpenAI 是需要支付費用的,如果重複的問題,就不要再次發問會更省錢,我繼續示範它可以接續前面問題,我宣告一個新的變數query2,我問第二個問題,請告訴我這間餐廳2017年1月的來客數比去年多還是少,我並沒有告訴他是哪一間餐廳,這間餐廳取決於前面找出來的答案,接著我繼續宣告回傳答案的變數response2,然後用函式chat 傳送我第二個問題,最後列印出回傳的結果

query1 = '請幫我計算出哪一間餐廳2016年1月來客數最多'
response1 = agent.chat(query1)
print(response1)

query2 = '請告訴我這間餐廳2017年1月的來客數比去年多還是少'
response2 = agent.chat(query2)
print(response2)

 

完整程式碼

import pandas as pd
from pandasai import Agent
from pandasai.llm import OpenAI

# 請輸入你自己的API Key llm = OpenAI(api_token=os.environ['OPENAI_API_KEY']) df = pd.read_csv('/Users/Code Gym/RestaurantVisitors.csv') agent = Agent( df, description='DataFrame 是一個餐廳來客數的資料,總共有四間餐廳,對應的餐廳名稱分別是rest1, rest2, rest3, rest4,\ 每一筆資料則是日期當天的來客數,最後一個欄位total 是四間餐廳來客數的總和', config={'llm':llm} ) query1 = '請幫我計算出哪一間餐廳2016年1月來客數最多' response1 = agent.chat(query1) print(response1) query2 = '請告訴我這間餐廳2017年1月的來客數比去年多還是少' response2 = agent.chat(query2) print(response2)

 

👉 CSV資料下載

Pandas-AI  更多功能

Pandas-AI 的功能除了這段影片介紹的功能,它還可以結合AI 的輔助,修正我們下的提示語或問題,幫助我們能夠獲得更精準的答案,當我們取得分析結果後,還可以與AI 討論它分析的過程,理解AI 的分析問題的思路,當我們有多筆資料時,Pandas-AI 也能夠合併多個資料來源,執行更複雜的深度分析,最後還能將分析結果繪製成圖表,如果你想進一步學習結合AI 分析資料,可以參考我的Python AI 資料分析課程,這堂課程還會示範如何應用AI,進行股票投資分析,輔助你判斷進場的時機,最後會教你製作一個有介面的AI 資料分析系統,你可以直接透過瀏覽器操作系統,用介面操作會讓你在分析資料的過程更方便,也可以提供給其他同事和夥伴使用,這些教學我都放在Python AI 資料分析課程當中,你可以前往Code Gym 的官網了解課程章節

👉 更多Python AI 資料分析教學

  

Code Gym 致力於創造實用的高品質線上課程,幫助想要學習程式語言和IT技術的朋友,能透過我的課程,學習知識,發揮熱情,創造出屬於你自己的作品

瀏覽所有課程

Code Gym 部落格

科技趨勢和程式教學分享,Code Gym 的部落格將引領您進入無限的學習領域

我為什麼移居到日本福岡?

Nov 18, 2024

困擾你求職之路的「幽靈職缺」

Jul 16, 2024