由于工作需要,这两天开始搞Python,时间还是非常紧迫的。基本上简单看下语法,就得开始上手撸功能,不过整体感觉比java入门要容易很多。但这种碎片化的学习,终归还是不太系统,不便于后期技术成长。
于是,今天特意搜了不少相关Python学习的方法,有几个觉得挺有特点,取其所长,以备后用。
有人以形入手,运用手绘和思维导图来进行归纳型学习。
先PO一张广为流传的Python图例
学一门新的语言,认识很重要,类似这种的还有思维导图,希望自己后续也能出一些有趣、有料的教程。
#Tips
归纳性学习非常重要,可以提高兴趣、加深印象,建议初学者可以事先找一份学习纲要,学一段时间后自己画脑图做下总结。
还有人是以实际需求入手,循循善诱的递进式学习。
全文目标明确,“用python做数据分析”,总共分为三大部分:做Python数据分析必知的语法,如何实现爬虫,怎么做数据分析。
- 必须知道的两组Python基础术语
A.变量和赋值
Python可以直接定义变量名字并进行赋值的,例如我们写出 a = 4时,Python解释器干了两件事情:
在内存中创建了一个值为4的整型数据
在内存中创建了一个名为 a 的变量,并把它指向4
用一张示意图表示 Python变量和赋值的重点:
例如下图代码,“=”的作用就是赋值,同时Python会自动识别数据类型:
a=4 #整型数据
b=2 #整型数据
c=“4” #字符串数据
d=“2” #字符串数据
print(“a+b结果为”,a+b)#两个整数相加,结果是6
print(“c+d结果为”,c+d)#两个文本合并,结果是文本“42”
#以下为运行结果
>>>a+b结果为 6
>>>c+d结果为 42
B.数据类型
在初级的数据分析过程中,有三种数据类型是很常见的:
列表list(Python内置)
字典dict(Python内置)
DataFrame(工具包pandas下的数据类型,需要import pandas才能调用)
它们分别是这么写的:
列表(list):
#列表
liebiao=[1,2.223,-3,'刘强东','章泽天','周杰伦','昆凌',['微博','B站','抖音']]
list是一种 有序的集合,里面的元素可以是之前提到的任何一种数据格式和数据类型(整型、浮点、列表……),并可以随时指定顺序添加其中的元素,其形式是:
#list是一个可变的有序表,所以,可以往list中追加元素到末尾:
liebiao.append('瘦')
ptint(liebiao)
#结果1
>>>[1, 2.223, -3, '刘强东', '章泽天', '周杰伦', '昆凌', ['微博', 'B站', '抖音'], '瘦']
#也可以把元素插入到指定的位置,比如索引号为5的位置,插入“胖”这个元素:
liebiao.insert(5, '胖')
ptint(liebiao)
#结果2
>>>[1, 2.223, -3, '刘强东', '章泽天', '胖', '周杰伦', '昆凌', ['微博', 'B站', '抖音'], '瘦']
字典(dict):
#字典
zidian={'刘强东':'46','章泽天':'36','周杰伦':'40','昆凌':'26'}
字典使用 键-值(key-value)存储,无序 ,具有极快的查找速度。以上面的字典为例,想要快速知道周杰伦的年龄,就可以这么写:
zidian['周杰伦']
>>>'40'
dict内部存放的顺序和key放入的顺序是没有关系的,也就是说,"章泽天"并非是在"刘强东"的后面。
DataFrame:
DataFrame可以简单理解为 Excel里的表格格式。导入pandas包后,字典和列表都可以转化为DataFrame,以上面的字典为例,转化为DataFrame是这样的:
import pandas as pd
df=pd.DataFrame.from_dict(zidian,orient='index',columns=['age'])#注意DataFrame的D和F是大写
df=df.reset_index().rename(columns={'index':'name'})#给姓名加上字段名
和excel一样,DataFrame的任何一列或任何一行都可以单独选出进行分析。
以上三种数据类型是python数据分析中用的最多的类型,基础语法到此结束,接下来就可以着手写一些函数计算数据了。
#Tips
这种目标性导向的学习方法,适合有一定编程经验,并想迅速感知下python特点的情况。如果刚好跟工作场景匹配,那是最好不过了。
传送门: https://www.shangyexinzhi.com/article/details/id-142352/
还有人是以涅槃打坐的“苦行僧”,用升级打怪的模式学习。
有位名叫骆昊 (jackfrued) 的同行,以自己的见解,为大家规划了一条从“从新手到大师”的百天之路,GitHub 目前star已7W+。
最初的15天都是Python基础的修炼,整个流程上算是一个提纲,跟目前培训机构的课程表也大同小异,上手后再做提炼优化。
Day01 - 初识Python
- Python简介 - Python的历史 / Python的优缺点 / Python的应用领域
- 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境
- 从终端运行Python程序 - Hello, world / print函数 / 运行程序
- 使用IDLE - 交互式环境(REPL) / 编写多行代码 / 运行程序 / 退出IDLE
- 注释 - 注释的作用 / 单行注释 / 多行注释
Day02 - 语言元素
- 程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制
- 变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换
- 数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码
- 运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级
- 应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年
Day03 - 分支结构
- 分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
- if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if
- 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积
Day04 - 循环结构
- 循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
- while循环 - 基本结构 / break语句 / continue语句
- for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序
- 应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡
Day05 - 构造程序逻辑
- 经典案例:水仙花数 / 百钱百鸡 / Craps赌博游戏
- 练习题目:斐波那契数列 / 完美数 / 素数
Day06 - 函数和模块的使用
- 函数的作用 - 代码的坏味道 / 用函数封装功能模块
- 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数
- 调用函数 - Python内置函数 / 导入模块和函数
- 函数的参数 - 默认参数 / 可变参数 / 关键字参数 / 命名关键字参数
- 函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值
- 作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键字
- 用模块管理函数 - 模块的概念 / 用自定义模块管理函数 / 命名冲突的时候会怎样(同一个模块和不同的模块)
Day07 - 字符串和常用数据结构
- 字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法
- 列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历
- 列表常用操作 - 连接 / 复制(复制元素和复制数组) / 长度 / 排序 / 倒转 / 查找
- 生成列表 - 使用range创建数字列表 / 生成表达式 / 生成器
- 元组的使用 - 定义元组 / 使用元组中的值 / 修改元组变量 / 元组和列表转换
- 集合基本用法 - 集合和列表的区别 / 创建集合 / 添加元素 / 删除元素 / 清空
- 集合常用操作 - 交集 / 并集 / 差集 / 对称差 / 子集 / 超集
- 字典的基本用法 - 字典的特点 / 创建字典 / 添加元素 / 删除元素 / 取值 / 清空
- 字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
- 基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角
- 综合案例 - 双色球选号 / 井字棋
Day08 - 面向对象编程基础
- 类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念
- 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / str方法
- 使用对象 - 创建对象 / 给对象发消息
- 面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态
- 基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类
Day09 - 面向对象进阶
- 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用slots
- 类中的方法 - 实例方法 / 类方法 / 静态方法
- 运算符重载 - add / sub / or /getitem / setitem / len / repr / gt / lt / le / ge / eq / ne / contains
- 类(的对象)之间的关系 - 关联 / 继承 / 依赖
- 继承和多态 - 什么是继承 / 继承的语法 / 调用父类方法 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法
- 综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类
Day10 - 图形用户界面和游戏开发
- 使用tkinter开发GUI程序
- 使用pygame三方库开发游戏应用
- “大球吃小球”游戏
Day11 - 文件和异常
- 读文件 - 读取整个文件 / 逐行读取 / 文件路径
- 写文件 - 覆盖写入 / 追加写入 / 文本文件 / 二进制文件
- 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句
- 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用
Day12 - 字符串和正则表达式
- 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / in和 not in运算符 / is开头的方法 / join和split方法 / strip相关方法 / pyperclip模块 / 不变字符串和可变字符串 / StringIO的使用
- 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用re模块实现正则表达式操作(匹配、搜索、替换、捕获)
- 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法
- 应用案例 - 使用正则表达式验证输入的字符串
Day13 - 进程和线程
- 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景
- 使用进程 - fork函数 / multiprocessing模块 / 进程池 / 进程间通信
- 使用线程 - thread模块 / threading模块 / Thread类 / Lock类 / Condition类 / 线程池
Day14 - 网络编程入门和网络应用开发
- 计算机网络基础 - 计算机网络发展史 / “TCP-IP”模型 / IP地址 / 端口 / 协议 / 其他相关概念
- 网络应用模式 - “客户端-服务器”模式 / “浏览器-服务器”模式
- 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据
- Python网络编程 - 套接字的概念 / socket模块 / socket函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端 / SocketServer模块
- 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib模块 / poplib模块 / imaplib模块
- 短信服务 - 调用短信服务网关
Day15 - 图像和文档处理
- 用Pillow处理图片 - 图片读写 / 图片合成 / 几何变换 / 色彩转换 / 滤镜效果
- 读写Word文档 - 文本内容的处理 / 段落 / 页眉和页脚 / 样式的处理
- 读写Excel文件 - xlrd模块 / xlwt模块
- 生成PDF文件 - pypdf2模块 / reportlab模块
#Tips
这种学习方法是最基本,也是最枯燥,但也是最扎实的学习方式,适合在有充裕时间情况下进行。如果有一定编程经验,建议从手册入手,以这篇做技术点校对。