1、数据科学方法与实践教学大纲、教学指南z_ 、一前B大数据(Big Data)时代的到来,催生了一门新的学科数据科学,它是与大 数据既有区别乂相互联系的两个术语。从维基百科给出的定义看,数据科学仅是 一种概念,它结合了统计学、数据分析、机器学习及其相关方法,旨在利用数据 对实际现象进行“理解和分析”,是一门将数据变得有用的学科。数据科学的起源来自于图灵奖获得者Peter Naur的著作Concise Survey of Computer Methods)(1974年),在前言中Peter Naur首次明确提出数据科学 (Data Science)的概念,认为“数据科学是一门基于数据处理的科学”,
2、并提到 了数据科学与数据学(Datalogy)的区别。数据科学在经过了一段漫长的沉默期之后,Drew Conway于2010年提出揭 示数据科学学科地位的韦恩图The Data Science Venn Diagram)(如图1所示), 首次明确探讨了数据科学的学科定位问题,这也成为我们国家“数据科学与大数 据技术”专业设置的重要依据。图1:数据科学韦恩图从图中可以看出,数据科学是一门涉及计算机编程(Hacking Skills)、数学统 计学知识(Math&Statistics Knowledge)和专业领域知识(Substantive Expertise) 的交叉性学科,从而也引发出数据科
3、学容易偏离的三个方向:(1) 机器学习(Machine Learning)从机器学习的路径 data program+algorithm/model inherent law/pattern -prediction可以看出,如果侧重于计算机编程和数学知识,而忽略了领域知识 的掌握,容易使得数据科学走向机器学习。(2) 传统研究(Traditional Research)即以领域知识为导航,从数学角度做某一领域的传统研究。(3)危险区(DangerZone)即通过计算机编程解决一些专门领域的问题,但如果缺乏对问题的数学解释 能力,那将是非常危险的。从知识体系看,数据科学主要以统计学、机器学习、数
4、据可视化和某一领域 的知识为理论基础。同时,数据科学也是一门实践性非常强的学科,以基础理论 为前提,数据科学的一般过程如图2所示。分析数据可视化数据存储数据清理数据收集图2数据科学的一般过程一般意义上讲,数据科学的最终目标是让数据成为有效的、可重复的、自动 化和规模化的数据。一、课程性质基于Python的数据科学实践课程是一门面向数据科学与大数据技术专 业的专业基础课和跨专业开设的专业选修课程,涉及Python语言、科学计算、 数据处理和分析、数据可视化,内容覆盖数据科学的导向目标,既可以作为数据 科学与大数据技术专业的核心主干课程,也可以作为信息平安、信息管理与信息 系统、生物信息学等相关专
5、业的能力提升课程。同时,也能够为研究生阶段的进 一步学习和研究提供必要的工具支撑。通过课程的学习,满足专业培养目标在数据计算、处理和分析、可视化等能 力上的基本素养,为教育、企业、事业、技术和行政管理部门等单位从事数据处 理和分析等方面的复合型高素质应用人才和拔尖创新人才奠定坚实的基础。课程采用线下、线上混合式教学模式,主要适用如下人群:1. 有志于从事数据科学与大数据技术专业方向的同学;2. 准备参加学校组织的“数据挖掘挑战赛”的同学;3. 准备学习和掌握基于Python实现数据处理和分析的同学;4. 在科研上有数据分析和可视化需求的同学。二、课程目标本课程的最终目标是培养学生的数据技术素养
6、和数据思维能力,积极探索多 层次、个性化的人才分类培养模式;以创新教育、素质教育为核心,注重知识、 能力和素质的协调,使学生德、智、体、美全面开展;开展以“注重基础、软硬 结合、立足系统、面向应用、强化实践”的基本原那么,加强工程实践训练,培养 学生的数据技术素养,使学生具备分析问题、解决问题的能力及工程实践能力。按照数据科学的内容和过程要求,本课程使用Python编程语言,从基本的 知识需求出发,致力于对数据科学的实践,全书共分为5个模块:1. 数据科学概述:认识和理解数据科学、大数据的核心概念,通过对数据 科学、大数据的处理流程中涉及的关键技术和方法的介绍,构建起数据科学知识 体系的总体框
7、架,从而明确数据科学的研究和应用需要一个协作的团队,数据赋 能并驱动未来开展的趋势。2. Python语言基础:全书的整体框架都是基于Python环境的,对Python 主要知识的学习和掌握,是进行数据科学实践的必要条件。如果己经对Python 语言比拟熟悉,本章的内容可以略过。3. 科学计算:科学计算是数值求解问题在数据处理和分析中的一个重要方 面,而使用Numpy库进行高性能科学计算,是计算模式和计算思维在数据计算 上的重要表达。本局部内容在掌握Numpy库技术的同时,克服单纯数学学习的 乏味,在用中学,使得需要的数学知识贯穿整个数据计算的过程,也能够为后续 的数据处理和分析奠定基础。4.
8、 数据处理和分析:主要使用Pandas库的标准数据模型和操作大型数据集 的工具,快速便捷地进行数据处理和分析,涉及I/O数据读写、数据清洗和预处 理、数据分析、时间序列的处理和分析等,以便能更好地探索和利用数据。5. 数据可视化:为更好地理解数据,探索和发现数据潜在的价值和模式, 选择合适地数据表现形式,使用Matplotlib库进行数据可视化处理,并满足局部 专业的需要,进行了有益的探索。使用Python支持的Numpy Pandas和Matplotlib这三个库,可以优雅地进行数 据计算、处理和分析以及数据的可视化表达,是进行数据科学入门非常有效的途 径,必将为数据科学的学习和理解奠定坚实
9、的基础。三、课程基本理念互联网与高等教育的结合,大学生对互联网天然的亲切感,习惯用互联网+ 的方式学习知识,捕捉信息。因此,为增强学习者对教学内容的粘性度,激发学 习者积极学习的主动性,保持学习者的持久内因驱动,本课程以问题为导向,以 知识需求为动机,融合相关专业方向的长期开展,从实际应用出发,以技术引领 知识,形成课程设计、教学、评价的闭合循环。互联网+教学,具有不受时空限制的优势,而合理规划线上学习和线下课堂 的教学内容是学习、教学活动设计的关键,主要包括:(1) 充分利用学校现有的教学平台,系统性地提供线上知识学习、测验、互 动、评估,形成详细的、可参考的教学过程性数据;(2) 按照在线
10、教育的基本要求,全部教材内容提供线上浏览和访问;(3) 制作课程教学内容课件,合理分布教学任务点,形成学习、实践、反应 的有效路径;(4) 知识点制作成微视频,学习者可自主学习,激发学习者的主动思考。最后,符合杜威核心教育思想,采用归纳式学习模式,使学习者积极发现要 学习的目标,通过教师有效指导,努力提高学习者学习的效率,实现:(1) 让数据思维成为学习者的一种习惯;(2) 线上、线下呈现1 + 12的双赢效果;(3) 教育技术与知识功能逻辑的有机结合。四、教学目的和要求通过本课程的学习,使得学生在理解和掌握数据科学核心概念、Python程序 设计模式的基础上,能够按照数据科学的基本路径和方法
11、,掌握数据计算、数据 处理和分析以及可视化的基本能力,包括:1. 熟练运用Numpy模块进行科学计算,包括数组的创立、访问、基本操作 和运算、矩阵的使用等。同时,以技术引领知识,在实践应用中学习和巩固相应 的数学知识;2. 熟练运用Pandas模块进行数据处理和分析,包括不同类型数据的预处理、 快速便捷地进行数据处理和分析,涉及数据清洗、缺失值处理、数据分析的基本 方法等。同时,以实际的应用案例方式,掌握探索和利用数据的能力;3. 熟练运用Matplotlib模块进行数据可视化处理,包括2D、3D图形可视化、 动画的使用、地图的绘制、社交网络的可视化等,满足专业学习、数据分析竞赛 以及一定的科
12、研需求。五、教学中应注意的问题1. 课程涉及的数学知识,如向量的使用和运算、方差和期望、卷积和梯度, 要结合实际应用去理解和掌握,防止单纯的知识讲授;2. 在熟悉数据科学的基本路径和方法,用数据思维模式组织课程功能逻辑, 规避重技术、轻方法的教学理念;3. 数据科学是以数据为出发点的,课程案例配套了大量的数据资源,但也 要注意教学过程中数据的收集和改造,让数据变得更加有效、更容易理解。六、教学内容课程具体的教学内容如下:第1章 数据科学概述在熟悉和理解数据科学、大数据核心概念的基础上,通过对数据科学、大数 据处理流程中涉及的关键技术和方法的掌握,构建起对数据科学知识体系、逻辑 框架的总体认知,
13、为后续的学习奠定基础。1. 1什么是数据科学?教学重点:对数据科学核心概念、基本路径和方法的认识和理解。教学难点:按照数据科学的要求,对课程内容的整体认知和把握。1. 2大数据技术教学重点:大数据的基本特征、大数据处理涉及的关键技术和方法。教学难点:课程以数据科学为主线,缺乏对大数据处理关键技术和方法的实 践,如何正确、深入理解大数据的关键技术和方法,在学习数据科学基本方法和 实践的基础上,奠定对将来大数据技术学习的思维模式是难点。3数据未来教学重点:数据科学具有学科交叉的特点,对数据未来趋势的展望,需要结 合其他学科的相关知识。教学难点:数据赋能并驱动未来,对数据科学开展的预测具有很强的时效
14、性, 是不断开展变化的,需要长期的研究和实践才能准确把握,因此有效地结合时势 进行数据未来预测是难点。第2章Python语言基础Python作为目前非常流行的程序设计语言,其功能非常强大,要学习和掌 握的内容也非常多。本章从数据科学的实际需求出发,只对Python的主要内容 精华进行描述,适合于没有Python基础的人员学习。2.1编程环境与规范教学重点:Python第三方库的安装和导入,Python程序设计语言的风格及编 程规范。教学难点:Python内置函数、标准库和第三方库的区别使用,对Python编程 规范的理解。2.2数据类型、数据载体及运算教学重点:Python内置的数据类型、两种
15、数据载体形式:常量和变量、运算 符和表达式、内置函数的使用。教学难点:Python一切皆对象,数据类型、数据载体、内置函数都可以作为 对象来使用,要理解Python语言的基本特点。2.3序列结构教学重点:字符串(str)、列表(list)、元组(tuple)x字典(diet)、集合(set) 的使用。教学难点:序列的使用要符合其特点、对列表推导式、切片、生成器推导式、 序列解包的使用和理解。2.4程序流程控制教学重点:条件表达式的理解和使用,Python程序的三种基本控制结构的实 现,涉及if分支语句、while循环语句、for循环语句的语法和使用规那么。教学难点:对顺序、分支、循环三种控制结
16、构的理解和应用。2.5函数教学重点:Python函数的定义、函数的参数和返回值、函数参数的不同形式、 变量的作用域、生成器函数。教学难点:对函数式编程的理解,传递函数参数时的序列解包、lambda表达 式的使用、生成器函数的理解和使用。2.6面向对象设计一切皆对象是Python秉承的理念,从一个简单的常量、变量、数据类型到 一个序列、函数、图形等,Pyhon解释器都视为对象。符合面向对象程序设计的 要求,Python中的类和对象也具有封装性、继承性和多态性三个基本特性。教学重点:类的定义和使用、私有成员和公有成员、类属性和方法的使用。 教学难点:对私有成员和公有成员的定义和访问。2.7字符串字
17、符串为有序的字符序列,支持序列的基本操作,如索引、切片、连接、成 员关系、比拟运算等。教学重点:字符串的编码格式、字符串的格式化、字符串的方法及相关操作。 教学难点:使用运算符和format函数对字符串的格式化。2.8文件操作文件可看作数据的集合,一般保存在磁盘或其他外部存储介质上。对文件的 操作主要包括翻开、读写和关闭。教学重点:文件的操作模式、文件对象的常用方法。教学难点:对文件编码的合理使用。第3章科学计算-Numpy科学计算是数值求解问题在数据处理中的一项重要内容,是数据科学的重要 组成局部,如何在数据科学的学习和实践中融汇计算模式和计算思维的逻辑是本 章的关键。Numpy是Pytho
18、n的第三方扩展库,它提供了数组和矩阵的处理功能,能够 高效地进行数值运算。此外,Numpy拥有成熟的广播函数库、矢量运算、线性 代数和随机数生成的相关函数,也支持傅里叶变换和图形操作的高级功能。在掌 握技术的同时,对涉及的数据知识进行有效地学习和巩固也是非常必要的。3.1计算基础教学重点:对科学计算一般过程和方法的理解、数值计算中误差的类型和计 算方法的应用场景的把握、Numpy中数据类型的初步了解。教学难点:误差的计算方法、Numpy库的安装、结构数据类型的理解。3.2数组的创立和访问Numpy中定义的最重要的对象是称为ndarray的N维数组,它是由一系列相 同类型数据组成的集合,其中的每
19、个元素在内存中都有相同存储大小的区域,元 素的下标索引默认从0开始。教学重点:数组创立的不同方式、特殊二维数组(对角矩阵、三角矩阵、范 德蒙德矩阵)的创立、多维数组的创立、ndarray对象的属性、数组元素的访问 等,对涉及的相应函数的理解和掌握是重点。教学难点:线性代数相关知识的理解和掌握、多维数组中索引的使用。3.3数组的基本操作在numpy扩展库中创立的数组由元素、索引和轴三局部组成。因此,针对数 组的基本操作,教学重点主要包括以下四个方面的内容:(1) 数组元素的操作:元素的添加、删除、插入、值的修改等;(2) 索引操作:切片;(3) 轴操作:数组形状的改变、轴的滚动、轴的交换等;(4
20、) 数组自身的操作:数组的分割、连接等。教学难点:视图、浅复制、深复制的使用以及数组的向量化处理。3.4数组的基本运算对数组中数据的运算,包括布尔运算、算术运算、函数运算、统计计算等, 涉及线性代数、统计数学等基础知识,是Numpy扩展库进行数据处理的重要组 成局部,也是在Python环境中使用其他数据处理和分析扩展库的基础。教学重点:对线性代数和统计数学基础知识的理解和应用、涉及的相关函数 的准确理解和使用、Numpy广播机制的使用。教学难点:向量的理解和使用、描述性统计量的定义和使用。3.5矩阵基础及运算教学重点:矩阵的基础知识、矩阵的相关运算函数的使用。教学难点:数学知识与运算函数的有机
21、关联。3.6 Numpy简单应用教学重点:排序、搜索、计数、分段、快速傅里叶变换的应用。教学难点:傅里叶变换的理解。对数据科学而言,数据的处理包括数据整理和清理、数据的分析和建模,并 将分析结果进行组织,以适合于绘图或表格显示,Pandas是完成这些任务的理 想工具。4.1数据结构Pandas处理的数据结构建立在Numpy数组之上,主要有系列(Series)数 据帧(DataFrame)s面板(Panel)三个,处理数据的速度很快。教学重点:Pandas数据结构与基本数据类型之间的关系、系列的使用、数据 帧的使用、对系列和数据帧中数据的访问。教学难点:对DataFrame结构的转换与运算。4.
22、2数据加载与预处理Pandas的数据输入和输出功能,为结构化、半结构化数据的处理和分析提供 了保障,支持不同类型数据文件的读取和解析,并能够利用Web API操作网络资 源、与数据库中的数据进行交互等。这些不同格式的数据,能够使用Pandas库 提供的函数读入数据到DataFrame. Series等对象,并利用这些对象的方法将数 据写入到外部文件,实现外部数据与DataFrame. Series对象的有机结合,为基 于Pandas库的数据访问和有效利用奠定了良好的基础。教学重点:Pandas的I/O处理功能、常用不同格式文件数据的读写、数据的 预处理,如选取合适的数据子集、消除不良数据等。教
23、学难点:使用不同格式的文件,如CSV、XML、JSON EXCEL等,选取和 操作合适的数据子集。4.3数据处理和分析在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于 分析。同时,对数据集进行分组并对各组应用一个函数(无论是聚合还是转换), 通常是数据分析工作中的重要环节。教学重点:数据聚合、合并和重塑的方法,数据的分组与统计运算。教学难点:层次化索引的使用、轴向变换在数据规整的使用,分组时迭代、 索引级别与数据聚合的使用。4.4时间序列分析时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领 域,包括金融学、经济学、生态学、神经科学、物理学等。在多
24、个时间点观察或 测量到的任何事物都可以形成一段时间序列。很多时间序列是固定频率的,也就 是说,数据点是根据某种规律定期出现的(比方每15秒、每5分钟、每月出现 一次)。时间序列也可以是不定期的,没有固定的时间单位或单位之间的偏移量。 时间序列数据的意义取决于具体的应用场景。教学重点:时间戳(timestamp固定时期(period)时间间隔(interval) 的使用,时间序列数据的处理和分析。教学难点:对Pandas内置时间序列处理工具和数据算法的理解和掌握。4.5 Pandas高级应用本节内容适用于Pandas的高级用户,可选。教学重点:分类可提高性能和内存的使用率,包括分类的类型、分类计
25、算、 分类方法等;分组的时间重采样、GroupBy W级应用等。教学难点:如何提高数据处理的性能和效率。第5章数据可视化-Matplotlib在数据处理和分析的基础上,为更好地理解数据,探索和发现数据潜在的价 值和模式,选择合适地数据表现形式,即进行数据的可视化处理是目前数据科学 研究和应用中非常重要的一个环节。5.1绘图基础认识和理解图表中的各组成局部,并结合相应的绘图函数绘制图形,是进行 数据可视化的基础。教学重点:图表的组成、坐标轴的长度与范围、图表的线型和颜色、刻度、 刻度标签和网格的使用、图例和注解的使用、子区的使用、图表中的填充区域。教学难点:对图表各组成局部的特点和合理使用。5.
26、2 2D图形可视化本节以例如方式,对在数据可视化时常用的二维图形可视化涉及到的 matplotlib库相关函数进行说明。教学重点:柱状图、散点图、饼图、堆积图、直方图、等高线图、极坐标图、 火柴杆图、矢量场流线图、相关图、词云图的绘制和使用。教学难点:理解不同的2D图表的应用场景并合理使用。5.3 3D图形可视化数据的3D可视化在有些情况下更加有效,甚至是唯一的选择,能够更清晰 地呈现数据之间的关系,方便于用户观察和数据模式的提取。本节的主要内容是mpl_toolkits.mplot3d工具包绘制3D图表。教学重点:三维散点面(scatter).柱状图(bar)、线图(line)或线框图 (w
27、ireframe) 曲面图(surface)或三翼面图(tri-surface)、网格图(mesh)等 的绘制。教学难点:对3D图的绘制流程的准确理解和使用。5.4使用动画动画和交互式图表能够更加吸引用户的注意力,在解释某一状态随单个或多 个变量的变化而改变的情形时,动画有着更强的描述性。_教学重点:使用matplotlib.animation模块创立动画、使用OpenGL创立动画。 教学难点:理解动画创立的过程、准确使用相应的工具包。5.5复杂网络结构可视化复杂网络的可视化,需要首先具备复杂网络的基础知识。本节的主要内容是 利用NetworkX库,进行无向图、有向图和多边图等的绘制,掌握Ne
28、tworkX的基 本使用方法,为复杂网络的应用和研究奠定基础。教学重点:无向图的创立、节点和边的添加、删除及访问、图、节点和边的 属性设置;有向图的使用;生成图的实例:规那么图、ER随机图、WS小世界网络 图、BA无标度网络图及图的相关操作。教学难点:网络结构图的可视化需要对专业背景知识的较好理解和掌握。七、教学课时分配教学课时分配表(参考)章节名称课堂学时第1章数据科学概述4第2章Python语言基础12第2章科学计算-Numpy16第3章 数据处理与分析-Pandas20第4章 数据可视化-Matplotlib20合计72八、参考书目(1) 数据科学入门,人民邮电出版社,Joel Grus
29、著,高蓉、韩波译,2016 年;(2) Python数据处理,人民邮电出版社,Katharine Jar mu 1著,张亮、 吕家明译,2017年;(3) Python程序设计(第2版),清华大学出版社,董付国著,2018年;(4) Python程序设计与算法基础教程,清华大学出版社,江红、余青松 著,2017年;(5) Python数据可视化编程实战(第2版),人民邮电出版社,IgorMilovanovic爱尔兰、Dimitry Foures法等著,颛清山译,2017 年;(6) 利用Python进行数据分析(第2版),机械工业出版社,Wes McKinney 著,徐敬一译,2018年;(7) Pandas Cookbook,Published by Packt Publishing Ltd. , Theodore Petrou 著,2017 年。