使用 OpenAI 进行数据探索性分析(EDA)

探索性数据分析(Exploratory Data Analysis, 简称 EDA)是数据分析中不可或缺的环节,帮助分析师快速了解数据的分布、特征和潜在模式。传统的 EDA 通常需要手动编写代码或使用工具完成。现在,通过 OpenAI 的 GPT-4 模型,数据分析师可以快速完成描述性统计、数据可视化和特征工程等任务。本文将通过具体示例,展示如何利用 OpenAI 辅助完成高效的 EDA。


一、自动生成数据集的描述性统计分析

示例场景:

假设你有一个包含客户信息的数据集 customers.csv,其中包含以下字段:

  • age(客户年龄)
  • income(年收入)
  • purchase_frequency(年度购买频次)

我们希望快速生成该数据集的描述性统计信息。

操作步骤:

  1. 加载数据:

    使用 Pandas 加载数据集,并将数据的一部分传递给 GPT-4 进行分析。

    python 复制代码
    import pandas as pd
    
    # 加载数据
    df = pd.read_csv("customers.csv")
    
    # 查看数据前几行
    print(df.head())
  2. 请求 GPT-4 生成描述性统计:

    将数据表头及部分数据传递给 OpenAI 模型,询问模型生成描述性统计。

    python 复制代码
    from openai import ChatCompletion
    
    # 准备 API 请求
    messages = [
        {"role": "system", "content": "You are a data analysis assistant."},
        {"role": "user", "content": f"Please generate descriptive statistics for the following data in Chinese:\n{df.head(10).to_string()}"}
    ]
    
    # 调用 GPT-4 模型
    response = ChatCompletion.create(
        model="gpt-4",
        messages=messages
    )
    
    # 打印结果
    print(response["choices"][0]["message"]["content"])
  3. 结果示例:

    GPT-4 会返回类似以下结果:

html 复制代码
以下是您提供数据的描述性统计:

客户ID (CustomerID):
- 最小值 (Min): 101
- 最大值 (Max): 110
- 平均值 (Mean): 105.5

年龄 (Age):
- 最小值 (Min): 22岁
- 最大值 (Max): 50岁
- 平均值 (Mean): 34.4岁

性别 (Gender):
- 女性 (Female): 5人
- 男性 (Male): 5人

年收入 (Income (USD)):
- 最小值 (Min): 30000美元
- 最大值 (Max): 80000美元
- 平均值 (Mean): 53000美元

购买频率 (PurchaseFrequency (times/year)):
- 最小值 (Min): 6次/年
- 最大值 (Max): 25次/年
- 平均值 (Mean): 15次/年

去年消费(CLastYearSpending (USD)):
- 最小值 (Min): 1000美元
- 最大值 (Max): 5000美元
- 平均值 (Mean): 2510美元

其中,客户 ID (CustomerID)一般不进行统计分析。以上数据分析结果可为您提供用户画像、消费模式等分析所需要的重要依据。

二、数据可视化建议和图表生成

通过数据可视化,我们可以更直观地了解数据分布。使用 OpenAI 可以快速生成可视化建议和对应的代码。

示例场景:

我们希望根据客户的年龄和购买频次绘制散点图,分析两者的关系。

  1. 向 GPT-4 请求可视化建议:

    在交互式工具中输入请求:

    plaintext 复制代码
    我有一个数据集,包含年龄(Age)和购买频次(Purchase Frequency)。你能建议一个合适的可视化方式并提供对应的 Python 代码吗?
  2. GPT-4 的建议:

    GPT-4 会返回以下内容:

    为了分析年龄与购买频次之间的关系,可以使用散点图。以下是 Python 的绘图代码:
    
    python 复制代码
    import matplotlib.pyplot as plt
    
    # 绘制散点图
    plt.figure(figsize=(8, 5))
    plt.scatter(df['Age'], df['purchase_frequency'], alpha=0.7, color='blue')
    plt.title('Age vs Purchase Frequency')
    plt.xlabel('Age')
    plt.ylabel('Purchase Frequency')
    plt.grid(True)
    plt.show()
  3. 执行代码并查看图表:

    运行以上代码,你会看到一个散点图,展示客户年龄与购买频次的关系。

其他图表类型:

你还可以让 GPT-4 根据数据类型推荐合适的图表:

  • 箱线图(Boxplot):用于查看收入分布和离群值。
  • 柱状图(Bar chart):用于统计不同年龄段的用户数量。
  • 热力图(Heatmap):用于显示变量之间的相关性。

三、高效的特征工程和变量选择

特征工程是提升模型性能的重要环节,GPT-4 可以根据数据的特性,自动生成特征工程和变量选择的建议。

示例场景:

我们希望创建一个新特征,用于衡量客户的"购买强度",并自动选择最相关的变量用于后续分析。

  1. 让 GPT-4 提出特征工程建议:

    plaintext 复制代码
    我有以下字段:年龄(Age)、年收入(Income)、购买频次(Purchase Frequency)。你能帮我设计一个新的特征,衡量客户的购买强度吗?
  2. GPT-4 的建议:

    可以创建一个"购买强度"特征,计算公式为:
    Purchase Intensity = Purchase Frequency / Income
    以下是 Python 实现:
    
    python 复制代码
    # 创建购买强度特征
    df['purchase_intensity'] = df['purchase_frequency'] / df['income']
    print(df[['age', 'income', 'purchase_frequency', 'purchase_intensity']].head())
  3. 自动选择相关变量:

    你可以让 GPT-4 基于特征相关性分析推荐关键变量:

    plaintext 复制代码
    请根据以下数据表,分析变量之间的相关性,并推荐最重要的变量用于建模:
    {df.corr().to_string()}
  4. GPT-4 的回答:

    相关性分析结果显示:
    - Purchase Frequency 与 Age 的相关系数为 0.45。
    - Purchase Frequency 与 Income 的相关系数为 -0.3。
    推荐将 Age 和 Purchase Frequency 作为建模的主要变量。
    

总结

通过 OpenAI,数据分析师可以更轻松地完成以下 EDA 任务:

  1. 自动生成描述性统计信息:快速了解数据分布和特性。
  2. 数据可视化建议和代码生成:生成适合数据特性的可视化方案。
  3. 特征工程与变量选择:创建新特征并高效挑选关键变量。

这些功能可以帮助分析师节省大量时间,更专注于业务洞察和决策。如果你想将这些方法应用于实际项目,不妨尝试将 OpenAI 与 Python 的数据分析库结合,探索更多可能性!

附:示例数据(customer.csv)内容:

以下是一个示例数据集 customer.csv,包含客户信息。数据包含多个字段,如客户ID、年龄、性别、年收入、购买频率以及近一年购买金额等。你可以将其复制保存为 CSV 文件,用于数据分析练习。

CustomerID Age Gender Income (USD) PurchaseFrequency (times/year) LastYearSpending (USD)
101 25 Female 35000 12 1500
102 32 Male 45000 20 2500
103 28 Female 50000 15 2200
104 40 Male 75000 8 1800
105 35 Female 62000 25 5000
106 22 Male 30000 18 1300
107 45 Female 80000 10 4000
108 29 Male 55000 22 2700
109 38 Female 47000 14 2100
110 50 Male 60000 6 1000

字段说明:

  • CustomerID:客户的唯一标识。
  • Age:客户年龄(单位:岁)。
  • Gender:客户性别(Male 或 Female)。
  • Income (USD):客户年收入(单位:美元)。
  • PurchaseFrequency (times/year):客户在过去一年中购买商品的次数。
  • LastYearSpending (USD):客户过去一年的总消费金额(单位:美元)。

将数据保存为 customer.csv

将以下内容保存到一个文件中,命名为 customer.csv

csv 复制代码
CustomerID,Age,Gender,Income (USD),PurchaseFrequency (times/year),LastYearSpending (USD)
101,25,Female,35000,12,1500
102,32,Male,45000,20,2500
103,28,Female,50000,15,2200
104,40,Male,75000,8,1800
105,35,Female,62000,25,5000
106,22,Male,30000,18,1300
107,45,Female,80000,10,4000
108,29,Male,55000,22,2700
109,38,Female,47000,14,2100
110,50,Male,60000,6,1000

相关推荐
fanstuck2 小时前
Prompt提示工程上手指南(七)Prompt编写实战-基于智能客服问答系统下的Prompt编写
人工智能·数据挖掘·openai
lovelin+v175030409662 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
道一云黑板报2 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
数据爬坡ing3 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
matlabgoodboy6 小时前
数据分析帮做spss数据代分析stata实证python统计R语言eviews处理
python·数据分析·r语言
云空10 小时前
《解锁 Python 数据挖掘的奥秘》
开发语言·python·数据挖掘
終不似少年遊*12 小时前
pyecharts
python·信息可视化·数据分析·学习笔记·pyecharts·使用技巧
陆沙12 小时前
生物信息学导论-北大-RNA-Seq数据分析
数据分析·生物信息·生信
Watermelo61713 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
落魄君子1 天前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘