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

embedded/2024/11/24 3:38:29/

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


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

示例场景:

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

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

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

操作步骤:

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

    import pandas as pd# 加载数据
    df = pd.read_csv("customers.csv")# 查看数据前几行
    print(df.head())
    
  2. 请求 GPT-4 生成描述性统计:
    将数据表头及部分数据传递给 OpenAI 模型,询问模型生成描述性统计。

    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 会返回类似以下结果:

以下是您提供数据的描述性统计:客户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 请求可视化建议:
    在交互式工具中输入请求:

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

    为了分析年龄与购买频次之间的关系,可以使用散点图。以下是 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 提出特征工程建议:

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

    可以创建一个“购买强度”特征,计算公式为:
    Purchase Intensity = Purchase Frequency / Income
    以下是 Python 实现:
    
    # 创建购买强度特征
    df['purchase_intensity'] = df['purchase_frequency'] / df['income']
    print(df[['age', 'income', 'purchase_frequency', 'purchase_intensity']].head())
    
  3. 自动选择相关变量:
    你可以让 GPT-4 基于特征相关性分析推荐关键变量:

    请根据以下数据表,分析变量之间的相关性,并推荐最重要的变量用于建模:
    {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 文件,用于数据分析练习。

CustomerIDAgeGenderIncome (USD)PurchaseFrequency (times/year)LastYearSpending (USD)
10125Female35000121500
10232Male45000202500
10328Female50000152200
10440Male7500081800
10535Female62000255000
10622Male30000181300
10745Female80000104000
10829Male55000222700
10938Female47000142100
11050Male6000061000

字段说明:

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

将数据保存为 customer.csv

将以下内容保存到一个文件中,命名为 customer.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


http://www.ppmy.cn/embedded/140020.html

相关文章

【手写一个spring】spring源码的简单实现--容器启动

文章目录 前言applicationContext初始化的前置操作获取扫描路径判断是否是bean对象 前言 今天开启一个新的章节,手写一个简易版的spring,帮助大家对spring能有一个更深层次的理解. 我将分为以下几个章节进行学习: 今天先开启我们的第一个章节:容器启动. applicationContext初…

深度学习:神经网络中的非线性激活的使用

深度学习:神经网络中的非线性激活的使用 在神经网络中,非线性激活函数是至关重要的组件,它们使网络能够捕捉和模拟输入数据中的复杂非线性关系。这些激活函数的主要任务是帮助网络解决那些无法通过简单的线性操作(如权重相乘和偏…

django基于django的民族服饰数据分析系统的设计与实现

摘 要 随着网络科技的发展,利用大数据分析对民族服饰进行管理已势在必行;该平台将帮助企业更好地理解服饰市场的趋势,优化服装款式,提高服装的质量。 本文讲述了基于python语言开发,后台数据库选择MySQL进行数据的存储…

实验室管理智能化:Spring Boot技术实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

wpf 事件转命令的方式

1&#xff0c;方式1 <StackPanel Background"Transparent"><StackPanel.InputBindings><KeyBinding Command"{Binding ChangeColorCommand}"CommandParameter"{Binding ElementNamecolorPicker, PathSelectedItem}"Key"{Bi…

springboot基于微信小程序的农产品交易平台

摘 要 随着网络科技的发展&#xff0c;利用小程序对基于微信小程序的农产品交易平台进行管理已势在必行&#xff1b;该系统将能更好地理解用户需求&#xff0c;优化基于微信小程序的农产品交易平台策略&#xff0c;提高基于微信小程序的农产品交易平台效率和质量。本文讲述了基…

工控HMI界面在工业制造领域,普及度越来越高了。

工控 HMI 界面在工业制造领域的普及度确实越来越高。它以直观的图形和简洁的操作方式&#xff0c;为工人提供了便捷的人机交互体验。 通过 HMI 界面&#xff0c;工人可以轻松监控生产设备的运行状态&#xff0c;及时发现并处理故障。它还能实现参数设置和控制指令的下达&#…

大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…