大家好,我是Yuan,这篇文章主要是介绍,借助ChatGPT的「代码解释器」,如何进行数据分析。

概述

代码解释器对于经常使用代码和数据的专业人士和爱好者都非常有用,这是一个多功能的工具,可以用于分析数据、创建图表、编辑文件、执行数学运算等等。

代码解释器运行代码并允许上传数据,因此您可以使用它进行数据清理、分析、可视化和许多其他操作。它就像一个触手可及的数据分析师。

听起来太酷了?让我们继续。

我用它来完成一项任务,这可能需要几个小时才能完成。根据您的任务以及对 Python 库的熟悉程度,此任务甚至可能需要更长时间。

使用 ChatGPT,我只需编写几句话并上传两个 CSV 文件。

我将逐步引导您完成整个过程,以及代码解释器在各种任务(例如理解数据、清理和预处理数据以及创建数据可视化)方面的令人印象深刻的表现。

您需要先启用它

为了在聊天中使用代码解释器,您需要首先通过设置启用它。

如何启用代码解释器(作者提供的图片)

现在,当您开始新的聊天时,它就可用了。

任务

我打算创建一个世界地图可视化,用点的大小指示国家/地区,这些点的大小与国家/地区的人口成正比。

我有两个数据集,一个用于国家人口,另一个用于纬度和经度位置。

您可以轻松地在线找到这些数据集。如果没有,我将它们放在我的数据集存储库中。

开始

由于这是一项简单的任务,我没有花太多时间在即时工程上。这是我向 ChatGPT 请求的第一句话:

您可以使用提示窗口左侧的加号来上传数据集。

 使用 + 上传数据集

它首先读取数据集,这是显而易见的事情。还没有令人印象深刻!

# 由代码解释器生成的代码
import pandas as pd 

# 将 CSV 数据加载到 pandas DataFrame中
population_data = pd.read_csv( '/mnt/data/country_population_historic.csv' ) 

# 显示DataFrame的前几行
population_data.head()

然后,ChatGPT 询问国家/地区位置:

我已经有了数据,所以我上传了它:

# 由代码解释器生成的代码
# 加载国家坐标数据
country_coordinates = pd.read_csv( '/mnt/data/country_coordinates.csv' ) 

# 显示前几行
country_coordinates.head()

数据清洗和预处理

读取数据后的下一步是清理和预处理。我相信您已经听过很多次了,这一步通常需要花费最多的时间。

在创建世界地图可视化之前需要处理一些问题。ChatGPT 检测到它们并在不到一分钟的时间内提供了解决方案。相当令人印象深刻!

上面代码片段中的代码:

# 由代码解释器生成的代码
# 检查两个数据帧中的国家/地区名称是否一致
population_countries = set (population_data[ 'Country Name' ]) 
Cocoles_countries = set (country_coordinates[ 'name' ]) 

# 人口数据中但不在人口数据中的国家坐标数据
missing_in_cooperatives = Population_countries - Cocoles_countries 

# 坐标数据中但不在人口数据中的国家
missing_in_population = Cocoles_countries - Population_countries

坐标数据集中缺少一些国家,人口数据集中也缺少一些国家。

ChatGPT 在上面的代码片段中做了什么:

在两个数据集中创建国家/地区名称的 Python 集

  • 单独比较它们以找出集合中的差异
  • ChatGPT 不到一分钟就解决了这个问题:

上面代码片段中的代码:

# 由代码解释器生成的代码
# 将国家/地区名称从人口数据集映射到坐标数据集
country_name_mapping = {
    'Bahamas, The': 'Bahamas',
    'Brunei Darussalam': 'Brunei',
    'Cabo Verde': 'Cape Verde',
    'Congo, Dem. Rep.': 'Congo [DRC]',
    'Congo, Rep.': 'Congo [Republic]',
    "Cote d'Ivoire": "Côte d'Ivoire",
    'Czechia': 'Czech Republic',
    'Egypt, Arab Rep.': 'Egypt',
    'Gambia, The': 'Gambia',
    'Hong Kong SAR, China': 'Hong Kong',
    'Iran, Islamic Rep.': 'Iran',
    "Korea, Dem. People's Rep.": 'North Korea',
    'Korea, Rep.': 'South Korea',
    'Kyrgyz Republic': 'Kyrgyzstan',
    'Lao PDR': 'Laos',
    'Macao SAR, China': 'Macau',
    'Micronesia, Fed. Sts.': 'Micronesia',
    'Myanmar': 'Myanmar [Burma]',
    'North Macedonia': 'Macedonia [FYROM]',
    'Russian Federation': 'Russia',
    'Sao Tome and Principe': 'São Tomé and Príncipe',
    'Slovak Republic': 'Slovakia',
    'Syrian Arab Republic': 'Syria',
    'Turkiye': 'Turkey',
    'Venezuela, RB': 'Venezuela',
    'Yemen, Rep.': 'Yemen',
    'Eswatini': 'Swaziland'
}

#清理人口数据集
population_data_clean = population_data.replace({"Country Name": country_name_mapping})

# 删除坐标数据集中不存在的行
population_data_clean = population_data_clean[population_data_clean['Country Name'].isin(coordinates_countries)]

# 将人口数据与国家坐标数据
merged_data = pd.merge(population_data_clean, country_coordinates, left_on='Country Name', right_on='name')

# 仅保留必要的列
merged_data = merged_data[['Country Name', '2022', 'latitude', 'longitude']]

# 重命名列清晰度
merged_data.columns = ['Country', 'Population', 'Latitude', 'Longitude']

merged_data.head()

清理和预处理的数据

现在我们的数据格式良好且干净。此步骤通常需要花费大量时间和人力。ChatGPT 大约一分钟就完成了。

创建可视化
ChatGPT 首先尝试使用 Matplotlib 库来完成此任务。然而,由于没有世界地图图像,它未能做到这一点:

然后,我只是要求它使用 Plotly,这也是我一开始的想法。

上面代码片段中的代码:

# 由代码解释器生成的代码
importplotly.graph_objects as go

#创建散点地理图
Fig = go.Figure(data=go.Scattergeo( 
    lon = merged_data[ 'Longitude' ], 
    lat = merged_data[ 'Latitude' ], 
    text = merged_data[ '国家' ] + ': ' + merged_data[ '人口' ].astype( str ), 
    mode = '标记' ,
    标记 = dict (
        大小 = (merged_data[ '人口' ] / 1000000 ) ** 0.5 ,  # 取平方根以更好地可视化差异
        sizemode = 'diameter' , 
        sizeref = 1 , 
        sizemin = 4 , 
        color = merged_data[ 'Population' ], 
        colorscale = 'Viridis' , 
        colorbar_title = "Millions" , 
    ) ) 
) 

# 更新布局
Fig.update_layout( 
    title_text = '2022 World Population' , 
    geo = dict ( 
        showframe = False , 
        showcoastlines = True ,
        projection_type = 'equirectangular'
     ) 
) 

Fig.show()

它无法在浏览器中显示交互式世界地图,但成功编写了生成它的代码。我所要做的就是将代码复制并粘贴到 Jupyter 笔记本中。

这是最终结果:

各国人口的交互式世界地图

总结

我们所做的:

  • 读取数据集
  • 清理、预处理并合并它们
  • 创建交互式数据可视化

我们所要做的就是写两个句子(加上告诉 ChatGPT 使用 Plotly)。我认为这非常令人印象深刻!

我还创建了一个存储库,其中包含一个 Jupyter 笔记本,其中包含所有代码片段和使用的数据集。请随意下载并重新生成可视化效果。这也是数据清理的一个好习惯。

本文由mdnice多平台发布


Yuan
1 声望0 粉丝