目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
任务10.3  Python第三方库举例


Python作为一门理想的集成语言,将各种技术绑定在一起,除了为用户提供更方便的功能之外,还是一个理想的粘合平台,为开发人员与外部库的低层次集成人员之间搭建连接,用C∕C++实现更高效的算法。开发者在Python中封装了很多优秀的依赖库,如下表所示。


库名

        介                  绍

NumPy

支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

通常与SciPy(Scientific Python)和Matplotlib(绘图库)一起使用,这种组合广泛用于替代Matlab,是一个流行的技术平台

pandas

一款开放源码的BSD (Berkeley Software Distribution,伯克利软件套件)许可的Python库。基于NumPy创建,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。pandas应用领域广泛,包括金融,经济,统计,分析等学术和商业领域

SQLAlchemy

一种既支持原生SQL,又支持ORM的工具,ORM是Python对象与数据库关系表的一种映射关系,可有效提高写代码的速度,同时兼容多种数据库系统,如sqlite、mysql、postgresql,代价为性能上的一些损失,其余类似的数据库开发库还有MySQL-python、mysqlclient、PyMySQL


库名

                       介    绍

Matplotlib

第一个Python可视化库,有许多别的程序库都是建立在其基础上或者直接调用该库,可以很方便的得到数据的大致信息,功能非常强大,也非常复杂

Seaborn

利用了matplotlib,用简洁的代码来制作好看的图表,跟matplotlib最大的区别为默认绘图风格和色彩搭配都具有现代美感

scikit-learn

Python机器学习标准库,又称sklearn,在众多机器学习模块中比较优秀,汇集了各种监督学习、非监督学习、半监督学习的方法,提供现成的功能来实现诸如线性回归、分类器、SVM、k-均值和神经网络等多种算法,并包含一些可直接用于训练和测试的样本数据集。除scikit-learn以外,Python中其他类似的机器学习库还有Orange3、XGBoost、NuPIC、Milk

TensorFlow

由Google团队开发的神经网络模块,一个采用数据流图来进行数值计算的开源软件库,可绘制计算结构图,为一系列可人机交互的计算操作,编辑好的Python文件将被转换成更高效的C++,并在后端进行计算。其他比较常用的深度学习库还有Caffe、Theano、Keras

python2.6版本后,引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics)。

(一)NumPy简介

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

NumPy的主要功能:

  1)ndarray,一个多维数组结构,高效且节省空间

  2)无需循环对整组数据进行快速运算的数学函数

  3)读写磁盘数据的工具以及用于操作内存映射文件的工具

  4)线性代数、随机数生成和傅里叶变换功能

  5)用于集成C、C++等代码的工具

pyhton里面安装、引入方式:

  安装方法(在命令行方式):pip install numpy

  引用方式:import numpy as np

例:形状相同的数组间运算

import numpy as np

a = np.random.randint(1, 10, (2, 3))

b = np.random.randint(2, 8, (2, 3))

print(a)

print(b)

print(a+b)

print(a-b)


(2)Pandas 简介

 Pandas是一种基于 NumPy 的开源的数据分析工具包,提供了高性能、简单易用的数据结构和数据分析函数。Pandas提供了方便的类表格和类SQL的操作,同时提供了强大的缺失值处理方法,可以方便的进行数据导入、选取、清洗、处理、合并、统计分析等操作。

例:

#DataFrame创建实例

import pandas as pd

import numpy as np

print("-"*30,'DataFrame创建实例')

names = ["张三", "李四", "王五"]

ages = [20, 18, 19]

d_1 =pd.DataFrame({"姓名": names, "年龄": ages})

print(d_1)

d_2 =pd.DataFrame([names, ages])

print(d_2)

s_names = pd.Series(names,index=["A", "B", "C"])

s_ages = pd.Series(ages, index=["B", "C", "A"])

d_3 = pd.DataFrame({"姓名": s_names, "年龄": s_ages})

print(d_3)

d_4 =pd.DataFrame(np.random.randint(10, 30, (3, 4)))

print(d_4)

s_names ={"A01": "中山大学", "A05": "广东财大", "A08": "广东师大"}

s_types = {"A05": "财经类","A01": "综合类", "A08": "师范类"}

d_5 = pd.DataFrame({"学校名称": s_names,"学校类型": s_types})

print(d_5)

d_6 = pd.DataFrame({"学校名称": s_names,"学校类型": s_types},  index=["A01", "A03", "A05"])

print(d_6)

print("-"*30,'DataFrame中数据访问,将 DataFrame 看作字典')

s_names = pd.Series(["张三", "李四", "王五", "赵六", "钱七"], index=list("ABCDE"))

s_ages = pd.Series([18, 20, 18, 19], index=list("ABDE"))

d_1 =pd.DataFrame({"姓名": s_names, "年龄": s_ages})

print(d_1)

print(d_1["姓名"])  # 列名为关键字获取一列数据

print(d_1.姓名)     # 列名为属性获取一列数据

print(d_1["姓名"] is d_1.姓名)  # 是否为同一对象

print(d_1["姓名"]["A"])         #获取列中某一个数据


print("-"*30,'DataFrame中数据访问,将DataFrame看作二维数组')

print(d_1.T)  # 行列转置

print(d_1[d_1.年龄 == 18])  # 布尔表达式

print(d_1[1:3])    # 行切片,隐式索引

print(d_1["A":"D"])  # 行切片,显示索引

print(d_1[["年龄", "姓名"]])  #同时获取多列信息

print(d_1.iloc[3, 1])  # 根据位置取值

print(d_1.iloc[1:3, 0:1])  #根据位置切片

print(d_1.loc["D", "姓名"])  # 根据显式索引取值

print(d_1.loc["A": "D","姓名":"年龄"])


print("-"*30,'DataFrame使用举例')

d_1 = pd.DataFrame(np.random.randint(10, 30, (20, 10)),  index=[chr(x)

for x in range(116, 96 , -1)],  columns=[chr(x) for x in range(65, 75)])

print(d_1)  # 打印

print(d_1.shape)  # 形状:(20, 10)

print(d_1.index)  # 行索引信息

print(d_1.columns)  # 列索引信息

print(d_1.axes)  # 同时获取行和列索引信息

print(d_1.values)  # 获取值信息

print(d_1.dtypes)  # 获取每一列类型信息


print(d_1.sort_values(["C", "D"]))

print(d_1.sort_index())  #根据行索引排序

print(d_1.rank(method="min"))

print(d_1.rename(index={"o": "OO"}))

print(d_1.set_index("C"))  #以C列为索引

print(d_1.groupby("D").agg("mean"))


import xlwt

print(d_1.info())  # 基本信息

print(d_1.head(8))  # 前8行数据,DataFrame形式

print(d_1.tail())  # 最后5行数据,DataFrame形式

print(d_1.describe())  #统计描述信息,DataFrame形式

print(d_1.count())  # 每一列的非空值数量,Series形式

print(d_1.sample(5, axis=0))  # 随机抽5行

print(d_1.sample(5, axis=1))  #随机抽5列

print(d_1.apply(np.sum, axis=1))  # 对每行求和

print(d_1.applymap(np.square))  # 对每个元素求平方

print(d_1.to_dict(orient="list"))  #转换为字典

print(d_1.to_excel("data.xls"))  # 保存到Excel文件

print("-"*30,'DataFrame的合并操作')

s_names = pd.Series(["张三", "李四", "王五","赵六", "钱七"], index=list("ADBCE"))

s_ages = pd.Series([18, 20, 18, 19],index=list("ADBC"))

s_nums = pd.Series(["001", "003", "006", "008"],index=list("ADCE"))

s_names_2 = pd.Series(["张三", "李四", "孙五", "周六"],index=list("ADCE"))

d_1 = pd.DataFrame({"姓名": s_names, "年龄": s_ages})

d_2 = pd.DataFrame({"姓名": s_names_2, "学号": s_nums})

print(d_1.join(d_2,rsuffix="_r"))

print(d_1.join(d_2.set_index("姓名"), on="姓名"))  # 默认左连接

print(d_1.join(d_2.set_index("姓名"), on="姓名", how="right"))  # 右连接

print(d_1.join(d_2.set_index("姓名"), on="姓名", how="inner"))  # 内连接

print(d_1.join(d_2.set_index("姓名"), on="姓名", how="outer"))  # 外连接