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

相关推荐
J***Q29216 小时前
Vue数据可视化
前端·vue.js·信息可视化
咚咚王者17 小时前
人工智能之数据分析 numpy:第十三章 工具衔接与迁移
人工智能·数据分析·numpy
咚咚王者17 小时前
人工智能之数据分析 numpy:第九章 数组运算(二)
人工智能·数据分析·numpy
2501_9417994820 小时前
Python高性能数据可视化与Plotly实战分享:大规模交互图表构建与性能优化经验
信息可视化
数据科学小丫20 小时前
数据分析与FineBI介绍
大数据·数据分析·finebi
可观测性用观测云21 小时前
采集华为云 CCI 日志到观测云最佳实践
数据分析
CodeLongBear1 天前
Python数据分析: 数据可视化入门:Matplotlib基础操作与多坐标系实战
python·信息可视化·数据分析
XINVRY-FPGA1 天前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
老歌老听老掉牙1 天前
Matplotlib Pyplot 数据可视化完全指南
python·信息可视化·matplotlib
程序员鱼皮1 天前
10个免费的网站分析工具,竟然比付费的更香?
后端·程序员·数据分析