暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ChatGPT使用场景:自动数据分析

Coggle数据科学 2023-04-07
244

本文将介绍如何使用ChatGPT进行自动数据分析,使用的工具有matplotlib、seaborn和plotly。

使用建议与心得

在每日通过ChatGPT进行学习和编码的过程中,笔者发现了如下几个规律:

  • ChatGPT生成代码的能力取决于问题的难度,以及原始数据集中类似数据的多少。
  • ChatGPT生成结果的有效性取决于提问模板、给出的例子和背景信息。

因此为了简化问题难度,也为了ChatGPT能理解数据集,并直接写出正确的代码(不需要修改就可以运行),需要让ChatGPT快速数据集的列明和列类型,将数据集进行描述。

下面是分别使用matplotlib、seaborn和plotly进行数据分析样例,ChatGPT输出的代码都可以直接运行。

注明:前提是已经读取了相关数据集。

场景1:使用matplotlib

相关性分析

  • 魔法命令
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,使用matplotlib进行相关性分析的代码

  • ChatGPT输出
import matplotlib.pyplot as plt

# 计算相关系数矩阵
corr_matrix = iris_df.corr()

# 绘制相关系数矩阵热力图
fig, ax = plt.subplots()
im = ax.imshow(corr_matrix, cmap='coolwarm')

# 添加颜色条
cbar = ax.figure.colorbar(im, ax=ax)

# 设置标签
ax.set_xticks(range(len(corr_matrix)))
ax.set_yticks(range(len(corr_matrix)))
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")

# 添加数值标注
for i in range(len(corr_matrix)):
    for j in range(len(corr_matrix)):
        text = ax.text(j, i, round(corr_matrix.iloc[i, j], 2), ha="center", va="center", color="w")

# 设置图表标题
ax.set_title("Correlation Matrix")

# 显示图表
plt.show()

自动分析

  • 魔法命令
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,使用matplotlib中3种方法分析每列与标签的分布关系

  • ChatGPT输出
# 方法1:散点图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].scatter(iris_df['sepal length (cm)'], iris_df['target'])
axs[0, 0].set_xlabel('sepal length (cm)')
axs[0, 0].set_ylabel('target')
axs[0, 1].scatter(iris_df['sepal width (cm)'], iris_df['target'])
axs[0, 1].set_xlabel('sepal width (cm)')
axs[0, 1].set_ylabel('target')
axs[1, 0].scatter(iris_df['petal length (cm)'], iris_df['target'])
axs[1, 0].set_xlabel('petal length (cm)')
axs[1, 0].set_ylabel('target')
axs[1, 1].scatter(iris_df['petal width (cm)'], iris_df['target'])
axs[1, 1].set_xlabel('petal width (cm)')
axs[1, 1].set_ylabel('target')
plt.show()

# 方法2:箱线图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].boxplot(iris_df['sepal length (cm)'], vert=False)
axs[0, 0].set_xlabel('sepal length (cm)')
axs[0, 1].boxplot(iris_df['sepal width (cm)'], vert=False)
axs[0, 1].set_xlabel('sepal width (cm)')
axs[1, 0].boxplot(iris_df['petal length (cm)'], vert=False)
axs[1, 0].set_xlabel('petal length (cm)')
axs[1, 1].boxplot(iris_df['petal width (cm)'], vert=False)
axs[1, 1].set_xlabel('petal width (cm)')
plt.show()

# 方法3:直方图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].hist(iris_df['sepal length (cm)'], bins=20)
axs[0, 0].set_xlabel('sepal length (cm)')
axs[0, 0].set_ylabel('count')
axs[0, 1].hist(iris_df['sepal width (cm)'], bins=20)
axs[0, 1].set_xlabel('sepal width (cm)')
axs[0, 1].set_ylabel('count')
axs[1, 0].hist(iris_df['petal length (cm)'], bins=20)
axs[1, 0].set_xlabel('petal length (cm)')
axs[1, 0].set_ylabel('count')
axs[1, 1].hist(iris_df['petal width (cm)'], bins=20)
axs[1, 1].set_xlabel('petal width (cm)')
axs[1, 1].set_ylabel('count')

场景2:使用seaborn

  • 魔法命令
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,写seaborn中3种方法分析每列与标签的分布关系

  • ChatGPT输出
# 方法1:散点图+气泡图
sns.scatterplot(x='sepal length (cm)', y='target', data=iris_df, hue='target', size='petal length (cm)', sizes=(20, 200))
plt.xlabel('sepal length (cm)')
plt.ylabel('target')
plt.show()

# 方法2:小提琴图
sns.violinplot(x='target', y='sepal length (cm)', data=iris_df)
plt.xlabel('target')
plt.ylabel('sepal length (cm)')
plt.show()

# 方法3:直方图+核密度图
sns.histplot(data=iris_df, x="sepal length (cm)", hue="target", element="step", kde=True)
plt.xlabel('sepal length (cm)')
plt.show()

场景3:使用plotly

  • 魔法命令
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,使用plotly中3种方法分析每列与标签的分布关系

  • ChatGPT输出
# 方法1: scatter plot
fig1 = px.scatter(iris_df, x="sepal length (cm)", y="target", color="target")
fig1.show()

# 方法2: histogram
fig5 = px.histogram(iris_df, x="sepal length (cm)", color="target")
fig5.show()

# 方法3: box plot
fig9 = px.box(iris_df, x="target", y="sepal length (cm)")
fig9.show()

其他指南

  • 缺失值分析
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,使用plotly对数据集进行缺失值分析

  • 探索性分析
数据表 iris_df 存在Pandas中,结构如下
- sepal length (cm), 类型 float64
- sepal width (cm), 类型 float64
- petal length (cm), 类型 float64
- petal width (cm), 类型 float64
- target, 类型 int64

写出Python代码,使用plotly对数据集进行探索性分析

学习交流群已成立

学习竞赛,竞赛组队
添加👇微信拉你进群
加入了之前的社群不需要重复添加~


文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论