3

用好这八条ChatGPT指令,高效完成Pandas任务

 1 year ago
source link: https://www.51cto.com/article/757068.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我们都听说过ChatGPT。它不仅受到科技行业的关注,而且在更多广泛的媒体上成为头条新闻。

尽管有一些关于它在较简单任务上的性能和可靠性的批评,但ChatGPT相比较于其他大型语言模型(LLM)在各种任务中表现都很出色,已经成为生产力的重要推动力。

将ChatGPT用于Pandas数据清洗和分析,可以大大提高生产力。本文将分享8个提示示例,介绍如何询问ChatGPT以完成Pandas任务。

第一个提示:定义其角色

首先的提示要确定其作用:

提示:你是一名教我使用Pandas库的Python导师。我将会问你如何使用Pandas执行特定任务,并期望你能向我解释。同时,请在你的解释中给我展示代码。

在开始提问之前,我给出了DataFrame的结构,包括列名和数据类型。

第二个提示

提示:让我先告诉你我所拥有的DataFrame的情况。然后,我将开始提问。以下是以Python字典形式给出的列名和数据类型。键表示列名,值表示数据类型。

{‘store’: dtype(‘O’), ‘product_group’: dtype(‘O’), ‘product_code’: dtype(‘int64’), ‘stock_qty’: dtype(‘int64’), ‘cost’: dtype(‘float64’), ‘price’: dtype(‘float64’), ‘last_week_sales’: dtype(‘int64’), ‘last_month_sales’: dtype(‘int64’)}

这里使用一个由模拟数据准备的样本数据集。你可以从数据集库repo中下载它(https://github.com/SonerYldrm/datasets)。它的名称是sales_data_with_stores.csv。

以下是为你提供的DataFrame,供你参考:

图片

DataFrame的前5行

现在我们可以开始进行Pandas任务了。

提示:告诉我如何计算每个商店上周销售额的平均值。

这是一个简单的一行代码,但如果你刚开始学习Pandas,可能仍然需要一些时间才能弄清楚。以下是ChatGPT给出的答案:

图片

ChatGPT给出的测试代码片段,复制粘贴如下所示。

# 导入pandas
import pandas as pd

# 假设'df'是你的DataFrame
average_sales = df.groupby('store')['last_week_sales'].mean()

ChatGPT还提供了有关代码的执行方式和输出类型的详细解释以及代码。

提示:告诉我如何找到每个商店上个月的总利润。

对于这个任务,ChatGPT需要先弄清楚如何计算利润。让我们看看它的响应:

图片
# 计算每个产品的利润
df['last_month_profit'] = (df['price'] - df['cost']) * df['last_month_sales']

# 计算每个商店的总利润
total_profit = df.groupby('store')['last_month_profit'].sum()

在处理真实世界的数据时,我们经常会遇到缺失值的挑战。测试ChatGPT如何处理不太直接的任务。

提示:库存数量列中有一些缺失值。我想用该商店的平均库存数量替换缺失值。告诉我如何完成这个任务。

图片
# 计算每个商店的平均库存数量
average_stock_qty_per_store = df.groupby('store')['stock_qty'].transform('mean')

# 用该商店的平均库存数量替换'stock_qty'中的缺失值
df['stock_qty'].fillna(average_stock_qty_per_store, inplace=True)

有多种方法可以解决这个任务,使用transform函数是其中一种较为有效的方式。

transform函数很重要,使用transform函数来完成此任务的理由如下:

transform函数与apply函数类似,但与apply函数不同,transform函数可以返回与输入大小相同的Series,这使得它在执行矢量化操作和广播时非常有用,特别是与groupby对象一起使用时。

提示:告诉我如何找到每个店铺上个月销量额最高的前三种产品。

图片
# 首先,按'store'和'last_month_sales'对DataFrame进行排序
df_sorted = df.sort_values(['store', 'last_month_sales'], ascending=[True, False])

# 然后,按'store'分组,并使用apply方法选择每个组的前3行
top_3_products = df_sorted.groupby('store').head(3)

它首先对整个DataFrame进行排序。我们也可以在每个组内进行排序。让我们看看ChatGPT是否知道该如何做到这一点。

提示:是否有另一种方法可以在不先对DataFrame进行排序的情况下完成此任务?

图片
def top_3_products(group):
    return group.nlargest(3, 'last_month_sales')

top_3_df = df.groupby('store').apply(top_3_products)

需要注意的是,首先对整个DataFrame进行排序可能是更高效的方法。此示例只是想观察ChatGPT是否能提供不同的解决方案。

提示:我想看到每个商店的上周表现与上月表现进行比较。

这是一个简单的任务,但提示并没有直接告诉ChatGPT如何完成。让我们看看它的表现如何。

图片
# 计算上周和上个月每个店的总销售额
total_sales_last_week = df.groupby('store')['last_week_sales'].sum()
total_sales_last_month = df.groupby('store')['last_month_sales'].sum()

# 创建一个新的DataFrame来存储这些信息
performance_df = pd.DataFrame({
    'LastWeekSales': total_sales_last_week,
    'LastMonthSales': total_sales_last_month,
})

# 计算从上个月到上周销售额的变化
performance_df['SalesChange'] = performance_df['LastWeekSales'] - (performance_df['LastMonthSales'] / 4)

作为对上周与上月的表现相比较的反应,它找到了上周销售额与上月销售额四分之一之间存在差异,这是非常合理的。

它创建的DataFrame如下所示:

图片

提示:创建一个名为critical_stock的新列,如果stock_qty小于500,则取值为1,否则取值为0。

ChatGPT为这个任务给出了3个选项,以下是我更喜欢的两个:

图片
# 第一种选项
df['critical_stock'] = df['stock_qty'].apply(lambda x: 1 if x < 500 else 0)

# 第二种选项
import numpy as np

df['critical_stock'] = np.where(df['stock_qty'] < 500, 1, 0)

提示:以大小、缺失值、数据类型和列统计信息的形式创建一个DataFrame的摘要。

用于总结DataFrame的函数和方法非常简单,但ChatGPT在整理它们时做得非常好,排版整洁明了。

如下的是ChatGPT生成的代码:

# 导入必要的库
import pandas as pd

# DataFrame大小
print("DataFrame Size:")
print(df.shape)
print("\n")

# 缺失值
print("Missing Values:")
print(df.isnull().sum())
print("\n")

# 数据类型
print("Data Types:")
print(df.dtypes)
print("\n")

# 列统计信息
print("Column Statistics:")
print(df.describe(include='all'))

以上示例展示了ChatGPT如何在数据分析中,尤其是在Pandas中,革命性地改变了常见任务的完成方式。它不仅提高效率,还丰富了我们对Pandas中可以完成的复杂操作的理解。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK