ChatGPT在数据处理中的应用(一)

简介: ChatGPT在数据处理中的应用(一)

ChatGPT在数据处理中的应用
今天的这篇文章,让我不断体会AI的强大,愿人类社会在AI的助力下走向更加灿烂辉煌的明天。

数据处理是贯穿整个数据分析过程的关键步骤,主要是对数据进行各种操作,以达到最终的分析目的。数据处理主要包括以下几部分。

1.1 概览数据
接下来的操作基于示例表的样例数据展开。这是一个简短的订单明细表,包含订单ID、用户ID、产品ID、订单日期、用户性别、用户年龄这几列。我们先对这份数据进行概览。
image.png
1.1.1 ChatGPT帮我做
来看第一种实现方式。只需把数据传给ChatGPT,并发出明确的操作指令即可。源数据一般是CSV格式的,我们需要将其以文本格式传入ChatGPT。下面我们向ChatGPT输入具体操作和数据集。

image.png

在输入数据时,我们要将CSV文件转换成可以直接输入ChatGPT中的格式。只需将CSV文件用记事本或文本编辑器打开,然后复制粘贴即可。

按照上面的指令,ChatGPT返回如下表所示的结果。
image.png
注:订单日期和用户性别列属于文本型数据,无法进行数值统计。

1.1.2 ChatGPT告诉我
来看第二种实现方式,问ChatGPT用什么工具可以及如何实现某个需求。我们需要把数据结构以及具体需求描述清楚,然后发送给ChatGPT。在Excel中概览数据比较简单,这里不展开了,而主要展示在SQL和Python中如何实现。下面是我们向ChatGPT发送的具体内容。

image.png

ChatGPT收到上述内容以后,返回如下结果。

-- SQL结果
SELECT
    COUNT(order_id) AS non_null_order_id_count,    COUNT(DISTINCT user_id) AS non_null_user_id_count,
    COUNT(DISTINCT product_id) AS non_null_product_id_count,
    AVG(order_date) AS avg_order_date,
    PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY order_date) AS median_order_date,
    MIN(order_date) AS min_order_date,
    MAX(order_date) AS max_order_date,
    AVG(user_age) AS avg_user_age,
    STDDEV(user_age) AS stddev_user_age
FROM
    orders;
import pandas as pd

order_df = pd.read_csv('order.csv')

result = order_df.describe().transpose()

result['non_null'] = order_df.count()
print(result[['non_null', 'mean', '50%','min', 'max', 'std']])


# 运行结果如下:
      non_null          mean      50%      min      max       std
订单ID        10   1005.500000   1005.5   1001.0   1010.0  3.027650
用户ID        10    103.100000    103.0    101.0    106.0  1.663330
产品ID        10  10001.900000  10002.0  10001.0  10003.0  0.875595
用户年龄         9     32.444444     32.0     22.0     45.0  8.560244

Process finished with exit code 0

在SQL结果中,我没有实际去验证。在Python结果中,使用了describe函数,还是很不错的。我们在Python中概览数据时,就是使用该函数。但是describe函数的结果中已经包含了非空值计数,而ChatGPT又单独计算了一次。

1.2 数据预处理
数据预处理主要包括缺失值填充、重复值删除、异常值删除或替换。接下来看看ChatGPT如何帮助我们完成这项工作。

1.2.1 ChatGPT帮我做

image.png
ChatGPT收到上述内容后,给出如下的Python处理代码及结果。

import pandas as pd
import numpy as np

# 创建数据集
data = {
   '订单ID': [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010],
        '用户ID': [101, 102, 103, 104, 105, 106, 101, 102, 103, 104],
        '产品ID': [10001, 10002, 10003, 10001, 10002, 10003, 10001, 10002, 10003, 10001],
        '订单日期': ['2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-02', '2023-04-02', '2023-04-02', '2023-04-02'],
        '用户性别': ['男', '女', '男', '女', '男', '女', '男', '女', '男', '女'],
        '用户年龄': [28, 35, 22, np.nan, 45, 32, 28, 35, 22, 45]}

df = pd.DataFrame(data)

# 找出缺失值并用均值填充
mean_age = df['用户年龄'].mean()
df['用户年龄'] = df['用户年龄'].fillna(mean_age).astype(int)

# 去重
df = df.drop_duplicates()

# 将年龄大于40的值视作异常并替换为40
df.loc[df['用户年龄'] > 40,'用户年龄'] = 40
df.to_excel('order.xlsx',index=False)   # 我个人添加的,其他部分均由ChatGPT生成

image.png
ChatGPT没有输出哪一列有缺失值,而是直接对缺失值进行了填充,并对年龄大于40的值进行了替换。总体而言结果符合要求。

1.2.2 ChatGPT告诉我
来看第二种实现方式,把数据结构以及具体要进行的操作描述清楚,然后发给ChatGPT。关于数据预处理,在Excel中实现起来比较简单,而主要展示在SQL和Python中如何实现。下面是我们向ChatGPT发送的具体内容。

image.png

ChatGPT收到上述内容后,返回如下结果。

Hive SQL 实现
1. 填充缺失值并返回数据集
-- 使用均值填充缺失值
SELECT 
    订单ID,
    用户ID,
    产品ID,
    订单日期,
    用户性别,
    COALESCE(用户年龄, AVG(用户年龄) OVER ()) AS 用户年龄
FROM your_table;

2. 删除重复行后的数据集
-- 删除重复行
CREATE TABLE temp_table AS
SELECT DISTINCT *
FROM your_table;

-- 可选步骤:删除原表,重命名临时表为原表名

3. 替换异常值后的数据集
-- 替换年龄大于40的异常值为40
UPDATE your_table
SET 用户年龄 = 40
WHERE 用户年龄 > 40;
Python 实现
1. 填充缺失值并返回数据集

import pandas as pd

# 读取数据
df = pd.read_csv("your_data.csv")

# 使用均值填充缺失值
df['用户年龄'] = df['用户年龄'].fillna(df['用户年龄'].mean())

2. 删除重复行后的数据集
# 删除重复行
df = df.drop_duplicates()

3. 替换异常值后的数据集
# 替换年龄大于40的异常值为40
df.loc[df['用户年龄'] > 40, '用户年龄'] = 40

在SQL结果中,一个语句就实现了填充功能,其他的功能也都轻松搞定。在Python结果中,准确给出了各个操作的函数代码,还是不错的。可以自行体验一下。

1.3 数据选择
数据选择主要是根据实际需求选择特定的行或列。接下来看看ChatGPT如何帮助我们完成这项工作。

1.3.1 ChatGPT帮我做
看看第一种方式,下面是我们向ChatGPT输入的具体操作和数据集。
image.png

按照上面的指令,ChatGPT给出如下的Python代码及返回如下所示结果。

import pandas as pd

# 创建数据集
data = {
   
    '订单ID': [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010],
    '用户ID': [101, 102, 103, 104, 105, 106, 101, 102, 103, 104],
    '产品ID': [10001, 10002, 10003, 10001, 10002, 10003, 10001, 10002, 10003, 10001],
    '订单日期': ['2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-02', '2023-04-02', '2023-04-02', '2023-04-02'],
    '用户性别': ['男', '女', '男', '女', '男', '女', '男', '女', '男', '女'],
    '用户年龄': [28, 35, 22, None, 45, 32, 28, 35, 22, 45]
}

df = pd.DataFrame(data)

# 找出订单日期为“2023-04-01”的女性用户全部订单
filtered_df = df[(df['订单日期'] == '2023-04-01') & (df['用户性别'] == '女')]
print(filtered_df)

   订单ID  用户ID   产品ID        订单日期 用户性别  用户年龄
1  1002   102  10002  2023-04-0135.0
3  1004   104  10001  2023-04-01NaN
5  1006   106  10003  2023-04-0132.0

可以看到,ChatGPT按照我们的要求完成了任务。

1.3.2 ChatGPT告诉我
看看第二种实现方式。下面是我们向ChatGPT发送的具体内容。

image.png

按照上面的指令,ChatGPT返回如下结果。

SQL 结果:
-- 筛选订单日期为“2023-04-01”的女性用户的全部订单
SELECT *
FROM your_table
WHERE 订单日期 = '2023-04-01' AND 用户性别 = '女';
# Python结果
import pandas as pd
# 假设数据已经存储在名为data的pandas DataFrame中
# 如果需要从CSV文件中读取数据,可以使用如下代码:
# data = pd.read_csv('your_csv_file.csv')

df = pd.DataFrame(data)

# 筛选订单日期为“2023-04-01”的女性用户的全部订单
filtered_df = df[(df['订单日期'] == '2023-04-01') & (df['用户性别'] == '女')]
print(filtered_df)

因为数据选择相关的需求整体比较简单,所以ChatGPT给出的结果都没什么问题。

1.4 数值操作
数值操作主要是对数据进行替换、排序等操作。接下来看看ChatGPT如何帮助我们完成这项工作。

1.4.1 ChatGPT帮我做
看看第一种方式。下面是我们向ChatGPT输入的具体操作和数据集。

image.png

ChatGPT收到上述内容后,返回如下结果。

import pandas as pd

# 创建数据集
data = {
   
    '订单ID': [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010],
    '用户ID': [101, 102, 103, 104, 105, 106, 101, 102, 103, 104],
    '产品ID': [10001, 10002, 10003, 10001, 10002, 10003, 10001, 10002, 10003, 10001],
    '订单日期': ['2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-01', '2023-04-02', '2023-04-02', '2023-04-02', '2023-04-02'],
    '用户性别': ['男', '女', '男', '女', '男', '女', '男', '女', '男', '女'],
    '用户年龄': [28, 35, 22, None, 45, 32, 28, 35, 22, 45]
}

df = pd.DataFrame(data)

# 替换年龄大于40的值为40
df.loc[df['用户年龄'] > 40, '用户年龄'] = 40

# 按订单日期升序排列
df = df.sort_values(by='订单日期')

# 新增一列,内容为该用户的上一笔订单日期
df['上一笔订单日期'] = df.groupby('用户ID')['订单日期'].shift(1)

df.to_excel('帮我做.xlsx', index=False)
# 返回最终结果
print(df)

image.png
可以看到,ChatGPT给出的结果中,年龄已经按要求替换了,订单日期也升序排列了,新的一列也添加成了,而按订单日期升序排列的操作导致新增的这一列看起来有点乱,但结果是正确的。👍👍👍

1.4.2 ChatGPT告诉我
看看第二种方式。下面是我们向ChatGPT发送的具体内容。

image.png

ChatGPT收到上述内容后,返回如下结果。

SQL 结果:
-- 1. 将年龄大于40的值替换成40
UPDATE your_table
SET 用户年龄 = 40
WHERE 用户年龄 > 40;

-- 2. 将数据按照订单日期进行升序排列
SELECT *
FROM your_table
ORDER BY 订单日期 ASC;

-- 3. 新增一列数据,内容为该用户的上一笔订单日期
SELECT *,
       LAG(订单日期) OVER (PARTITION BY 用户ID ORDER BY 订单日期) AS 上一笔订单日期
FROM your_table;

Python 结果

import pandas as pd

data = pd.read_csv('order.csv')
df = pd.DataFrame(data)

# 1. 将年龄大于40的值替换成40
df['用户年龄'] = df['用户年龄'].apply(lambda x: min(x, 40))

# 2. 将数据按照订单日期进行升序排列
df.sort_values(by='订单日期',inplace=True)

# 3. 新增一列数据,内容为该用户的上一笔订单日期
df['上一笔订单日期'] = df.groupby('用户ID')['订单日期'].shift(1)
df.to_excel('帮我做1.xlsx')
print(df)


 订单ID  用户ID   产品ID        订单日期 用户性别  用户年龄     上一笔订单日期
0  1001   101  10001           2023-04-0128.0         NaN
1  1002   102  10002           2023-04-0135.0         NaN
2  1003   103  10003           2023-04-0122.0         NaN
3  1004   104  10001           2023-04-01NaN         NaN
4  1005   105  10002           2023-04-0140.0         NaN
5  1006   106  10003           2023-04-0132.0         NaN
6  1007   101  10001           2023-04-0228.0  2023-04-01
7  1008   102  10002           2023-04-0235.0  2023-04-01
8  1009   103  10003           2023-04-0222.0  2023-04-01
9  1010   104  10001           2023-04-0240.0  2023-04-01

image.png

SQL结果的逻辑基本是准确的。这里主要看第三个操作,刚开始的实现逻辑是借助ROW_NUMBER 函数,比较复杂,经过提示可以直接使用LAG函数以后(过程省略),ChatGPT马上给出了正确的答案。

Python结果的实现方式和代码完全正确。

接下文 ChatGPT在数据处理中的应用(二)https://developer.aliyun.com/article/1620261

相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
163 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
977 14
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
221 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
734 9