内容概要:本文通过案例展示了如何使用DeepSeek做科研论文的数据统计,并实现可视化。这次没有调用API,直接在DeepSeek的官网窗口就完成了统计运算;数据可视化部分是由Python代码实现的,代码由DeepSeek主动生成。本案例同时展示了如何运行Python代码,没有编程基础也可以学会。

1.引言

写论文、做项目最让人头疼的难题之一就是对数据的统计学计算。采用哪种统计方法?如何计算?这往往是让文科生挠头,理科生叹气的问题。GenAI在这一方面,却有惊人的表现。

对于数据统计:一般的、甚至稍微有点复杂的数据,DeepSeek问答窗口直接就可以给我们算出结果;对于特别特别复杂的数据,如果无法在问答窗口解决,只要你提供数据小样并说清楚目的,可以让DeepSeek编程给我们完成统计。

对于数据可视化:DeepSeek能够主动帮我们写Python代码,我们运行代码,就可以完成绘图。

以下将以具体案例加以说明,在此,特别感谢胜清同学提供的案例数据。

此外,如果你有数据算不出来,寒暑假期间可以联系本公众号义务探讨解决方案。前提是,允许本公众号使用所有数据作为案例发帖子或者编教材。

2.案例引入

小杨正在做一项有关交通运输安全的研究,主要想探究造成交通事故及死亡人数的主要因素,并试图构建一个模型,为交通安全事故预测和交通安全管理提供参考。图1是小杨收集到的数据,原数据以excel格式保存。

小杨的目的是:想了解一下表格前面几列变量与最后两列变量(“死亡人数”和“事故起数”)的相关关系。

图1交通安全数据

图1. 交通安全数据

  • 本案例主要使用AI +Jupyter Notebook作为代码生成和调试的开发工具(新读者请点击这里查阅前文,做好相应准备再来学习本文)。

3.方法概览:

先介绍一下大致过程,有个总体印象。

1)登录DeepSeek的官网问答窗口,点击问答窗口右下角的曲别针图标,上传excel格式的数据(如图2所示),并在窗口中输入提示词(如图2);

2)点击右下角的提交按钮,提交后,DeepSeek马上就提供了解决方案(见图3至图7);

3)对于可视化部分,DeepSeek主动提供了Python代码,将deepseek编写的代码复制粘贴到Jupyter Notebook(新关注的读者可点击这里查看往日贴文中的“3.运行代码”学习代码的调试、执行方法);

4)最后点击Jupyter Notebook上的“运行”,即可生成精彩的热力图和拟合图(见图8和图9)

5)注意事项:

  • 如果出现类似报错信息

“ModuleNotFoundError: No module named ‘xxx’”,直接使用 pip install xxx安装所缺模块即可。

  • 安全提醒

如果有保密要求,请不要把全部数据提交给AI,以防数据泄露;另外,AI提供的统计学方法和计算结果,务必要经过人工检查,避免犯错。

下面将截图例示整个详细过程和结果。

4.具体过程详细演示

1)在DeepSeek对话窗口上传数据表格,并输入指示词(图2)。本例的指示词比较简单,直接要求AI计算表格前面几列变量与最后两列变量(“死亡人数”和“事故起数”)的相关关系。没有指出具体的统计方法,也没有直接要求将计算结果可视化。

图2. 上传数据并发布指令

图2. 上传数据并发布指令

技巧提醒:在上传文件给AI时,请注意命名技巧,建议以“文件类型/文件功能/文件目的…”+"文件编号"的方式为文件命名。特别强调:为文件编号特别特别重要!比如,这里的表格被命名为“数据1”,如果后续新增数据或者改动数据就可以将新数据文件命名为“数据2”,避免了多轮对话中指代不明的风险。

2)DeepSeek收到数据和指令后,立即做出反应,并代为决策,选用皮尔逊相关系数来统计数据(图3)。

图3. AI快速决策并提供计算结果

图3. AI快速决策并提供计算结果

3)同时提供了对数据结果的解读,并指引了下一步分析路径,提出可以进而进行回归建模、可视化等操作。

图4. 对数据结果的解读

图4. 对数据结果的解读

4)如果接受其建议,直接输入响应的指示词即可;如果需要继续分析,但不同意其建议,可以通过指示词命令AI如何进行下一步。这里尝试接受其建议,使用回归建模,并可视化,AI收到指令后,自行决策,提供了“多元线性回归建模”方法和“热力图”、“拟合图”两种可视化方案(图5)。

图5. AI提供的建模方法和可视化方案

图5. AI提供的建模方法和可视化方案

5)AI生成的回归建模的第一个模型:预测“死亡人数”

图6. 回归建模:模型1

图6. 回归建模:模型1

5)AI生成的回归建模的第二个模型:预测“事故起数”

图7. 回归建模:模型2

图7. 回归建模:模型2

6)可视化部分,DeepSeek并不会直接绘图,而是自动生成了两段Python代码,分别用于绘制“热力图”和“拟合图”(详细代码见附录)。运行这些代码需要安装Python解释器并配置相应的环境(建议安装Anaconda+Jupyter Notebook,具体安装方法及环境配置,请[点击这里参照完成](https://mp.weixin.qq.com/s/jGtIYg8UXIVjOFkSH2JjhQ)。

完成安装和环境配置之后,打开Jupyter Notebook,将deepseek编写的代码复制粘贴进Jupyter Notebook页面的单元格,点击“运行”即可(如不知如何进行,点击这里查看往日贴文中的“3.运行代码”,参照操作)。

如出现报错“ModuleNotFoundError: No module named ‘xxx’”,直接使用 pip install xxx,安装所缺模块即可。如出现报错信息“ModuleNotFoundError: No module named ‘seaborn’”时,在Juypter Notebook页面新增一个空白单元格(点击导航导航栏上的“+”号即可新增单元格),在空白单元格中输入 pip install seaborn 然后点击导航栏的上的“运行”图标,等候片刻,即可完成安装(图8)。

图8. 安装所需的Python库

图8. 安装所需的Python库

7)完成以上第6步后,先后运行“热力图”和“拟合图”的代码,即可完成绘图(见图9和图10)。

图9. 热力图

图9. 热力图

图10. 拟合图

图10. 拟合图

8)以上跟DeepSeek原版对话,可以复制粘贴以下地址至你的浏览器打开查看。

https://chat.deepseek.com/share/g0fh7s9bpsauvm5ld8

9)掌握这些工具和方法后,以后再做科研统计和绘图就容易多了。请特别注意,AI并非百分之百可靠,其提供的统计方法是否是最佳选择甚或是否正确,请一定要进行人工检查,根据各自学科的专业知识和统计学知识进行判断,并跟AI来回对话,对不当的方法进行修正。如果本案例的统计方法有问题,也欢迎留言指正。

5.附录:AI生成的绘图代码

1)热力图Python代码

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 使用你提供的数据(这里假设已转为DataFrame)
df = pd.DataFrame({
    '年份': [2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015],
    '人均GDP': [89.358, 85.31, 81.37, 71.828, 70.078, 65.534, 59.592, 53.783, 49.922],
    '驾驶员': [523.1946, 501.7805, 481.1364, 457.0249, 436.3674, 410.3016, 360.1694, 358.7698, 328.5305],
    '公路里程': [5.4368, 5.3548, 5.2807, 5.1981, 5.0125, 4.8465, 4.7735, 4.6963, 4.5773],
    '民用汽车': [336.1759, 311.8444, 294.1859, 273.4092, 253.7638, 232.3123, 209.0667, 185.7454, 162.8445],
    '旅客运输量': [15.743308, 5.5874, 8.3026, 9.6654, 17.6044, 17.9382, 18.4862, 19.0019, 19.4327],
    '旅客周转量': [2983.215, 1292.154, 1975.815, 1925.146, 3534.924, 3421.815, 3281.28, 3125.846, 3005.89],
    '平均运距': [189, 231.26, 237.98, 199.18, 200.8, 190.76, 177.5, 164.5, 154.68],
    '死亡人数': [60028, 60676, 62218, 61703, 62763, 63194, 63772, 63093, 58022],
    '事故起数': [254738, 256409, 273098, 244674, 247646, 244937, 203049, 212846, 187781]
})

# 计算所有变量间的相关系数矩阵
corr_matrix = df.corr()

# 设置matplotlib正常显示中文,此处两行代码为后期人工校正
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体,后期人工添加
plt.rcParams['axes.unicode_minus'] = False   # 正确显示负号,后期人工添加

#绘图
plt.figure(figsize=(12, 10))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0, fmt='.2f', square=True)
plt.title('变量间相关性热力图(Pearson 相关系数)')
plt.tight_layout()

# 保存图片至桌面,此行代码为后期人工添加
plt.savefig(r'C:\Users\bigtree\Desktop\热力图.png', dpi=300, bbox_inches='tight')


# 显示图形
plt.show()

2)拟合图Python代码

# 模型1:死亡人数预测 vs 实际
plt.figure(figsize=(14, 6))

plt.subplot(1, 2, 1)
plt.scatter(df['年份'], df['死亡人数'], color='blue', label='实际值', s=100)
# 假设 predicted_deaths 是回归预测值(这里用简化示意)
# 实际建模中需使用回归模型预测
predicted_deaths = [60000, 60700, 62200, 61750, 62700, 63150, 63700, 63050, 58000]
plt.plot(df['年份'], predicted_deaths, 'r--', label='回归拟合', linewidth=2)
plt.xlabel('年份')
plt.ylabel('死亡人数')
plt.title('死亡人数:实际值 vs 回归预测')
plt.legend()
plt.grid(True, alpha=0.3)

plt.subplot(1, 2, 2)
plt.scatter(df['年份'], df['事故起数'], color='green', label='实际值', s=100)
# 假设 predicted_accidents 是回归预测值
predicted_accidents = [255000, 256000, 272500, 245000, 247500, 245000, 203500, 213000, 188000]
plt.plot(df['年份'], predicted_accidents, 'orange', label='回归拟合', linewidth=2)
plt.xlabel('年份')
plt.ylabel('事故起数')
plt.title('事故起数:实际值 vs 回归预测')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()

# 保存图片,此行代码为后期人工添加
plt.savefig(r'C:\Users\bigtree\Desktop\拟合图.png', dpi=300, bbox_inches='tight')

#显示图片
plt.show()

欢迎关注、转发,引用、改编请注明出处

图片

ai学ai用   扫码关注动态

公众号二维码.jpg

学习|应用|创造|分享

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐