查看原文
其他

怎么用 AI 快速制作数据可视化图表?

林骥 林骥
2024-09-28
你好,我是林骥。
在这个数据驱动的时代,数据分析已经成为一项不可或缺的能力。
数据可视化图表作为数据分析的一个重要组成部分,能够帮助我们更加直观地理解数据,发现数据背后的规律和趋势。
在数据分析领域,尽管一些传统的软件功能很强大,但它们往往伴随着较高的学习门槛。
然而,随着人工智能(AI)技术的发展,这一局面得到了显著改善,因为 AI 能够耐心地指导我们,极大地降低了学习的难度。
例如,若想快速制作一批数据可视化图表,我们可以给 AI 发送以下提示词:
角色(Role):你是一位数据分析专家,主要基于 Anaconda 平台中的 JupyterLab 进行数据分析,能够熟练运用 Python 处理和分析数据,快速制作专业的数据可视化图表。

任务(Task):我是一个数据分析新手,已经创建好了一个基于 Anaconda 的数据分析环境,接下来想要快速制作一批数据可视化的图表。

要求(Format):请你帮我用 Python 随机生成一个客户销售的数据集,其中包括客户姓名、性别、年龄、所在省份、最近购买时间、累计购买次数、累计购买金额,累计购买金额与次数的比例关系要合理。请教我怎么根据上面这个数据集,制作一批专业的数据可视化图表,要用中文显示标题和坐标轴标签,提前做好相关的设置,避免 Python 代码运行出错,详细介绍一步一步操作的方法。

如果你还没有搭建基于 Anaconda 的数据分析环境,可以扫描文末的二维码,订阅「数据化分析案例库」,查看怎么用 AI 创建高效的数据分析环境。

你可以对比不同 AI 的回复结果,并尝试在本地电脑的工作环境中运行,以选择一个相对较好的解决方案。

如果在运行过程中出现错误,那么只要把错误的信息发给 AI,它就会帮你修正错误。
例如:

虽然上面修正之后的代码可以正常运行,但是我想把客户性别分布换成饼图,而且发现其中累计购买金额与次数的比例不大合理,因此我把自己的想法和发现告诉了 AI,请 AI 给我具体修改的方法。
如果一个 AI 提供的方法始终不奏效,那么不妨换一个 AI 试试,比如:智谱清言、Kimi、文心一言、通义千问、ChatGPT、Gemini 等,都可以去探索和尝试,这也是一个积累经验的过程,相信你总能找到合适的 AI 模型,最终得到自己想要的结果。
例如,我经过与 AI 沟通了几次之后,把 Python 代码修改为:
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom faker import Fakerfrom datetime import datetime, timedelta
# 设置中文显示plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 创建数据生成器fake = Faker('zh_CN')
# 设置随机种子以确保可重复的结果np.random.seed(0)fake.random.seed(0)
# 生成数据集data = { '客户姓名': [fake.name() for _ in range(100)], '性别': [fake.random.choice(['男', '女']) for _ in range(100)], '年龄': np.random.randint(18, 70, size=100), '所在省份': [fake.province() for _ in range(100)], '最近购买时间': [fake.date_between(start_date='-2y', end_date='today') for _ in range(100)], '累计购买次数': np.random.randint(1, 20, size=100), '累计购买金额': np.random.normal(loc=1000, scale=500, size=100) # 假设平均每次购买金额为1000元,标准差为500元}
# 累计购买金额与累计购买次数的合理比例data["累计购买金额"] = [round(times * np.random.uniform(500, 800), 2) for times in data["累计购买次数"]]
# 创建 DataFramedf = pd.DataFrame(data)
# 转换日期格式df['最近购买时间'] = pd.to_datetime(df['最近购买时间'])
# 计算累计购买金额与次数的比例df['购买金额/次数'] = df['累计购买金额'] / df['累计购买次数']
# 数据可视化# 1. 性别分布gender_distribution = df['性别'].value_counts()plt.figure(figsize=(8, 8))plt.pie(gender_distribution, labels=gender_distribution.index, autopct='%1.1f%%', colors=['#5799c6', '#e7b362'])plt.title('客户性别分布')plt.show()
# 2. 年龄分布sns.histplot(df['年龄'], kde=False)plt.title('客户年龄分布')plt.xlabel('年龄')plt.ylabel('数量')plt.show()
# 3. 购买次数分布sns.histplot(df['累计购买次数'], kde=False)plt.title('客户累计购买次数分布')plt.xlabel('累计购买次数')plt.ylabel('数量')plt.show()
# 4. 购买金额分布sns.histplot(df['累计购买金额'], kde=False)plt.title('客户累计购买金额分布')plt.xlabel('累计购买金额')plt.ylabel('数量')plt.show()
# 5. 购买金额与次数的比例sns.scatterplot(x='累计购买次数', y='累计购买金额', data=df)plt.title('累计购买金额与次数的比例关系')plt.xlabel('累计购买次数')plt.ylabel('累计购买金额')plt.show()
运行结果如下:
最后,我们还可以根据自己的想法和专业知识,不断向 AI 提问,例如:
请根据上面的省份数据,用 pyecharts 绘制一张 Map 热力数据地图,显示每个省份的累计销售金额,图中不要显示省份名称。
根据 AI 的回复,在本地 JupyterLab 环境中运行 Python 代码,如果出现问题,或者有新的想法,那么就继续追问,并按照 AI 的回答进行修改,最终得到以下代码:
from pyecharts.charts import Mapfrom pyecharts import options as optsfrom pyecharts.globals import ChartType
# 计算每个省份的累计购买金额data = df.groupby('所在省份')['累计购买金额'].sum()
# 创建 Map 图实例map = ( Map() .add("累计购买金额", # 系列名称 [list(z) for z in zip(data.index, data)], # 地图上的区域名称和对应的值 "china" # 地图类型 ) .set_global_opts( title_opts=opts.TitleOpts(title="中国各省份销售额分布图"), # 图表标题 visualmap_opts=opts.VisualMapOpts(max_=data.max()) # 视觉映射 ) .set_series_opts( label_opts=opts.LabelOpts(is_show=False) # 设置标签不显示 ))
map.render("中国各省份销售额分布图.html")

‍运行之后,打开「中国各省份销售额分布图.html」这个文件,就能看到一张交互式的热力数据地图如下:

过去,你可能需要先花大量的时间,先去学习 Python、Pandas、matplotlib 的语法等基础知识,才能制作出一张自己想要的数据分析图表。
现在,只需向 AI 提问或表达你的想法,它就能指导你快速生成一批数据可视化图表。我认为,这是一场学习的革命
未来,我相信 AI 将会变得更加强大。那些跟不上时代发展、不懂得借助 AI 提升工作效率的人,将面临被时代淘汰的风险。就像打字员曾经是一个职业,现在却几乎已经消失。
在 AI 发展的道路上,一个好的问题,能够促进我们深度思考,引导我们发现更好的解决方案。
我相信,AI 技术的应用将会越来越广泛,它可以帮助我们更高效、更智能地进行数据分析和可视化。
如果你想学习更多 AI 和数据分析相关的案例,欢迎你的订阅我的专栏:数据化分析案例库,其中已经更新了 19 个案例,计划至少更新 100 个案例,限时优惠价 28 元。
随着案例的增加,该专栏将会逐渐涨价,6.18 之后价格将上涨至 58 元,满 100 个案例后将涨价至 280 元,但现在订阅还可以享受特别优惠价 28 元。由于该专栏是买断制,所以早期购买者无需额外再花钱,一次付费,永久阅读

↑ 点击此卡片关注 ↑

↑ 周二早八点阅读 ↑
个人观点,仅供参考
继续滑动看下一个
林骥
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存