核心要點
本教程將指導您如何使用Python和OpenAI API對數據進行數據挖掘和分析。
手動分析數據集以提取有用數據,甚至使用簡單的程序執行相同的操作,通常會變得複雜且耗時。幸運的是,借助OpenAI API和Python,可以系統地分析數據集以獲取有趣的信息,而無需過度設計代碼和浪費時間。這可以用作數據分析的通用解決方案,無需使用不同的方法、庫和API來分析不同類型的數據和數據集中的數據點。
讓我們逐步了解如何使用OpenAI API和Python分析您的數據,首先是如何進行設置。
設置
要通過Python使用OpenAI API挖掘和分析數據,請安裝openai和pandas庫:
<code class="language-bash">pip3 install openai pandas</code>
完成此操作後,創建一個新文件夾,並在新文件夾中創建一個空的Python文件。
分析文本文件
在本教程中,我認為讓Python分析英偉達最新的財報電話會議會很有趣。
下載我從The Motley Fool獲得的最新英偉達財報電話會議記錄,並將其移動到您的項目文件夾中。
然後打開您的空Python文件並添加此代碼。
該代碼讀取您下載的英偉達財報記錄,並將其作為transcript變量傳遞給extract_info函數。
extract_info函數將提示和記錄作為用戶輸入傳遞,以及temperature=0.3和model="gpt-3.5-turbo-16k"。它使用“gpt-3.5-turbo-16k”模型的原因是它可以處理此記錄等大型文本。該代碼使用openai.ChatCompletion.create端點獲取響應,並將prompt和transcript變量作為用戶輸入傳遞:
<code class="language-python">completions = openai.ChatCompletion.create( model="gpt-3.5-turbo-16k", messages=[ {"role": "user", "content": prompt+"\n\n"+text} ], temperature=0.3, )</code>
完整的輸入將如下所示:
<code>从文本中提取以下信息: 英伟达的收入 英伟达本季度做了什么 关于人工智能的评论 英伟达财报记录在此处</code>
現在,如果我們將輸入傳遞給openai.ChatCompletion.create端點,完整的輸出將如下所示:
<code class="language-bash">pip3 install openai pandas</code>
如您所見,它返回文本響應以及請求的令牌使用情況,如果您正在跟踪支出和優化成本,這將非常有用。但由於我們只對響應文本感興趣,因此我們通過指定completions.choices[0].message.content響應路徑來獲取它。
如果您運行代碼,您應該會得到與下面引用的內容類似的輸出:
從文本中,我們可以提取以下信息:
- 英偉達的收入:在2024財年第二季度,英偉達報告創紀錄的第二季度收入為135.1億美元,環比增長88%,同比增長101%。
- 英偉達本季度做了什麼:英偉達在各個領域都取得了顯著增長。他們在數據中心部門的收入創下紀錄,環比增長141%,同比增長171%。他們的遊戲部門也實現了增長,收入環比增長11%,同比增長22%。此外,他們的專業可視化部門的收入環比增長了28%。他們還宣布與Snowflake、ServiceNow、埃森哲、Hugging Face、VMware和軟銀等公司建立合作夥伴關係和合作關係。
- 關於人工智能的評論:英偉達強調了對其人工智能平台和加速計算解決方案的強勁需求。他們提到了主要雲服務提供商和消費互聯網公司部署其HGX系統的情況。他們還討論了生成式人工智能在各個行業的應用,例如營銷、媒體和娛樂。英偉達強調了生成式人工智能創造新的市場機遇和提高不同部門生產力的潛力。
如您所見,代碼提取了提示中指定的信息(英偉達的收入、英偉達本季度做了什麼以及關於人工智能的評論)並打印出來。
分析CSV文件
分析財報電話會議記錄和文本文件很酷,但是要係統地分析大量數據,您需要使用CSV文件。
作為一個工作示例,下載此Medium文章CSV數據集並將其粘貼到您的項目文件中。
如果您查看CSV文件,您會看到它具有“作者”、“點贊數”、“閱讀時間”、“鏈接”、“標題”和“文本”列。為了使用OpenAI分析媒體文章,您只需要“標題”和“文本”列。
在您的項目文件夾中創建一個新的Python文件,然後粘貼此代碼。
此代碼與我們用於分析文本文件的代碼略有不同。它逐行讀取CSV,提取指定的信息片段,並將它們添加到新列中。
在本教程中,我選擇了一個Medium文章的CSV數據集,我從Kaggle上的HSANKESARA那裡獲得。此CSV分析代碼將使用CSV文件的“標題”和“文章”列查找每篇文章的整體基調和主要教訓/要點。由於我總是在Medium上遇到點擊誘餌文章,所以我認為讓它通過為每篇文章提供0到3的“點擊誘餌評分”(0表示無點擊誘餌,3表示極度點擊誘餌)來判斷每篇文章的“點擊誘餌”程度也很有趣。
在我解釋代碼之前,分析整個CSV文件將花費太長時間並消耗過多的API積分,因此在本教程中,我使代碼僅使用df = df[:5]分析前五篇文章。
您可能對代碼的以下部分感到困惑,因此讓我解釋一下:
<code class="language-bash">pip3 install openai pandas</code>
此代碼迭代CSV文件中的所有文章(行),並在每次迭代時獲取每篇文章的標題和正文,並將其傳遞給我們之前看到的extract_info函數。然後,它使用以下代碼將extract_info函數的響應轉換為列表以使用此代碼分離不同的信息片段:
<code class="language-python">completions = openai.ChatCompletion.create( model="gpt-3.5-turbo-16k", messages=[ {"role": "user", "content": prompt+"\n\n"+text} ], temperature=0.3, )</code>
接下來,它將每個信息片段添加到列表中,如果出現錯誤(如果沒有值),則將“無結果”添加到列表中:
<code>从文本中提取以下信息: 英伟达的收入 英伟达本季度做了什么 关于人工智能的评论 英伟达财报记录在此处</code>
最後,在for循環結束後,包含提取信息的列表將插入到CSV文件中的新列中:
<code class="language-json">{ "choices": [ { "finish_reason": "stop", "index": 0, "message": { "content": "实际响应", "role": "assistant" } } ], "created": 1693336390, "id": "request-id", "model": "gpt-3.5-turbo-16k-0613", "object": "chat.completion", "usage": { "completion_tokens": 579, "prompt_tokens": 3615, "total_tokens": 4194 } }</code>
如您所見,它將列表添加到名為“Tone”、“Main_lesson_or_point”和“Clickbait_score”的新CSV列中。
然後使用index=False將它們附加到CSV文件中:
<code class="language-python">for di in range(len(df)): title = titles[di] abstract = articles[di] additional_params = extract_info('Title: '+str(title) + '\n\n' + 'Text: ' + str(abstract)) try: result = additional_params.split("\n\n") except: result = {} </code>
必須指定index=False的原因是避免每次將新列附加到CSV文件時都創建新的索引列。
現在,如果您運行Python文件,等待它完成並在CSV文件查看器中檢查我們的CSV文件,您將看到新列,如下圖所示。
如果您多次運行代碼,您會注意到生成的答案略有不同。這是因為代碼使用temperature=0.3為其答案添加一些創造性,這對於點擊誘餌等主觀主題非常有用。
處理多個文件
如果您想自動分析多個文件,則需要首先將它們放在一個文件夾中,並確保該文件夾僅包含您感興趣的文件,以防止您的Python代碼讀取不相關的文件。然後,使用pip3 install glob安裝glob庫,並使用import glob在您的Python文件中導入它。
在您的Python文件中,使用此代碼獲取數據文件夾中所有文件的列表:
<code class="language-python">try: result = additional_params.split("\n\n") except: result = {} </code>
然後將執行分析的代碼放在for循環中:
<code class="language-python">try: apa1.append(result[0]) except Exception as e: apa1.append('No result') try: apa2.append(result[1]) except Exception as e: apa2.append('No result') try: apa3.append(result[2]) except Exception as e: apa3.append('No result')</code>
在for循環中,像這樣讀取文本文件的每個文件的內容:
<code class="language-python">df = df.assign(Tone=apa1) df = df.assign(Main_lesson_or_point=apa2) df = df.assign(Clickbait_score=apa3)</code>
對於CSV文件,也像這樣:
<code class="language-python">df.to_csv("data.csv", index=False)</code>
此外,請確保使用類似以下內容將每個文件分析的輸出保存到單獨的文件中:
<code class="language-python">data_files = glob.glob("data_folder/*")</code>
結論
請記住試驗您的temperature參數並根據您的用例進行調整。如果您希望AI生成更具創造性的答案,請提高temperature值;如果您希望它生成更具事實性的答案,請確保降低它。
OpenAI和Python數據分析的結合除了文章和財報電話會議記錄分析之外還有許多應用。例如包括新聞分析、書籍分析、客戶評論分析等等!也就是說,當在大型數據集上測試您的Python代碼時,請確保僅在完整數據集的一小部分上測試它,以節省API積分和時間。
關於用於Python數據分析的OpenAI API的常見問題 (FAQs)
OpenAI API是一個強大的工具,允許開發人員訪問和利用OpenAI模型的功能。它的工作原理是向API端點發送請求,然後API端點處理請求並返回輸出。 API可用於各種任務,包括文本生成、翻譯、摘要等等。它的設計易於使用,具有簡單的界面和清晰的文檔。
OpenAI API可通過利用其機器學習功能來進行數據分析。例如,您可以使用它來分析文本數據、提取見解和進行預測。您可以使用您的數據向API發送請求,它將返回分析結果。這可以使用Python完成,因為API支持Python集成。
使用OpenAI API進行數據分析具有多種好處。首先,它允許您利用機器學習的強大功能,而無需構建和訓練您自己的模型,從而節省您的時間和資源。其次,它可以處理大量數據並提供可能難以手動獲得的見解。最後,它靈活且可用於各種數據分析任務。
將OpenAI API與Python集成非常簡單。您需要安裝OpenAI Python客戶端,這可以使用pip完成。安裝完成後,您可以在Python腳本中導入OpenAI庫並使用它向API發送請求。您還需要設置您的API密鑰,您可以從OpenAI網站獲取。
OpenAI API可用於各種任務。例如,它可用於文本生成,它可以根據提示生成類似人類的文本。它還可用於翻譯、摘要和情感分析。在數據分析的背景下,它可用於分析文本數據、提取見解和進行預測。
雖然OpenAI API功能強大,但它確實有一些限制。例如,對您每分鐘可以向API發送的請求數量有限制。此外,API不是免費的,如果您正在處理大量數據,成本可能會增加。最後,雖然API通常是準確的,但它並非完美無缺,結果應作為更廣泛的分析策略的一部分使用。
如果您在使用OpenAI API時遇到問題,您可以採取以下幾個步驟。首先,檢查錯誤消息,因為它通常會提供有關問題原因的線索。您還可以參考API文檔,其中提供了有關如何使用API和排除常見問題的詳細信息。如果您仍然遇到問題,您可以聯繫OpenAI社區尋求幫助。
OpenAI API的設計考慮了安全性。發送到API的所有數據都在傳輸過程中進行加密,並且OpenAI制定了嚴格的策略來保護您的數據。但是,與任何在線服務一樣,務必負責任地使用API並遵循數據安全最佳實踐。
是的,您可以將OpenAI API用於商業用途。但是,您應該知道使用API會產生成本,並且您應該查看API的服務條款以確保您預期的用途符合規定。
OpenAI API的未來是光明的。 OpenAI正在不斷改進其模型並擴展API的功能。隨著機器學習和人工智能的不斷發展,我們可以預期API將變得更加強大和多功能。
以上是如何使用OpenAI API在Python中進行數據分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!