使用 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

相关推荐
小研学术5 小时前
如何用AI辅助数据分析及工具推荐
论文阅读·人工智能·ai·数据挖掘·数据分析·deepseek
qq_436962185 小时前
AI数据分析与BI可视化结合:解锁企业决策新境界
人工智能·数据挖掘·数据分析
lilye665 小时前
精益数据分析(11/126):辨别虚荣指标,挖掘数据真价值
大数据·人工智能·数据分析
赵钰老师7 小时前
【大语言模型DeepSeek+ChatGPT+python】最新AI-Python机器学习与深度学习技术在植被参数反演中的核心技术应用
人工智能·arcgis·语言模型·chatgpt·数据分析
穆易青9 小时前
2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解
信息可视化
Conan х10 小时前
第1 篇:你好,时间序列!—— 开启时间数据探索之旅
人工智能·python·神经网络·机器学习·信息可视化
石榴花专场11 小时前
分类算法中one-vs-rest策略和one-vs-one 策略的区别是什么?
人工智能·python·机器学习·数据挖掘
带娃的IT创业者12 小时前
《AI大模型应知应会100篇》第30篇:大模型进行数据分析的方法与局限:从实战到边界探索
人工智能·数据挖掘·数据分析
Cachel wood12 小时前
Mysql相关知识2:Mysql隔离级别、MVCC、锁
数据库·python·sql·mysql·中间件·数据分析·django
想看雪的瓜14 小时前
Origin将双Y轴柱状图升级为双向分组柱状图
信息可视化