1. 学习准备
1.1. 学习大纲
- Python
- Linux 基础学习(阅读书籍推荐《鸟哥的Linux私房菜:基础学习篇》,也可以参考我写的小册子:Debian GNU/Linux)
- 使用 Python 进行数据分析
- 应用实例
1.2. 课程安排
注意:选项后面的数字表示课时
- Python 基础入门(25课时)
- Python 简介和环境搭建(2)
- Python 基础语法(1)
- Python 数据类型(4)
- Python 流程控制语句(2)
- Python 迭代器与生成器(1)
- Python 函数(1)
- Python 数据结构(2)
- Python 模块(1)
- Python 输入和输出(1)
- Python 文件操作(2)
- Python 错误和异常(1)
- Python 面向对象(3)
- Python 命名空间与作用域(1)
- Python 标准库(1)
- Python 实例精讲(3)
- Python 进阶(22课时)
- Python 正则表达式(2)
- Python CGI 编程(2)
- Python MySQL(3)
- Python MongoDB(3)
- Python 网络编程(2)
- Python SMTP 邮件发送(2)
- Python 多线程(2)
- Python XML 解析(2)
- Python JSON 解析(2)
- Python web 框架:uWSGI(2)
- Linux 操作系统(22课时)
- Linux 简介与安装(2)
- Linux 常用命令(6)
- Linux VIM
- Linux 系统管理(8)
- Linux 服务管理(6)
- Python 数据分析(30课时)
- 数据分析介绍(0.5)
- jupyter 和 conda 的应用(1)
- matplotlib 绘图(6)
- numpy(4)
- pandas-series(1)
- pandas-dataFrame(2)
- 统计方法和离散化(2)
- 数据合并和分组聚合(3)
- pandas-时间序列(1)
- pandas-案例
- PM2.5(1)
- 豆瓣电视(1)
- 互联网金融项目(3)
1.3. 认识操作系统(Operating System)
1.3.1. OS 作为接口的示意图
1.3.2. 不同应用领域主流 OS
- 桌面 OS
- Windows
- MacOS
- Linux
- 服务器 OS
- Windows Server
- Linux:: 安全稳定,占有率高
- 嵌入式 OS
- Windows SE:: 基本上没人用了
- Linux:: 主流
- 移动设备 OS
- iOS
- Android
1.3.3. 虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
- 虚拟系统生成全新虚拟镜像,具有真实操作系统完全一样的功能。
- 独立安装软件、保存数据,不对真正的操作系统产生任何影响。
- 操作系统与虚拟操作系统能灵活切换。
1.4. 软件准备
1.4.1. Google Chrome
当下最流行的浏览器。 常用快捷键:
- Google-Chrome:Help>Help Center
- https://zhaorengui.github.io/software/2021/02/28/google-chrome-keyboard-shurtcuts/
1.4.2. Cygwin
Cygwin是一个可原生运行于Windows系统上的POSXI兼容环境。具体参见资料:Cygwin是什么
1.4.3. IDE(Integrated Development Environment): PyCharm
1.4.4. Git
版本控制软件
1.5. 励志公式
1.01^365 = 37.78 0.99^365 = 0.03
积硅步以致千里,积怠惰以致深渊。
1.02^365 = 1377.41 0.98^365 = 0.0006
只比你努力一点的人,其实已经甩你很远。
1.01^3 * 0.99^2 < 1.01
三天打鱼,两天晒网,终将一无所获。
2. Python 入门
2.1. Python 简介
- Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。
- 官方宣布于 2020 年 1 月 1 日, 停止 Python 2 的更新。Python 2.7 被确定为最后一个 Python 2.x 版本。
- 特点
- 易于学习、易于阅读、易于维护
- 丰富的库,且是跨平台的,可移植
- 可扩展
- 可嵌入
- 官网:https://www.python.org/
- 基础教程参考:
- 入门练习:https://learnxinyminutes.com/docs/python/
2.2. Python 环境搭建
2.2.1. Windows
- 打开 Python 官网后,下载 Windows 版本的 Python 软件包,一般就下载 “Windows installer (64-bit)”。
安装时,注意勾选 Add Python 3.x to PATH,安装完成后,可以通过按 Win+R 键,输入 cmd 调出命令提示符,输入 python 来验证。
// 查看 Python 版本 > python -V
- 菜单》打开IDLE(Python)
在 Windows 设置环境变量,在命令提示框中(cmd) : 输入
path=%path%;C:\Python // 按下"Enter"。 注意: C:\Python 是Python的安装目录。
// 也可以参照 Python 3 菜鸟教程,通过右键点击"计算机",然后点击"属性"来设置。
2.2.2. Unix & Linux
源码方式安装
# tar -zxvf Python-3.6.1.tgz # cd Python-3.6.1 # ./configure # make && make install
- 包管理工具安装
Debian/Ubuntu
$ sudo apt-get install python3
RedHat/CentOS
$ sudo yum install python3
Mac
$ brew install python3
- 环境变量配置
bash
$ vim ~/.bash_profile PATH="$PATH:/usr/local/bin/python"
zsh(Mac)
$ vim ~/.zshrc PATH="/usr/local/bin/python:$PATH"
2.2.3. 执行 Python 程序的三种方式
- 解释器:python/python3
- 交互式:ipython
- IDE:PyCharm
2.3. Python 基本语法
2.3.1. 基础语法
2.3.1.1. 编码
- 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
2.3.1.2. 标识符
2.3.1.3. 保留字
2.3.1.4. 注释
2.3.1.5. 语法格式
- 行与缩进
- 多行语句
- 同一行显示多条语句
- 空行
2.3.1.6. import 与 from…import
2.3.1.7. 命令行参数
2.3.2. 基本数据类型
Python3 中有六个标准的数据类型:
- Number
- String
- List
- Tuple
- Set
- Dictionary
其中,不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
2.3.2.1. Number
2.3.2.2. String
2.3.2.3. List
2.3.2.4. Tuple(元组)
2.3.2.5. Set(集合)
2.3.2.6. Dictionary
2.3.3. 运算符
2.3.4. 流程控制语句
2.3.4.1. 练习题:输入某年某月某日,判断这一天是这一年的第几天?
# -*- coding: utf-8 -*- # @Date : 2021/02/10 # @Time : 19:30 # @Author : zrg # 需求:输入某年某月某日,判断这一天是这一年的第几天? # 思路:以5月20日为例,应该先把前四个月的加起来,然后再加上20天即本年的第几天 # 特殊情况: 如果年份为闰年且输入月份大于2时需考虑多加一天 year = int(input("Year:")) month = int(input("Month:")) day = int(input("Day:")) sum_day = 0 # 第几天 leap_year = 0 # 闰年 # 使用元组定义天数 # 如果输入的月份是1月份,则直接计算day即可 # 如果输入的月份是2月份,则要先计算出1月份的天数,即为31天 # 以此类推 # 1 2 3 4 5 6 7 8 9 10 11 12 # 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334) # 根据输入的月份,计算出前几个月的天数 if 0 < month <= 12: sum_day = months[month - 1] else: print("输入的月份有误") # 判断是否为闰年: # 1.能被400整除 或者是 2.能被4整除并且不能被100整除 if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): leap_year = 1 # 判断如果是闰年并且输入的月份大于2则在总的天数上加1 if leap_year == 1 and month > 2: sum_day += day + 1 else: sum_day += day print("It is the {sum_day}th day.")
2.3.5. 迭代器与生成器
2.3.6. 函数
2.3.7. Python 数据结构
2.3.8. 输入输出
2.3.9. 文件操作
2.4. Python 错误和异常
2.5. Python 面向对象
2.5.1. 什么是面向对象?
2.5.2. 类和对象
2.5.3. 方法重写
2.5.4. 继承
2.5.5. 命名空间/作用域
2.6. Python 标准库
2.6.1. OS 模块
2.6.2. 文件通配符:glob 模块
2.6.3. 命令行参数:以链表形式存储于 sys 模块的 argv 变量
2.6.4. 正则匹配:re模块
2.6.5. 数学:math 模块
2.6.6. 网络通信模块:urllib
2.6.6.1. socket
2.6.6.2. smtplib
2.6.7. 多线程:_thread 和 threading 模块
2.6.8. datetime 模块
2.6.9. 数据压缩:zlib,gzip,bz2,zipfile,和 tarfile 等模块
2.6.10. 性能度量:timeit
2.6.11. 测试模块:doctest模块
2.6.12. XML
2.6.13. JSON
2.7. Python CGI 编程
2.8. Python 数据库操作
2.8.1. SQL 入门
2.8.1.1. 简介
- SQL 是用于访问和处理数据库的标准的计算机语言。
- 什么是 SQL?
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI(美国国家标准化组织) 的标准计算机语言
- SQL 能做什么?
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的记录
- SQL 可更新数据库中的数据
- SQL 可从数据库删除记录
- SQL 可创建新数据库
- SQL 可在数据库中创建新表
- SQL 可在数据库中创建存储过程
- SQL 可在数据库中创建视图
- SQL 可以设置表、存储过程和视图的权限
- RDBMS
- RDBMS 指的是关系型数据库管理系统。
- RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。
- RDBMS 中的数据存储在被称为表(tables)的数据库对象中。表是相关的数据项的集合,它由列和行组成。
2.8.1.2. SQL 语法
- 数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。 SQL 语句
在数据库上执行的大部分工作都由 SQL 语句完成。示例:SELECT LastName FROM Persons
注意事项:
- SQL 对大小写不敏感!
- SQL 语句后面的分号?分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。某些数据库系统要求在每条 SQL 命令的末端使用分号。
SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。如下所示:- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
2.8.1.3. SQL 语句
- SELECT 语句
- DISTINCT
- WHERE 子句
- AND & OR 运算符
- ORDER BY 子句
- INSERT INTO 语句
- UPDATE 语句
- DELETE 语句
- TOP 子句
- LIKE 操作符和通配符
- IN 操作符
- BETWEEN 操作符
- Alias(别名)
- JOIN & INNER JOIN & LEFT JOIN & RIGHT JOIN & FULL JOIN
- UNION & UNION ALL
- SELECT INTO
- CREATE DATABASE 语句
- CREATE TABLE 语句
- 约束 (Constraints)
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
- CREATE INDEX 语句
- DROP Index/Table/DataBase
- ALTER TABLE 语句
- VIEW(视图)
2.8.1.4. SQL 数据类型
2.8.1.5. SQL 函数
2.8.2. MySQL
2.8.2.1. mysql-connector 驱动
2.8.2.2. PyMySQL 驱动
2.8.3. MongoDB
2.9. Python 常见 Web 框架
2.9.1. uWSGI
2.9.2. Django
2.9.3. Flask
3. 使用 Python 数据分析
4. 参考资料
- data science community:https://www.kaggle.com/