
数据分析神器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科技论谈
