news 2026/7/7 19:39:29

如何作为数据科学家使用 ChatGPT

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何作为数据科学家使用 ChatGPT

原文:如何作为数据科学家使用 ChatGPT


整个世界都听说过 ChatGPT,但根据最近的一条新闻 研究,只有 2%的人每天使用它。

我每天作为数据科学家用它做很多事情。它确实在某些方面提高了我的生产力 2 倍。

在这篇文章中,我想解释我是如何使用 ChatGPT 的,并希望它能给你一些新的想法,无论你是否是数据科学家,都能更经常地使用它来提高你的输出。

YouTube 视频链接

学习与学习

我最喜欢的一个提示是“像对我 5 岁孩子解释”(ELI5)。它基本上让 ChatGPT 用一种非常简单的方式向我解释一个主题,通常比许多在线资源都要好。

例如,如果我们运行“像对我 5 岁孩子解释循环神经网络”。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a87d04ddcbe7586744c5991283bfed20.png

ChatGPT 的示例输出。

这个类比非常出色,并且真正地构建了循环神经网络背后的直觉。

然后,我们可以开始深入挖掘,并更具体地询问关于数学、工作示例等,因为我需要更实际和深入地了解作为数据科学家实现循环神经网络。

这里的主要价值在于,我像使用一个可以以多种不同方式向我解释事物的私人导师一样使用 ChatGPT。这真的非常强大,可能会节省你大量时间在网上寻找那个对你有启发的解释。试试看,并告诉我你的进展如何!

单元测试

没有人不知道大多数技术专业人士不喜欢编写单元测试。虽然它们非常繁琐,但它们是必须完成的,因为它们确保你的代码是健壮的,并在部署到生产环境中时建立信心。

ChatGPT 可以通过提供你可以调整以测试代码边缘情况的测试模板来极大地加快这个过程。

让我们考虑一个计算斐波那契数列的函数:

deffibonacci_sequence(n):ifn<=0:return[]elifn==1:return[0]elifn==2:return[0,1]sequence=[0,1]foriinrange(2,n):next_fibonacci_number=sequence[-1]+sequence[-2]sequence.append(next_fibonacci_number)returnsequence

让我们将这个输入到 ChatGPT 中,要求它为我们函数编写单元测试:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e290ab46f9406a18c478c71f24f1cc35.png

请 ChatGPT 为我们编写单元测试。

这是 ChatGPT 生成的测试的完整输出:

importunittestdeffibonacci_sequence(n):ifn<=0:return[]elifn==1:return[0]elifn==2:return[0,1]sequence=[0,1]foriinrange(2,n):next_fibonacci_number=sequence[-1]+sequence[-2]sequence.append(next_fibonacci_number)returnsequenceclassTestFibonacciSequence(unittest.TestCase):deftest_negative_input(self):self.assertEqual(fibonacci_sequence(-1),[])deftest_zero_input(self):self.assertEqual(fibonacci_sequence(0),[])deftest_one_input(self):self.assertEqual(fibonacci_sequence(1),[0])deftest_two_input(self):self.assertEqual(fibonacci_sequence(2),[0,1])deftest_five_input(self):self.assertEqual(fibonacci_sequence(5),[0,1,1,2,3])deftest_ten_input(self):self.assertEqual(fibonacci_sequence(10),[0,1,1,2,3,5,8,13,21,34])if__name__=='__main__':unittest.main()

我在我的 PyCharm IDE 中运行后确认这可行。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c171dcac69c4378fd6ae543d2889b8ce.png

PyCharm 终端输出。

我无法告诉你这为我节省了多少时间。仅设置测试本身就需要相当一部分时间。这种方法让我可以专注于关键部分:找到可能破坏我函数的边缘情况。

如果你想了解更多关于单元测试的信息,请查看我之前的帖子。

Pytest 教程:单元测试简介

创建可视化

创建图表通常相当耗时,尤其是如果你正在添加多行和标签,并试图使图表看起来整体上更美观。我曾经花费数小时猛敲键盘,试图让 Matplotlib 给我想要的结果。这并不有趣,我不推荐这样做。

在 GPT-4 和 GPT-4o 之前,我会使用 ChatGPT-3.5 在 IDE 中运行来生成 Python 代码,以绘制我的图表。然而,现在这更加简单,因为它们有一种叫做高级分析的东西。你只需将数据交给它,它就会为你创建图表,并将相关的代码输出到屏幕上。

例如,让我们使用我从 Kaggle 获得的数据,其中包含Netflix 电影和电视节目(CC0 许可)。我所做的就是将其拖入 ChatGPT,并要求它为我解释数据:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/80d9ee7045a6e6aba33f018afedfc1bb.png

输入数据

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4c23ab286516d44ec70141e237a860e3.png

ChatGPT 的输出。

它还提供了它用来加载数据的 Python 代码,这样我可以确认它在幕后做了什么。然而,在这种情况下,它已经很好地识别了数据,所以我不需要进一步挖掘。

我现在可以要求它使用这些数据绘制一些东西。比如说,我们想要一个按拍摄国家划分的show_id条形图。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9e7669e684681b3745b8974bd48dff19.png

创建图表的输入。

它为我们编写了代码,然后在聊天窗口中生成图表!

注意,窗口中的图表将不同于代码在 matplotlib 中生成的图表。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cc3f1f50baef0758dfb25cd26c7ad13f.png

ChatGPT 按国家显示的条形图。

如我们所见,它相当混乱,因为它绘制了每个国家。让我们假设我们只想看前 10 个,其余的放在某个“其他”类别中。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/886189786795d1d41ffcb97daa45a7d0.png

ChatGPT 更新的提示和代码输出。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/36c62149ec93c74edb3d3abb40515503.png

按国家显示 Show_id 的条形图,显示前 10 名和其余部分在“其他”中。

这看起来好多了,而且图表质量也很高!

这是一个简单的例子,但它展示了 ChatGPT 在数据分析与可视化方面的强大功能。你甚至不需要会编码就能做到这一点;这当然有帮助,但并非必要条件,这使得它对广大受众来说非常易于接触。

重构代码

有时候,我在写代码时会偷懒,代码并不像它本可以那样优雅和简洁。这可能会导致错误,并使理解正在发生的事情变得困难(对大多数开发者来说是个噩梦)。

我通常会让 ChatGPT 将我的代码调整为“生产标准”,这是一个我发现能有效清理并使其看起来更专业、整体更美观的提示。

例如,考虑我在之前帖子中写的这段代码,它使一个时间序列平稳:

# Import packagesimportplotly.expressaspximportpandasaspdimportosimportnumpyasnp# Read in the datadata=pd.read_csv('../../Software Engineering /make-example/AirPassengers.csv')defplotting(title,data,x,y,save_file_path,x_label,y_label):"""General function to plot the passenger data."""fig=px.line(data,x=data[x],y=data[y],labels={x:x_label,y:y_label})fig.update_layout(template="simple_white",font=dict(size=18),title_text=title,width=650,title_x=0.5,height=400)ifnotos.path.exists("../images"):os.mkdir("../images")fig.write_image("../images/"+str(save_file_path))fig.show()# Plot the airline passenger dataplotting(title='Airline Passengers',data=data,save_file_path='passengers.png',x='Month',y='#Passengers',x_label='Date',y_label='Passengers')# Take the difference and plot itdata["Passenger_Diff"]=data["#Passengers"].diff()plotting(title='Airline Passengers',data=data,save_file_path='passengers_one_difference.png',x='Month',y='Passenger_Diff',x_label='Date',y_label='Passengers<br>Difference Transform')# Take the log and plot itdata["Passenger_Log"]=np.log(data["#Passengers"])plotting(title='Airline Passengers',data=data,save_file_path='passenger_log.png',x='Month',y='Passenger_Log',x_label='Date',y_label='Passenger<br>Log Transform')# Take the difference and log and plot itdata["Passenger_Diff_Log"]=data["Passenger_Log"].diff()plotting(title='Airline Passengers',data=data,save_file_path='passenger_difference_and_log.png',x='Month',y='Passenger_Diff_Log',x_label='Date',y_label='Passenger<br>Log and Difference')

让我们将其输入 ChatGPT,并要求它将其调整为“生产标准”和“更整洁”。

它生成的代码看起来像这样:

# Import packagesimportplotly.expressaspximportpandasaspdimportosimportnumpyasnp# Read in the datadata=pd.read_csv('../../Software Engineering /make-example/AirPassengers.csv')defplot_data(title,data,x,y,save_file_path,x_label,y_label):""" General function to plot the passenger data. Parameters: - title: Title of the plot - data: DataFrame containing the data - x: Column name for the x-axis - y: Column name for the y-axis - save_file_path: File path to save the image - x_label: Label for the x-axis - y_label: Label for the y-axis """fig=px.line(data,x=x,y=y,labels={x:x_label,y:y_label})fig.update_layout(template="simple_white",font=dict(size=18),title_text=title,width=650,title_x=0.5,height=400)output_dir="../images"os.makedirs(output_dir,exist_ok=True)fig.write_image(os.path.join(output_dir,save_file_path))fig.show()# Plot the airline passenger dataplot_data(title='Airline Passengers',data=data,x='Month',y='#Passengers',save_file_path='passengers.png',x_label='Date',y_label='Passengers')# Create transformed columns and plottransforms=[("Passenger_Diff",data["#Passengers"].diff(),'passengers_one_difference.png','Passengers<br>Difference Transform'),("Passenger_Log",np.log(data["#Passengers"]),'passenger_log.png','Passenger<br>Log Transform'),("Passenger_Diff_Log",np.log(data["#Passengers"]).diff(),'passenger_difference_and_log.png','Passenger<br>Log and Difference')]forcol_name,transform,file_name,y_labelintransforms:data[col_name]=transform plot_data(title='Airline Passengers',data=data,x='Month',y=col_name,save_file_path=file_name,x_label='Date',y_label=y_label)

如你所见,格式与 Pep8 指南一致,我们有文档字符串,并且它创建了一个遵循DRY原则的重复代码块的功能。总体来说,做得不错!

Python 确实有一些合适的格式化工具,如isort和black,但我发现 GPT 通常能更快、更好地完成任务。

如果你想了解更多关于代码质量的信息,请查看我之前的帖子。

数据科学家提高 Python 代码质量的指南

摘要及进一步思考

使用 ChatGPT 提高了我在许多方面的生产力,例如学习新事物、编写单元测试、进行分析和重构代码。我希望这篇文章能给你一些在你自己的工作领域尝试的想法。虽然我认为它不会取代我们,但它是一个强大的工具,你应该尽可能将其集成到你的工作流程中。

另一件事!

我提供一对一的辅导通话,我们可以讨论你需要的一切——无论是项目、职业建议,还是只是确定你的下一步。我在这里帮助你前进!

[与 Egor Howell 的一对一辅导通话]

职业指导、工作建议、项目帮助、简历审查topmate.io](https://topmate.io/egorhowell/1203300)

与我联系

  • YouTube

  • LinkedIn

  • Instagram

  • 网站

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 19:31:06

从菜品识别到健康决策:AI技术如何赋能B端智慧饮食管理

随着人工智能技术的快速发展&#xff0c;传统饮食健康管理正经历一场深刻的变革。多模态营养识别应用技术的普及&#xff0c;推动了智慧饮食管理服务在企业、医疗、智能硬件等领域加速落地。当下&#xff0c;大众对精准营养指导、慢病饮食防控的需求持续激增&#xff0c;叠加企…

作者头像 李华
网站建设 2026/7/7 8:22:18

期末复习01-02

文章目录题目要求项目结构1.Action2.ColorableStep1&#xff1a;写接口和父类Step2:写实现类Step3:写测试类题目要求 项目结构 项目结构 1.Action 匿名内部类 运行结果 2.Colorable Step1&#xff1a;写接口和父类 Step2:写实现类 Step3:写测试类 运行结果

作者头像 李华
网站建设 2026/7/7 6:56:48

Langchain-Chatchat能否实现问答结果Excel导出?

Langchain-Chatchat能否实现问答结果Excel导出&#xff1f; 在企业级AI应用日益深入的今天&#xff0c;一个常被提及但又未被默认支持的功能需求浮出水面&#xff1a;能否将本地知识库问答系统的交互记录导出为Excel&#xff1f; 尤其是在使用如 Langchain-Chatchat 这类强调数…

作者头像 李华
网站建设 2026/7/7 5:03:51

Langchain-Chatchat问答系统灰度期间问题闭环管理

Langchain-Chatchat 问答系统灰度期间问题闭环管理 在企业智能化转型的浪潮中&#xff0c;一个日益突出的矛盾浮出水面&#xff1a;通用大模型虽然“见多识广”&#xff0c;却难以深入理解企业的私有知识体系&#xff1b;而传统知识库系统又缺乏自然语言交互能力&#xff0c;使…

作者头像 李华
网站建设 2026/7/7 7:47:50

Langchain-Chatchat结合消息队列实现异步处理

Langchain-Chatchat结合消息队列实现异步处理 在企业级智能问答系统日益普及的今天&#xff0c;一个看似简单的“上传文档并提问”操作背后&#xff0c;往往隐藏着复杂的工程挑战。设想这样一个场景&#xff1a;某金融机构的合规部门上传了一份200页的监管政策PDF&#xff0c;用…

作者头像 李华