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

相关推荐
秀儿还能再秀3 小时前
基于Excel的数据分析思维与分析方法
数据分析·excel
大千AI助手6 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
要努力啊啊啊8 小时前
YOLOv3-SPP Auto-Anchor 聚类调试指南!
人工智能·深度学习·yolo·目标检测·目标跟踪·数据挖掘
好开心啊没烦恼8 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
生态遥感监测笔记8 小时前
GEE利用已有土地利用数据选取样本点并进行分类
人工智能·算法·机器学习·分类·数据挖掘
涤生大数据11 小时前
Apache Spark 4.0:将大数据分析提升到新的水平
数据分析·spark·apache·数据开发
遇雪长安12 小时前
差分定位技术:原理、分类与应用场景
算法·分类·数据挖掘·rtk·差分定位
可观测性用观测云12 小时前
Pipeline 引用外部数据源最佳实践
数据分析
是Dream呀12 小时前
基于连接感知的实时困倦分类图神经网络
神经网络·分类·数据挖掘
大数据CLUB18 小时前
基于spark的奥运会奖牌变化数据分析
大数据·hadoop·数据分析·spark