2023年暑假“Python数据采集、分析与可视化原理及实战”研修班通知
=============
版权声明:由于公众号后台规则问题,本文暂时无法设置原创标记,但仍属原创内容,微信公众号“Python小屋”坚持只发原创技术文章。
=============
推荐教材:
董付国著,《Python数据分析与数据可视化(微课版)》,ISBN:978-7-302-62420-2,清华大学出版社,2023年6月出版
配套资源:教学大纲、课件、源码、数据文件、34小时微课
========================
一、 课程简介
课程名称:Python数据分析与数据可视化 课程编号:
课程性质:必修 适用专业:数据科学
前导课程:无 考核方式:考查
建议学时:64+24
二、 教学目标
1. 能力目标
熟练掌握NumPy扩展库的数组运算与矩阵运算功能以及傅里叶变换、线性代数、多项式计算等相关技术,熟练掌握使用Pandas扩展库进行数据采集、数据存储、数据处理、数据分析、数据可视化等操作,熟练掌握使用Matplotlib扩展库绘制折线图、散点图、柱状图、饼状图、动画等各种类型的图形并能够完成图例设置、坐标轴设置等外围设置和常见的交互任务。
快速了解数据背后的业务底层逻辑,这是真正的核心。能够根据任务要求快速制定方案,选择最佳数据集并确定分析方法、分析角度。
具有较强的代码阅读、代码集成、代码调试能力,能够通过代码反推分析方法、分析角度、分析目的以及数据格式。
2. 素养目标
养成严谨的学术态度,并时刻保持怀疑态度。不存在完美无缺的数据采集过程,同样也不存在完美无缺绝对高质量的数据集和放之四海而皆准的分析方法,在数据选取、处理、分析时应严谨、严肃、认真、负责、实事求是,不可随意妄为,不得滥用技术,不可以偏概全,不可篡改数据和分析结果,能够做到逻辑清晰、细致入微并能够综合多方高质量数据(尤其要慎重使用自媒体的数据)和不同方法的分析结果相互验证以确保数据分析结果的客观性和准确性,勇于指出数据以及分析角度、分析方法中存在的不足。
具有发散思维、学习精神和创新精神。在分析与处理数据时,不拘泥于一种或几种方法与技术,不断学习和借鉴优秀的分析方法、分析角度,时刻保持思维清晰并能够大胆创新、集成和综合运用多种方法与技术。
具有精益求精的工匠精神。在完成数据分析、数据处理、数据可视化相关任务时,能够深入学习相关理论知识,能够深入挖掘Python语言以及相关扩展库的高级功能。在数据可视化时,不能满足于仅仅完成绘制图形的核心部分,还应精益求精,提高可视化结果的区分度并完善外围元素,真正做到“一图胜千言”。
具有较强的表达能力、沟通能力以及平和的心态。不管从事什么职业,都不可避免地遇到与别人意见不一致的情况,应能够平心静气进行沟通,善于吸纳别人观点,但在必要的时候坚持自己的观点。
三、 教学中应注意的问题
重视Python基础,虽然在数据分析与数据可视化时经常会调用扩展库中的函数或方法来完成任务,但整体的业务逻辑仍需要自己来设计和实现。在此过程中,熟练掌握内置类型、内置函数、运算符、程序控制结构以及标准库对象的用法是非常重要的。
重视知识面广度与深度,很多数据分析与数据可视化的相关任务并不仅仅是套用现成的模板,还需要对数据背后涉及到的学科领域底层逻辑有比较深入的了解。不同领域的数据都有自己的特点,根据数据集大小和分析目的不同也需要选择相应的分析角度和分析方法。不同类型的数据和分析结果对可视化的要求也不完全相同,不同类型图形的适用场景也不一样。
重视高级数据类型的使用,深入挖掘并充分发挥NumPy、Pandas、Matploblib这几个扩展库中高级数据类型的优势,充分利用扩展库提供的方法和功能,尽量避免使用循环结构处理大数据集。
教材中案例用到的数据都是经过脱敏处理的,可以放心使用。任课教师如果讲解自己的扩展案例,应注意隐私保护问题,在选择数据时还应注意数据质量,尤其是涉及国家领域、国家安全的数据,要确保数据正确、不能有歧义和误导倾向。
四、 教学内容
第1章 NumPy数组运算与矩阵运算
1.1 数组运算与相关操作
1.1.1 创建数组
教学内容:创建一维数组、二维数组、多维数组,把Python列表、元组以及图像转换为数组,创建等差数组、对数数组、全1数组、全0数组、随机数组、三角数组、范德蒙数组。
1.1.2 访问数组中的元素
教学内容:使用标量、列表、切片做下标访问数组中的元素,随机选择数组中的元素,访问复数数组的实部和虚部。
1.1.3 修改数组中的元素值
教学内容:修改符合不同条件的数组元素。修改复数数组的实部和虚部,数组卷绕。
1.1.4 增加与删除元素
教学内容:追加元素,插入元素,删除元素。
1.1.5 测试两个数组的对应元素是否足够接近
教学内容:isclose()函数,allclose()函数。
1.1.6 数组与标量的运算
教学内容:数组与标量的四则运算。
教学重点:数组在前与在后的区别。
1.1.7 数组与数组的运算
教学内容:形状相同的数组运算,形状不同的数组运算,广播。
教学重点:广播的条件与运算规则。
1.1.8 排序
教学内容:argsort()方法,lexsort()函数,sort()方法,partition()方法。
1.1.9 点积运算
教学内容:数组与标量的点积运算,等长一维数组的点积运算,形状为(n,)和(n,m)的数组点积运算,形状为(m,n)和(n,)的数组点积运算,形状为(m,k)和(k,n)的数组点积运算,多维数组与一维数组的点积运算,多维数组与多维数组的点积运算。
1.1.10 向量叉乘
教学内容:向量叉乘的定义,cross()函数的用法。
1.1.11 张量积
教学内容:tensordot()函数的用法。
1.1.12 数组对函数运算的支持
教学内容:对数组进行函数运算,相当于对数组中所有元素都进行同样的函数运动,然后同样形状的新数组。
1.1.13 函数向量化
教学内容:把不支持数组作为参数的函数进行向量化,vectorize()函数的用法。
1.1.14 改变数组形状
教学内容:shape属性的含义,reshape()方法,resize()方法,resize()函数,expand_dims()函数。
1.1.15 布尔运算
教学内容:使用包含若干True/False的数组作为下标。
1.1.16 分段函数
教学内容:where()函数,piecewise()函数的功能与用法。
1.1.17 数组堆叠与合并
教学内容:hstack()、vstack()、dstack()函数的功能与用法。
1.1.18 数组拆分
教学内容:水平拆分,垂直拆分。
1.1.19 转置
教学内容:T属性,swapaxes()方法,transpose()方法。
1.1.20 查看数组元素符号
教学内容:sign()、signbit()函数的功能与用法。
1.1.21 数组元素累加与累乘
教学内容:cumsum()、cumprod()方法,以及add模块与multiply模块的功能与用法。
1.1.22 数组的集合运算
教学内容:数组的交集、差集、并集、对称差集运算。
1.1.23 数组序列化与反序列化
教学内容:数组转换为列表、字符串、字节串,根据字符串、字节串还原数组,数组写入文本文件,从文本文件读取数据并还原为数组。
1.1.24 查看数组特征
教学内容:数组形状、维数、大小、类型、平均值、中值、梯度、求和、非零元素、迹、标准差、方差、协方差、峰谷差、直方图、分位数。
1.1.25 转换数组数据类型
教学内容:astype()方法的用法。
1.1.26 卷积运算
教学内容:convolve()函数的用法。
教学重点:一维卷积计算方法。
1.1.27 数组翻转与旋转
教学内容:水平翻转、垂直翻转、沿指定维度翻转、旋转90°。
1.1.28 爱因斯坦标记法
教学内容:einsum()函数的用法。
1.2 矩阵运算与相关操作
1.2.1 创建矩阵
教学内容:矩阵的概念,创建矩阵的不同形式。
教学重点:矩阵的概念,矩阵与数组的区别。
1.2.2 访问矩阵元素
教学内容:使用下标访问矩阵元素。
教学重点:[r][c]与[r,c]这两种下标形式的区别。
1.2.3 矩阵转置
教学内容:T属性,transpose()方法。
1.2.4 矩阵加法与减法
教学内容:形状相同的矩阵加法运算,形状不同的矩阵加法运算。
教学重点:广播的规则。
1.2.5 矩阵乘法
教学内容:运算符*、@,函数matmul()、matrix_power(),dot()方法。
教学重点:矩阵乘法的运算规则。
1.2.6 计算相关系数矩阵
教学内容:corrcoef()函数的功能与用法。
教学重点:相关系数矩阵的含义。
1.2.7 计算方差、协方差、标准差
教学内容:cov()、std()函数的功能与用法。
教学重点:样本方差、协方差、标准差的定义与含义。
1.2.8 计算特征值与特征向量
教学内容:特征值与特征向量的定义与含义,eigvals()函数的功能与用法。
1.2.9 计算行列式
教学内容:行列式的定义与含义,det()、slogdet()函数的功能与用法。
1.2.10 计算逆矩阵
教学内容:inv()、pinv()函数的功能与用法。
教学重点:逆矩阵的定义与性质,广义逆矩阵定义,正交矩阵概念。
1.2.11 计算向量和矩阵的范数
教学内容:norm()函数的功能与用法。
教学重点:范数的定义与计算方法。
1.2.12 求解线性方程组
教学内容:solve()、lstsq()函数的功能与用法。
1.2.13 计算矩阵的条件数
教学内容:cond()函数的功能与用法。
教学重点:条件数的定义与含义。
1.2.14 奇异值分解
教学内容:svd()函数的功能与用法。
1.2.15 计算矩阵的秩
教学内容:matrix_rank()函数的功能与用法。
1.2.16 QR分解
教学内容:qr()函数的功能与用法。
1.2.17 Cholesky分解
教学内容:cholesky()函数的功能与用法。
1.3 多项式计算
教学内容:创建多项式,计算多项式的根,多项式拟合,多项式四则运算,计算导数,计算定积分与不定积分,拉格朗日多项式,埃尔米塔多项式。
1.4 傅里叶变换与反变换
教学内容:一维离散傅里叶变换与反变换,二维离散傅里叶变换与反变换。
1.5 应用案例
教学内容:计算圆周率近似值,调整立体声音乐文件的音量,彩色图像转换为灰度图像,调整视频画面亮度。
第2章 Pandas数据分析与处理实战
2.1 数据分析与处理概述
教学内容:数据分析的概念、特点、应用场景,数据处理的必要性。
2.2 Pandas一维数组
2.2.1 日期时间数据处理与相关操作
教学内容:时间戳对象、日期范围对象、时间差对象、时间段对象。
2.2.2 区间数据处理与相关操作
教学内容:interval_range()函数的功能与用法。
2.2.3 Categorical数据处理与相关操作
教学内容:Categorical对象的定义、访问、统计等常用操作。
2.2.4 Series数据处理与相关操作
教学内容:创建Series对象,访问元素,修改元素,统计计算平均绝对离差、无偏标准误差、分位数,异常值处理,类型转换,分段函数,重采样,绘图。
2.3 Pandas二维数组DataFrame
2.3.1 创建DataFrame对象
教学内容:创建DataFrame对象。
教学重点:DataFrame对象的结构,index、columns、values。
2.3.2 查看统计信息
教学内容:describe()方法的功能与用法。
2.3.3 排序
教学内容:根据行标签排序,根据列标签排序,根据某列或某几列的值排序,多索引排序。
教学重点:by、ascending、level参数的作用。
2.3.4 数据选择与访问
教学内容:根据不同条件访问和筛选DataFrame对象中的数据。
教学重点:str、dt高级属性接口的应用。
2.3.5 数据修改
教学内容:修改符合特定条件的数据。
思政元素:所有涉及修改的操作都必须进行严格论证。
2.3.6 缺失值、重复值、异常值处理
教学内容:缺失值、重复值、异常值处理的原则与方法。
教学重点:不同业务数据处理的细节相差较大。
2.3.7 数据离散化
教学内容:cut()、qcut()函数的功能与用法。
2.3.8 频次统计
教学内容:value_counts()函数的功能与用法。
2.3.9 向量化与唯一元素
教学内容:factorize()、unique()函数以及unique()、nunique()方法的功能与用法。
2.3.10 拆分与合并
教学内容:concat()函数以及merge()、join()方法的功能与用法。
2.3.11 分裂操作
教学内容:explode()方法的功能与用法。
2.3.12 分组与聚合
教学内容:groupby()方法的功能与用法,by、as_index参数的作用,分组对象的方法功能与使用。
教学重点:分组对象的方法功能与使用。
2.3.13 数据差分
教学内容:diff()方法的功能与用法。
2.3.14 透视表
教学内容:透视表的作用和应用场景,pivot()、pivot_table()方法的功能与用法。
2.3.15 交叉表
教学内容:交叉表的作用和应用场景,crosstab()函数的功能与用法。
2.3.16 哑变量
教学内容:get_dummies()函数的功能与用法。
2.3.17 相关系数
教学内容:corr()方法的功能与用法。
2.3.18 多级索引
教学内容:创建与使用多级索引。
2.3.19 选项设置
教学内容:设置小数位数、列标签对齐、每行最大列数、最大行数、是否换行、千分符、中文对齐方式。
2.3.20 读写文件
教学内容:读写Excel文件。
教学重点:read_excel()、to_excel()方法的功能与用法。
2.3.21 设置样式
教学内容:设置高亮显示、字体颜色、字号、对齐方式,绘制柱状图,设置渐变色。
2.3.22 swifter加速
教学内容:扩展库swifter的安装与使用。
2.3.23 绘制图形
教学内容:绘制折线图、柱状图、水平柱状图、堆叠柱状图、散点图、饼状图、箱线图、密度图、面积图。
2.4 Pandas应用案例
教学内容:模拟转盘抽奖游戏,电影导演演员数据分析,饭店营业数据分析,爬取网页表格数据,学生考试数据分析,查找分类或决策树算法中最重要的特征,小区业主用水情况分析,饮食营养数据分析,普通高考选考科目数据分析。
第3章 Matplotlib数据可视化实战
3.1 数据可视化库Matplotlib基础
教学内容:扩展库matplotlib的安装,pylab和pyplot模块的区别,绘制图形的基本思路,保存图形,图形样式设置。
3.2 绘制折线图
教学内容:绘制带有中文标题、坐标轴标签和图例的正弦、余弦曲线,绘制水平线和垂直线,绘制螺旋线,同时绘制多条折线图,龟兔赛跑行走轨迹,一笔绘制红色五角星,绘制花瓣图案,绘制时间-速度图像和时间-位移图像,绘制误差线图,烧烤店营业数据可视化,模拟连续新型号与数字信号,绘制尼哥米德蚌线,绘制反比例函数与矩形交点,标记函数极值,可视化角谷猜想,商场促销活动数据可视化,渲染数学公式,演示傅里叶变换与反变换效果,绘制信号的能量谱、相位谱、功率谱密度、两个信号的互谱密度图像,绘制堆叠面积图,绘制楼梯台阶图,绘制向量场的流线,绘制向量场,绘制三角形网格、四边形网格,填充区域,绘制平行坐标图。
3.3 绘制散点图
教学内容:绘制散点图,烧烤店营业数据可视化,多项式拟合效果可视化,绘制埃尔米特多项式曲线,绘制心型图案,商场手机信号数据可视化,可视化稀疏矩阵,可视化DBSCAN聚类结果。
3.4 绘制柱状图
教学内容:绘制柱状图,设置颜色、宽度、高度、位置,文本标注,烧烤店英语数据可视化,绘制水平柱状图、间断水平柱状图,黑洞数可视化,商场各部门业绩可视化,集体过马路调查数据可视化,文本热词可视化,城市收入与房价数据可视化,绘制竖线图、横线图、茎叶图,绘制南丁格尔玫瑰图,绘制直方图,绘制二维直方图,绘制六边形直方图,绘制热力图。
思政元素:案例选取和数据选取时避免误导性和歧视性的内容。
3.5 绘制饼状图
教学内容:设置扇形边线属性和百分比文本属性,学生考试数据可视化,绘制环状图。
教学重点:绘制环状图。
3.6 绘制雷达图
教学内容:绘制红色五角星,绘制花瓣图案,可视化学生专业课成绩,可视化家庭开销数据。
教学重点:雷达图含义与解释。
3.7 绘制箱线图
教学内容:绘制箱线图,箱线图含义与解释。
3.8 绘制小提琴图
教学内容:绘制小提琴图,小提琴图含义与解释。
3.9 绘制风矢量图
教学内容:绘制风矢量图,风矢量图含义与解释。
3.10 绘制等高线图
教学内容:绘制等高线图,等高线图含义与解释。
3.11 绘制树状图
教学内容:绘制树状图,文本标注对象的创建与使用。
3.12 绘制三维图形
教学内容:创建三维坐标系,绘制三维折线图,绘制三维曲面,绘制等电位面,绘制双三次贝塞尔曲面,绘制三维柱状图,绘制三维散点图。
教学重点:创建三维坐标系。
3.13 绘图区域切分
教学内容:切分绘图区域,创建不同类型的坐标系,共享坐标轴。
教学重点:切分绘图区域的多种方式。
3.14 设置图例样式
教学内容:在图例中显示数学公式,设置图例字体、标题、位置、阴影、背景色、边框颜色、分栏、符号位置,多坐标系共用图例,同一个坐标系中显示多个图例。
3.15 设置坐标轴属性
教学内容:设置坐标轴刻度位置和文本,设置坐标轴标签排列方式、位置、行距,在坐标轴刻度上显示数学公式,设置坐标轴颜色、宽度、箭头,设置坐标轴箭头样式,设置坐标轴刻度比例。
3.16 事件响应与处理
教学内容:响应鼠标事件,创建鼠标跟随的文本标注对象,响应键盘事件,模拟铅笔,图像测量,响应定时器事件,使用滑块组件,使用单选钮组件,鼠标拾取,绘制鼠标跟随的直线,绘制交互式饼状图,在tkinter界面中显示可视化结果。
3.17 绘制动态图形
教学内容:绘制动态散点图模拟余弦曲线,绘制动态折线图并保存GIF文件,绘制动态柱状图并保存GIF文件,绘制动态散点图并保存GIF文件,绘制动态散点图模拟布朗运动并保存GIF文件,在tkinter界面中同时显示多个Matplotlib动画,
教学重点:绘制动画,保存GIF文件。
五、 教学课时分配
教学课时分配表(参考)
章节名称 | 课堂学时(64) | 实验学时(24) | 课外学时(200) |
第1章 NumPy数组运算与矩阵运算 | |||
1.1 数组运算与相关操作 | 4 | 2 | 8 |
1.2 矩阵运算与相关操作 | 4 | 2 | 8 |
1.3 多项式计算 | 1 | 2 | |
1.4 傅里叶变换与反变换 | 1 | 4 | |
1.5 应用案例 | 1 | 8 | |
第2章 Pandas数据分析与处理实战 | |||
2.1 数据分析与处理概述 | 0.5 | 4 | |
2.2 Pandas一维数组 | 1.5 | 2 | 8 |
2.3 Pandas二维数组DataFrame | 10 | 2 | 16 |
2.4 Pandas应用案例 | 3 | 2 | 16 |
第3章 Matplotlib数据可视化实战 | |||
3.1 数据可视化库Matplotlib基础 | 2 | 6 | |
3.2 绘制折线图 | 4 | 2 | 16 |
3.3 绘制散点图 | 2 | 1 | 8 |
3.4 绘制柱状图 | 2 | 1 | 8 |
3.5 绘制饼状图 | 2 | 1 | 8 |
3.6 绘制雷达图 | 1 | 6 | |
3.7 绘制箱线图 | 0.5 | 2 | |
3.8 绘制小提琴图 | 0.5 | 2 | |
3.9 绘制风矢量图 | 1 | 2 | |
3.10 绘制等高线图 | 0.5 | 2 | |
3.11 绘制树状图 | 0.5 | 2 | |
3.12 绘制三维图形 | 4 | 2 | 8 |
3.13 绘图区域切分 | 2 | 2 | 8 |
3.14 设置图例样式 | 4 | 2 | 8 |
3.15 设置坐标轴属性 | 4 | 8 | |
3.16 事件响应与处理 | 4 | 1 | 16 |
3.17 绘制动态图形 | 4 | 2 | 16 |
六、 教材与参考书目
1.教材
l董付国,《Python数据分析与数据可视化(微课版)》,ISBN:978-7-302-62420-2,清华大学出版社,2023年6月
l董付国.《Python程序设计实验指导书》,ISBN:978-7-302-52579-0清华大学出版社,2019年4月
2.参考书目
l董付国.《Python程序设计(第3版)》(微课版),ISBN:978-7-302-55083-9,清华大学出版社,2020年6月
l董付国.《Python程序设计基础(第3版)》,ISBN:978-7-302-61103-5,清华大学出版社,2022年12月
l董付国.《Python程序设计与数据采集(微课版)》,ISBN:978-7-115-61183-3,人民邮电出版社,2023年5月
================
温馨提示:
关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过190次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1300篇原创技术文章;发送消息“会议”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过700节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习2601道客观题和655道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。