數據分析神器PandasAI,幫你高效處理十項常見任務
在數據科學領域,Pandas 一直是數據科學家和分析師的得力工具,它開源且能提供便捷高效的數據操作與分析功能,可以輕松應對各種復雜的數據處理任務,堪稱數據處理界的 “瑞士軍刀”。
如今,一款名為 Pandas AI 的全新 Python 庫誕生,為數據處理帶來新的思路與方式。 Pandas AI 巧妙地將生成式人工智能融入 Pandas,把傳統的數據框操作升級為對話式交互。借助大語言模型,用戶能和數據 “對話” 并獲得結構化回復,即使不懂編程也能處理數據。
Pandas AI 不是要替代 Pandas,而是增強其功能,幫數據從業者探索新方法、簡化數據準備,節省時間精力。
本文介紹 Pandas 的 10 個常見數據處理任務,看看 Pandas AI 如何把編碼操作變為對話交互。
準備工作
在開始Pandas任務之前,讓我們先編寫必要的代碼來運行整個Python程序。
- 安裝包:復制并運行!pip install pandas pandasai
- 導入模塊:由于PandasAI內部調用Pandas進行數據處理,調用OpenAI進行人工智能生成,所以必須導入pandas和pandasai.llm.openai。
import pandas as pd
from pandasai import PandasAI
from pandasai.llm.openai import OpenAI
- 加載OpenAI大語言模型
OPENAI_API_KEY = "{你的API密鑰}"
llm = OpenAI(api_token=OPENAI_API_KEY)
- 創建數據框:在以下演示中,創建了一個包含虛構員工信息的數據框df,信息包括姓名、年齡、性別、職業和薪資。
data = [
[1, "約翰·多伊", 30, "男", "軟件工程師", 100000],
[2, "簡·史密斯", 28, "女", "數據科學家", 95000],
[3, "邁克·約翰遜", 35, "男", "產品經理", 120000],
[4, "艾米麗·戴維斯", 32, "女", "軟件工程師", 105000],
[5, "亞歷克斯·威爾遜", 29, "男", "數據科學家", 90000],
[6, "莎拉·湯普森", 33, "女", "產品經理", 115000],
[7, "大衛·李", 31, "男", "軟件工程師", 102000],
[8, "艾瑪·布朗", 27, "女", "數據科學家", 92000],
[9, "杰森·安德森", 34, "男", "產品經理", 118000],
[10, "索菲·安德森", 30, "女", "數據科學家", 97000],
[11, "艾米麗·米勒", 29, "女", "業務分析師", 85000],
[12, "艾拉·泰勒", 31, "女", "用戶體驗設計師", 95000],
[13, "珍妮·威爾遜", 27, "女", "市場經理", 110000],
[14, "亞當·亞當斯", 33, "男", "項目經理", 105000],
[15, "雅各布·戴維斯", 30, "男", "業務分析師", 88000],
[16, "艾娃·托馬斯", 28, "女", "用戶體驗設計師", 98000],
[17, "本杰明·懷特", 34, "男", "市場經理", 115000],
[18, "米婭·安德森", 32, "女", "項目經理", ],
[19, "洛根·泰勒", 29, "男", "業務分析師", 90000],
[20, "杰克·威爾遜", 31, "男", "用戶體驗設計師", 102000],
[12, "艾拉·泰勒", 31, "女", "用戶體驗設計師", 95000]
]
# 根據數據創建DataFrame
df = pd.DataFrame(data, columns=["id", "name", "age", "gender", "occupation", "salary"])
- 創建PandasAI對象
pandas_ai = PandasAI(llm)
下面使用Pandas AI進行編碼吧。
1.數據選擇
Pandas中的數據選擇是指根據特定條件或標準,從數據框中選擇特定的行和列。在這個例子中,我們想要一個只包含30歲以下人員的數據框。
# 提示
df1 = pandas_ai.run(df, prompt='''
給我一個包含 30 歲以下人員信息的數據框
''', is_conversational_answer=False)
Pandas AI的回復:
2.數據排序
Pandas中的數據排序是指根據一個或多個列中的值,按升序或降序排列數據框中的數據。在這個例子中,要一個按薪資升序排列的數據框。
# 提示
df2 = pandas_ai.run(df, prompt='''
給我一個按薪資升序排列的數據框
''', is_conversational_answer=False)
Pandas AI的回復:
3.數據聚合
Pandas中的數據聚合是指對數據框中的數據進行分組和匯總的過程,以便深入了解數據并得出有意義的結論。在這個例子中,要一個按職業提供平均薪資的數據框。
# 提示
df3 = pandas_ai.run(df, prompt='''
給我一個按職業分組并提供平均薪資的數據框
''', is_conversational_answer=False)
Pandas AI的回復:
4.數據重塑
Pandas中的數據重塑是指改變數據框的布局,使其更適合分析需求,例如通過透視、堆疊或融合數據來創建新的結構。在這個例子中,我們想要一個條形圖,它反映一個透視表,以查看每個職業中的性別差異。
# 提示
df4 = pandas_ai.run(df, prompt='''
繪制一個透視表的柱狀圖,該透視表展示不同職業和性別的人員數量
''', is_conversational_answer=False)
Pandas AI的回復:
5.數據清洗
Pandas中的數據清洗是指通過檢測和處理缺失、重復或錯誤的數據,對數據框進行預處理,使其適合分析。在這個例子中,希望Pandas AI自動填充“米婭·安德森”缺失的薪資數據,并刪除“艾拉·泰勒”的重復行。
# 提示
給我一個滿足以下條件的數據框:
1) 填充缺失數據
2) 刪除重復行
''', is_conversational_answer=False)
Pandas AI的回復:
6.數據合并
Pandas中的數據合并是指根據一個或多個共同列,將兩個或多個數據框合并為一個數據框。在這個例子中,將另外5個人的信息添加到原始數據框中。
# 另一個數據集
data2 = [
[1, "索菲婭·布朗", "女", 28, "數據科學家", 93000],
[2, "簡·史密斯", 28, "女", "數據科學家", 95000],
[3, "米歇爾·陳", 30, "女", "軟件工程師", 100500],
[4, "邁克爾·約翰遜", 35, "男", "產品經理", 120000],
[5, "奧利維亞·威爾遜", 29, "女", "數據科學家", 90000]
]
df2 = pd.DataFrame(data2, columns=["id", "name", "age", "gender", "occupation", "salary"])
# 提示
pandas_ai.run([df,df2], prompt='''
給我一個合并了所有行的數據框
''', is_conversational_answer=False)
Pandas AI的回復:
7.數據轉換
Pandas中的數據轉換是指對數據框的結構或內容進行操作和更改,使其更適合分析,或從數據中獲取有價值的信息。在這個例子中,想將所有數據科學家的薪資翻倍。
# 提示
df7 = pandas_ai.run(df, prompt='''
給我一個將所有數據科學家的薪資翻倍后的數據框
''', is_conversational_answer=False)
Pandas AI的回復:
8.數據描述
Pandas 中的 describe() 方法可通過計算各種統計量(如計數、均值、標準差、最小值和最大值),對數據框分布的集中趨勢、離散程度和形態進行總結。
提示代碼:
df8 = pandas_ai.run(df, prompt='''
用Pandas描述這個數據框
''', is_conversational_answer=False)
Pandas AI 的回復:
9.數據歸一化
Pandas 中的數據歸一化是將數值數據縮放到一個共同范圍(如 0 到 1 之間)的過程,這樣可以消除偏差,使數據更具可比性,便于分析。
在這種情況下,想通過減去均值并除以標準差的方式對薪資數據進行歸一化處理。
提示代碼:
pandas_ai.run(df, prompt='''
給我一個通過減去均值并除以標準差來對每一個薪資數據進行歸一化處理后的數據框
''', is_conversational_answer=False)
Pandas AI 的回復:
10.時間序列分析
Pandas 中的時間序列分析涉及對按時間索引的數據(如每日股票價格或每小時天氣數據)進行分析,以識別模式和趨勢,并根據歷史數據進行預測。
在這種情況下,創建了另一個虛擬數據集,列出了 100 天的隨機數據。Pandas AI 的任務是使用均值函數將數據從按天采樣重采樣為按周采樣。
原始數據集:
import numpy as np
df_t = pd.DataFrame({'Date': pd.date_range('2023-03-07', periods=100), 'Open': np.random.randn(100)})
提示代碼:
pandas_ai.run(df_t, prompt='''
將這個數據框按周頻率進行重采樣,并計算均值
''', is_conversational_answer=False)
Pandas AI 的回復:
? ?
本文轉載自??AI科技論談??,作者:AI科技論談
