接上文 ChatGPT在数据处理中的应用(一)https://developer.aliyun.com/article/1620262
1.5 数值运算
数值运算主要是对数据进行算术运算、比较运算、汇总运算等操作。接下来看看ChatGPT如何帮助我们完成这项工作的。
1.5.1 ChatGPT帮我做
看看第一种实现方式。下面是我们向ChatGPT输入的具体操作和数据集。
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)
# 1. 将订单ID列和产品ID列进行相加,生成新的一列
df['相加结果'] = df['订单ID'] + df['产品ID']
# 2. 对用户ID进行非重复值计数
non_duplicate_count = df['用户ID'].nunique()
# 返回结果
print("添加相加结果的数据集:")
print(df)
print("\n用户ID的非重复值计数结果:", non_duplicate_count)
# 运行结果
添加相加结果的数据集:
订单ID 用户ID 产品ID 订单日期 用户性别 用户年龄 相加结果
0 1001 101 10001 2023-04-01 男 28.0 11002
1 1002 102 10002 2023-04-01 女 35.0 11004
2 1003 103 10003 2023-04-01 男 22.0 11006
3 1004 104 10001 2023-04-01 女 NaN 11005
4 1005 105 10002 2023-04-01 男 45.0 11007
5 1006 106 10003 2023-04-01 女 32.0 11009
6 1007 101 10001 2023-04-02 男 28.0 11008
7 1008 102 10002 2023-04-02 女 35.0 11010
8 1009 103 10003 2023-04-02 男 22.0 11012
9 1010 104 10001 2023-04-02 女 45.0 11011
用户ID的非重复值计数结果: 6
可以看到,ChatGPT按照我们的要求完成了任务。
1.5.2 ChatGPT告诉我
看看第二种方式。下面是我们向ChatGPT发送的具体内容。
ChatGPT收到上述内容以后,返回如下结果。
# SQL结果
-- 1. 将订单ID列和产品ID列进行相加,生成新的一列
ALTER TABLE your_table ADD COLUMN 相加结果 INT;
UPDATE your_table SET 相加结果 = 订单ID + 产品ID;
-- 2. 对用户ID进行非重复值计数,返回计数结果
SELECT COUNT(DISTINCT 用户ID) AS 非重复用户数
FROM your_table;
# Python结果
import pandas as pd
data = pd.read_csv('order.csv')
df = pd.DataFrame(data)
# 1. 将订单ID列和产品ID列进行相加,生成新的一列
df['相加结果'] = df['订单ID'] + df['产品ID']
# 2. 对用户ID进行非重复值计数,返回计数结果
non_duplicate_count = df['用户ID'].nunique()
# 返回结果
print("添加相加结果的数据集:")
print(df)
print("\n用户ID的非重复值计数结果:", non_duplicate_count)
上述SQL和Python的实现逻辑都是正确的。因为数值运算整体比较简单,所以这里就不举更多例子了,大家可以根据实际的业务需求进行调整。
1.6 数据分组
数据分组是按照某些维度先对数据进行分组,再对分组后的数据进行汇总运算。接下来看看ChatGPT如何帮助我们完成这项工作。
1.6.1 ChatGPT帮我做
看看第一种方式。下面是我们向ChatGPT输入的具体操作和数据集。
ChatGPT收到上述内容后,返回如下结果。
可以看到,ChatGPT按照我们的要求完成了任务。
1.6.2 ChatGPT告诉我
看看第二种实现方式。下面是我们向ChatGPT发送的具体内容。
ChatGPT收到上述内容后,返回如下结果。
SQL 结果
-- 计算男性和女性的订单数
SELECT 用户性别, COUNT(订单ID) AS 订单数
FROM your_table
GROUP BY 用户性别;
-- 计算男性和女性的用户数
SELECT 用户性别, COUNT(DISTINCT 用户ID) AS 用户数
FROM your_table
GROUP BY 用户性别;
# Python结果
import pandas as pd
data = pd.read_csv('order.csv')
df = pd.DataFrame(data)
# 计算男性和女性的订单数
order_counts = df['用户性别'].value_counts()
# 计算男性和女性的用户数
user_counts = df.groupby('用户性别')['用户ID'].nunique()
# 返回结果
print("男性和女性各自的订单数:")
print(order_counts)
print("\n男性和女性各自的用户数:")
print(user_counts)
# 运行结果如下:
男性和女性各自的订单数:
男 5
女 5
Name: 用户性别, dtype: int64
男性和女性各自的用户数:
用户性别
女 3
男 3
Name: 用户ID, dtype: int64
上述SQL和Python的实现逻辑都是正确的
1.7 时间序列分析
时间序列分析的操作主要时间格式互换、时间索引、时间运算等。接下来看看ChatGPT如何帮助我们完成这项工作。
1.7.1 ChatGPT帮我做
看看第一种方式。下面是我们向ChatGPT输入的具体操作和数据集。
ChatGPT收到上述内容后,返回如下所示结果。
1.7.2 ChatGPT帮我做
看看第二种方式,下面我们向ChatGPT发送的具体内容。
ChatGPT收到上述内容后,返回如下结果。
SQL 结果
-- 1. 提取订单日期中的日部分,存储在新的一列中
ALTER TABLE your_table ADD COLUMN 日部分 STRING;
UPDATE your_table SET 日部分 = SUBSTR(订单日期, 9, 2);
-- 2. 将订单日期向前滑动30天,存储在新的一列中
ALTER TABLE your_table ADD COLUMN 减去30天日期 STRING;
UPDATE your_table SET 减去30天日期 = FROM_UNIXTIME(UNIX_TIMESTAMP(订单日期) - 30*24*60*60, 'yyyy-MM-dd');
-- 3. 将订单日期为“2023-04-01”的数据筛选出来
SELECT *
FROM your_table
WHERE 订单日期 = '2023-04-01';
# Python结果
'''import pandas as pd
from datetime import timedelta
# 读取数据集
data = pd.read_csv("order.csv")
# 提取订单日期中的日部分
data['日'] = pd.to_datetime(data['订单日期']).dt.day
# 将订单日期转换为日期类型
data['订单日期'] = pd.to_datetime(data['订单日期'])
# 向前滑动30天
data['提前30天'] = data['订单日期'] - timedelta(days=30)
# 筛选订单日期为“2023-04-01”的数据
filtered_data = data[data['订单日期'] == '2023-04-01']
# 打印结果
filtered_data.to_excel('筛选完.xlsx')'''
import pandas as pd
data = pd.read_csv('order.csv')
df = pd.DataFrame(data)
# 1. 提取订单日期中的日部分,存储在新的一列中
df['日部分'] = df['订单日期'].str[-2:]
# 2. 将订单日期向前滑动30天,存储在新的一列中
df['减去30天日期'] = pd.to_datetime(df['订单日期']) - pd.DateOffset(days=30)
# 3. 将订单日期为“2023-04-01”的数据筛选出来
filtered_data = df[df['订单日期'] == '2023-04-01']
# 返回结果
print("提取订单日期中的日部分和减去30天日期后的数据集:")
print(df[['订单ID', '用户ID', '产品ID', '订单日期', '用户性别', '用户年龄', '日部分', '提前30天']])
print("\n订单日期为'2023-04-01'的数据:")
print(filtered_data)
# 运行结果
订单日期为'2023-04-01'的数据:
订单ID 用户ID 产品ID 订单日期 用户性别 用户年龄 日部分 提前30天
0 1001 101 10001 2023-04-01 男 28.0 1 2023-03-02
1 1002 102 10002 2023-04-01 女 35.0 1 2023-03-02
2 1003 103 10003 2023-04-01 男 22.0 1 2023-03-02
3 1004 104 10001 2023-04-01 女 NaN 1 2023-03-02
4 1005 105 10002 2023-04-01 男 45.0 1 2023-03-02
5 1006 106 10003 2023-04-01 女 32.0 1 2023-03-02
上述SQL和Python的实现逻辑都是正确的。