引言
在现代商业分析中,数据的收集、处理和可视化是至关重要的。尤其是当你需要从复杂的数据集中提取有用的信息时,AI提示词和Python代码可以显著提高效率。本文将展示如何通过AI提示词生成Python代码来加载和分析大陆洲人口数据,并通过VegaLite进行可视化。我们将深入探讨AI提示词的设计和使用,帮助您更好地理解如何优化数据分析过程,尤其是针对不熟悉代码的商业分析师。
问题描述
在进行全球人口趋势分析时,数据可视化是帮助我们从复杂数据中提取有用信息的关键工具。然而,在处理涉及多个大陆洲的全球人口数据时,现有的图表展示方式仍然存在一些问题。特别是在涉及30个大陆洲分区的情况下,颜色的过多使用使得图表变得难以解读。每个大陆洲都有不同的颜色,这不仅增加了视觉的复杂性,还使得图表难以突出显示我们关注的关键区域——东亚。此外,现有的图表未能有效地对东亚和其他大陆洲之间的差异进行比较,这使得在分析时很难将东亚与其他大陆洲的趋势作直接对比。
解决思路
在实际应用中,我们需要将重点放在东亚上,并通过将其他大陆洲的数据进行分组,简化视觉信息。这不仅可以减少颜色的使用,还能帮助我们更加清晰地观察东亚与其它洲的人口变化趋势。因此,本文将对现有图表进行修改,聚焦东亚并将其他大陆洲合并为一个组。这样一来,图表将更加简洁易懂,并且使得东亚的趋势线更加突出,便于我们进行深入分析和比较。
一、理解AI提示词和Python代码的关系
在数据分析中,AI提示词不仅是引导生成代码的指令,更是帮助AI理解和执行任务的关键。提示词的设计至关重要,因为它直接影响生成代码的准确性和可用性。在本示例中,我们将使用AI提示词来加载和处理大陆洲的人口数据,并通过Python代码实现数据的处理和可视化。
AI提示词的作用
AI提示词在代码生成过程中扮演着指导性角色。例如,提示词要求AI加载一个Excel文件并读取数据,我们需要明确描述数据结构、所需的操作以及期望的输出格式。这些细节将帮助AI准确生成符合要求的Python代码。
二、数据加载与处理:从Excel到DataFrame
首先,我们将加载并处理来自Excel文件的数据。假设我们的数据包含大陆洲人口信息,包括年份和人口数量。这个Excel文件可从前文工作最后生成的df3
数据集导出。我们已上传至附录中的文件19.第3部分、大陆洲人口.xlsx
。
导出DataFrame为Excel
任何Pandas DataFrame变量都可以导出到Python内存文件系统中,作为Excel文件。除了即时浏览表格内容,用户也可以随时下载到本地。
数据示例
在Excel文件中,我们有如下数据:
大陆洲 | Year | Population |
---|---|---|
东亚 | 1960 | 801286908 |
东亚 | 1961 | 796492093 |
东南亚 | 1960 | 215032439 |
东南亚 | 1961 | 221029459 |
通过AI提示词,我们要求AI生成代码来读取这个Excel文件,并将数据存储为Pandas DataFrame。
AI提示词:加载Excel文件并读取数据
我需要从内存文件系统根目录“/”加载一个名为“19.第3部分、大陆洲人口.xlsx”的Excel文件。该文件包含从1960年到2023年各个大陆洲的人口数据,其中第一列是大陆洲名称、第二列是具体年份的人口数量。表格示例参看《大陆洲人口数据示例》。请为pyodide环境生成相应的python代码,使用pandas库读取这个Excel文件,并将其存储到一个名为df的DataFrame中,在代码中注释说明DataFrame的数据结构。
目的
这个提示词的主要目的是要求AI生成代码,以从指定路径加载Excel文件并使用Pandas的read_excel
方法将其读取为DataFrame对象。这个步骤将Excel文件中的数据转化为Python中的数据结构,方便后续处理。
代码解读
AI根据提示词生成了以下Python代码:
df = pd.read_excel('/19.第3部分、大陆洲人口.xlsx')
"""
生成的DataFrame数据结构说明:
列1:大陆洲 (dtype: object)
存储大陆洲名称的字符串,如'东亚'、'东南亚'
列2:Year (dtype: int64)
存储年份的整型数字,范围从1960到2023
列3:Population (dtype: int64 或 float64)
存储对应年份的人口数量,根据数据量级可能为整数或浮点数
"""
这行代码从内存文件系统中读取了名为“19.第3部分、大陆洲人口.xlsx”的Excel文件,并将其加载到名为df
的DataFrame中。接下来,它还注释了DataFrame的数据结构,确保我们对加载的数据有清晰的理解。
三、人口数据的进一步处理
接下来,我们需要根据不同的需求对数据进行处理。比如,合并东亚和其他大陆洲的数据,计算不同大陆洲的总人口数量。
处理步骤:东亚与其他洲的合并
通过AI提示词,我们要求AI将东亚与其他洲的数据分开,后者所有非东亚的大陆洲合并为一个“其它洲”类别。
AI提示词:处理东亚与其他洲的人口数据
我需要从df中将除了东亚之外的所有大陆洲(即“其它洲”)的人口数量加起来,与东亚的数据一起,存储到一个名为df2的DataFrame中。请生成Python代码,在代码中注释说明df2的数据结构。
目的
此提示词要求将东亚的数据与“其它洲”进行合并,后者是指所有非东亚的大陆洲的人口总和。通过对“其它洲”进行分组和求和,我们得到了一个新的DataFrame,命名为df2
。
代码解读
AI根据提示词生成了以下Python代码:
df_east_asia = df[df['大陆洲'] == '东亚'].copy()
df_other = df[df['大陆洲'] != '东亚']
other_sum = df_other.groupby('Year', as_index=False)['Population'].sum()
other_sum['大陆洲'] = '其它洲'
df2 = pd.concat([df_east_asia, other_sum], ignore_index=True)
df[df['大陆洲'] == '东亚']
:筛选出东亚的数据,并保留原始数据结构。df[df['大陆洲'] != '东亚']
:筛选出除了东亚之外的其它大陆洲的数据。groupby('Year', as_index=False)['Population'].sum()
:对其它洲的数据按年份进行分组,并计算每个年份的总人口。df2
:将东亚的数据和其它洲的总和数据合并为一个新的DataFrame。
注释详细说明了df2
的结构,即包含“大陆洲”列(东亚或其它洲)、年份(Year)以及对应的人口数量(Population)。
四、使用VegaLite进行数据可视化
数据处理完成后,我们需要将这些数据可视化,以便更直观地展示人口趋势。VegaLite是一种声明式的可视化语言,适合用于快速生成交互式图表。
绘制人口趋势折线图
通过AI提示词,我们要求AI生成VegaLite的JSON代码,绘制从1960年到2023年间,各大陆洲人口趋势的折线图。
AI提示词:绘制人口趋势图
我已经完成了人口数据的加载和处理。现在,我想使用VegaLite语言绘制一个折线图,展示从1960年到2023年大陆洲的人口趋势线。x轴表示年份(Year),y轴表示人口数量(Population),并根据大陆洲名称进行颜色区分。数据来自df2变量。请生成相应的VegaLite JSON代码。
目的
这个提示词要求生成VegaLite的JSON代码,用于绘制一个折线图,展示从1960年到2023年之间,各大陆洲的人口趋势。x轴为年份,y轴为人口数量,并且不同大陆洲使用不同的颜色表示。
代码解读
AI生成的VegaLite JSON代码如下:
{
"data": {
"values": "df2"
},
"mark": {
"type": "line",
"strokeWidth": 3
},
"encoding": {
"x": {
"field": "Year",
"type": "quantitative"
},
"y": {
"field": "Population",
"type": "quantitative"
},
"color": {
"field": "大陆洲",
"type": "nominal",
"scale": {"scheme": "category10"}
}
}
}
mark: line
:指定图表类型为折线图。x: field: Year
:设置x轴为年份(Year),并指定数据类型为“quantitative”(定量)。y: field: Population
:设置y轴为人口数量(Population),也为“quantitative”类型。color: field: 大陆洲
:根据大陆洲字段对折线图进行颜色区分,使用category10
颜色调色板。
这段代码生成的折线图将展示1960到2023年各大陆洲的人口趋势,并通过不同的颜色区分各大陆洲。VegaLite的强大功能可以轻松实现数据的可视化。
五、计算人口变化量
为了使图表更具可比性,我们进一步计算每年相对于1960年的人口差异。
AI提示词:计算人口变化量
我需要对df2进一步处理(参看《东亚和其它洲的人口统计》),以1960年的人口为基数,计算每年的差别。请生成Python代码,将结果存储到一个名为df3的DataFrame中,在代码中注释说明df3的数据结构。
目的
该提示词要求计算相对于1960年的人口变化量。通过每年的数据与1960年的人口数量进行比较,可以得到各年份的人口变化量,存储到一个名为df3
的DataFrame中。
代码解读
AI生成的Python代码如下:
df3 = df2.sort_values(['大陆洲', 'Year']).copy()
df3['Difference'] = df3.groupby('大陆洲')['Population'].transform(lambda x: x - x.iloc[0])
df3 = df3[['大陆洲', 'Year', 'Difference']].reset_index(drop=True)
df2.sort_values(['大陆洲', 'Year'])
:按大陆洲和年份对数据进行排序,确保每个大陆洲的数据按年份排列。transform(lambda x: x - x.iloc[0])
:通过transform
方法计算每年人口与1960年(即每组数据的第一个值)之间的差异。Difference
:新的列,表示每年相对于1960年的人口变化量。
注释说明了df3
的结构,包括“大陆洲”(大陆洲名称)、“Year”(年份)和“Difference”(相对于1960年的人口差异)。
通过计算每年相对于1960年的人口差异,我们可以更清晰地展示各大陆洲的增长趋势。
六、绘制人口变化图表
接着,生成VegaLite的JSON代码,绘制以1960年为基数的人口变化量折线图。
AI提示词:绘制人口变化量图
我已经完成了人口数据的加载和处理。现在,我想使用VegaLite语言绘制一个折线图,展示从1960年到2023年大陆洲的人口趋势线(以1960年为基数)。x轴表示年份(Year),y轴表示人口变化量(Difference),自动转换为百万/十亿单位,并根据大陆洲名称进行颜色区分,给每条趋势线增加一个标注。数据来自df3变量。请生成相应的VegaLite JSON代码。
目的
这个提示词要求绘制一个折线图,展示以1960年为基数的各大陆洲人口变化量。图表应具备标注功能,能够帮助用户快速识别每条趋势线所代表的大陆洲。
代码解读
AI生成的VegaLite JSON代码如下:
{
"data": {
"values": "df3"
},
"layer": [
{
"mark": {
"type": "line",
"strokeWidth": 2
},
"encoding": {
"x": {
"field": "Year",
"type": "quantitative"
},
"y": {
"field": "Difference",
"type": "quantitative"
},
"color": {
"field": "大陆洲",
"type": "nominal",
"scale": {"scheme": "category10"}
}
}
},
{
"mark": {
"type": "text",
"align": "left",
"dx": 8,
"fontSize": 12,
"fontWeight": "bold"
},
"encoding": {
"x": {"field": "Year", "type": "quantitative"},
"y": {"field": "Difference", "type": "quantitative"},
"text": {"field": "大陆洲"},
"color": {"field": "大陆洲", "type": "nominal"}
},
"transform": [{"filter": "datum.Year == 2023"}]
}
]
}
layer
: 该代码使用VegaLite的图层(layer)功能,结合折线图和文本标注,以便清晰地展示每条趋势线并进行标注。text
: 为每条趋势线添加文本标注,显示大陆洲的名称。
七、总结
本文通过一系列AI提示词和Python代码,展示了如何从Excel中加载并处理大陆洲人口数据,并使用VegaLite生成人口趋势图和变化图。AI提示词的精确设计对于生成高质量代码至关重要,它不仅可以加速数据处理过程,还能帮助商业分析师更直观地理解数据。
通过这些工具,商业分析师可以更高效地进行数据分析和可视化,从而为决策提供有力支持。如果你希望深入了解更多关于AI提示词和数据分析的技巧,欢迎继续关注相关内容!
我们在附录中提供了对应本文工作的交互式文档,您可以用自己的浏览器打开后运行提示词,体会五个提示词流程完成从数据到信息的自动化步骤。