Python 数据分析基础知识部分

Python 数据分析基础知识部分

  • 1. Python语言基础、IPython 及 Jupyter notebook
    • 1.1 Jupyter notebook
    • 1.2 Python 语言基础
      • 1.2.1 语言语义
      • 1.2.2 标量类型
      • 1.2.3 控制流
  • 2. 内建数据结构、函数及文件
    • 2.1 数据结构和序列
      • 2.1.1 元组
      • 2.1.2 列表
      • 2.1.3 内建序列函数
      • 2.1.4 字典
      • 2.1.5 集合
      • 2.1.6 列表、集合和字典的推导式
    • 2.2 函数
      • 2.2.1 全局变量、返回多个值、函数是对象
      • 2.2.2 匿名函数(Lambda)
      • 2.2.3 生成器
      • 2.2.4 错误和异常处理
    • 2.3 文件与操作系统

1. Python语言基础、IPython 及 Jupyter notebook

  1. Python 是一种解释型语言,Python 解释器通过一次执行一条语句来运行程序;

1.1 Jupyter notebook

  1. Tab 补全;
  2. 内省:
    a. 在变量名前后使用 ?,显示对象的概要信息/函数的文档字符串
    b. 使用 ??,显示函数源代码
    c. np.*load*?:显示所有匹配通配符表达式的命名
  3. %run:运行任意的Python文件;
  4. %load:将脚本导入一个代码单元;
  5. %matplotlib 集成,必须输入,否则无法显示创建的图片

1.2 Python 语言基础

1.2.1 语言语义

  1. 缩进,而不是大括号;
  2. 一切皆为对象;
  3. 注释:#
  4. 函数和对象方法调用:位置参数、关键字参数;
  5. 变量与参数传递:对变量赋值时,创建了一个指向等号右边对象的引用;赋值也被称为绑定;
  6. 动态引用、强类型:Python中的对象引用并不涉及类型;Python为强类型语言;使用 isinstance(a, (int, float)) 检查对象是否为特定类型的实例;
  7. 二元运算符(不太熟的几个):
操作符 描述
a // b a 整除以 b
a ** b a 的 b 次方
a & b a 与 b,对于整数则是按位 and
a | b a 或 b,对于整数则是按位 or
a ^ b a 异或 b,对于整数则是按位异或

1.2.2 标量类型

类型 描述
None Null
str 字符串(包含Unicode UTF-8 编码)
bytes 原生 ASCII字节(或 Unicode 编码字节)
float 双精度 64 位浮点数
bool True or False
int 任意精度无符号整数
  1. 数值类型:int, float:整数除法会将结果自动转换位浮点数;
  2. 字符串
    a. 单引号 or 双引号;
    b. 多行字符串则使用3个单引号 or 双引号;
    c. 字符串是不可变的;
    d. 转移符号 \;
    e. 原生字符 r’…’;
    f. 格式化字符串:.format
  3. 日期和时间:datetime 模块,datetime.datetime 为不可变类型
    a. dt = datetime(year, month, day, hour, minute, second)
    b. 使用 .date 和 .time 获取日期和时间;
    c. .strftime 方法将 datetime 转换位字符串;字符串通过 datetime.strptime 函数转换为 datetime 对象
    e. datetime 格式化详细说明:
类型 描述
%Y 四位的年份
%y 两位的年份
%m 两位的月份[01, 12]
%d 两位的天数值 [01, 31]
%H 小时值(24 小时制)[00, 23]
%I 小时值(12 小时制)[01, 12]
%M 两位的分钟值 [00, 59]
%S 秒值 [00, 61] (60, 61用于区分闰秒)
%w 星期值 [0(星期天), 6]
%U 一年中的第几个星期值 [00, 53],星期天为每周第一天,第一个星期天前一周是第0周
%W 一年中的第几个星期值 [00, 53],星期一为每周第一天,第一个星期一前一周是第0周
%z UTC 时区偏置,格式为 +HHMM 或 -HHMM,如果是简单时区则为空
%F %Y-%m-%d 的简写
%D %m/%d/%y 的简写

1.2.3 控制流

  1. if, elif 和 else
if condition_1:
	do something
elif condition_2:
	do something
else:
	do something
  1. for 循环:
for value in condition:
	if condition_2:
		break	# 嵌套循环里,break 只结束最内层的 for 循环
	do something
  1. while 循环:
while condition:
	if condition_2:
		break   # break 退出整个循环
	if condition_3:
		continue   # continue 退出当前循环
	do something
  1. pass:
if condition:
	do something
else:
	pass   # 啥都不干	
  1. range:
    迭代器
    range(start, stop, step)

  2. 三元表达式:

value = true-expr if condition else false-expr

2. 内建数据结构、函数及文件

2.1 数据结构和序列

Python中的序列索引都是从 0 开始的

2.1.1 元组

  1. 元组是一种固定长度,不可变的 Python 序列,但如果元组中的一个对象是可变的,可对其进行内部修改
  2. 使用 tuple 函数将任意序列或迭代器转换为元组;
  3. 元组拆包:
    可轻易地交换变量名;可遍历元组或列表组成的序列;特殊语法*rest(* 加上任意变量名)
tup = (1, 2, 3)
a, b, c = tup    # 拆包
b, a = a, b   # 交换变量名 
  1. 元组方法: count

2.1.2 列表

列表的长度和内容是可以改变的
使用 [ ] 或 list 函数来定义列表

方法或函数 作用
.append(component) 将元素添加到列表的尾部
.insert(index, component) 将元素插入到指定的列表位置
.pop(index) 将特定位置的元素移除并返回
.remove(component) 定位第一个符合要求的值并移除它
.extend(list) 向列表中加入多个元素
.sort(key=len) 列表排序
  1. 二分搜索和已排序列表的维护:
    bisect 模块:
    bisect.bisect(list, component) 返回元素应当被插入的位置,并保持序列排序;
    bisect.insort(list, component) 将元素插入到相应位置

  2. 切片: list[start : end : step]
    start 和 end 为负数:从尾部开始索引
    step 为负数:倒序(可对列表或元组进行翻转)

2.1.3 内建序列函数

函数 描述
enumerate(seq) 返回 (i, value) 元组序列,用于遍历序列的同时追踪当前元素的索引
sorted(seq, key=len) 返回一个根据任意序列中的元素新建的已排序列表
zip(seq1, seq2) 将列表、元组或其他序列的元素配对,新建一个元组构成的列表,生成的列表长度由最短的序列决定
zip(*seq) seq 为已“配对”的序列,拆分已配对的序列,也可理解为转置,zip的逆操作
reversed(seq) 为一个倒序生成器,需使用list或for循环进行实例化才产生倒序的对象(如列表)

2.1.4 字典

一系列键值对

函数方法等 作用
value = dic[key] 获取与键相关联的值
dic[new_key] = new_value 添加键值对
dic[key] = new_value 修改值
del dic[key] 删除键值对
dic.pop(key) 删除的同时返回值
dic1.update(dic2) 合并 dic1 和 dic2(若 dic2 和 dic1 中有相同的键,则dic1中的值被覆盖)
dic.keys() 键的迭代器
dic.values() 值的迭代器
dict(zip(seq1, seq2) 由序列生成字典
dic.get(key, default_value) 当 key 是 dic 的键时返回对应的值,否则返回 default_value

2.1.5 集合

set 函数 or 大括号,类似于列表,但每个元素都是独一无二的
Python 集合操作(日后补充)

2.1.6 列表、集合和字典的推导式

  1. 列表推导式:[expr for val in collection if condition]
  2. 字典推导式:{key-expr: value-expr for value in collection if condition}
  3. 列表推导式可嵌套,与 for 嵌套循环等效,注意 for 表达式的顺序应当和写嵌套 for 循环来替代列表推导式的顺序一致
    例子:
names_of_interest = []
for names in all_data:
	enough_es = [name for name in names if name.count('e') >= 2]
	names_of_interest.extend(enough_es)

# 等效的嵌套推导式
result = [name for names in all_data for name in names if name.count('e') >= 2]

2.2 函数

函数声明:

def my_function(x, y, z=1.5):
	if z > 1:
		return z * (x + y)
	else:
		return z / (x + y)

关键字参数与位置参数:

  1. 关键字参数常用于指定默认值或可选参数(z);
  2. 关键字参数必须更在位置参数(x,y)后;
  3. 指定关键字参数可以不考虑顺序;
  4. 可以使用关键字参数向位置参数传参;

2.2.1 全局变量、返回多个值、函数是对象

  1. 全局变量:需在函数内部使用 global 关键字声明
  2. 返回多个值:实质为返回一个元组,之后被拆包为多个结果变量
  3. 函数是对象:可将多个函数组合成列表,可将函数作为参数传递给其他函数

2.2.2 匿名函数(Lambda)

通过单个语句生成函数,其结果是返回值

lambda x: x ** 2

2.2.3 生成器

  1. 创建生成器:在函数中使用 yield 替代 return;
  2. 实际调用生成器时,代码不会立即执行,直到请求生成器中的元素时,它才会执行;
  3. 生成器表达式:只需将列表推导式中的中括号改为小括号

2.2.4 错误和异常处理

def function(x):
	try:
		do something		#没有出错时执行
	except [Error]:             
		do something		#出现【特定】错误时执行
	[else:
		do something]		#当 try 成功执行时才会执行

2.3 文件与操作系统

with open(path[, 'w']) as f:
	lines = [x.rstrip() for x in f]

python 文件模式:

模式 描述
r 只读模式
w 只写模式,创建新文件(清除路径下的同名文件中的数据)
x 只写模式,创建新文件,但存在同名路径时会创建失败
a 添加到已经存在的文件(如果不存在就创建)
r+ 读写模式
b 二进制文件的模式,添加到别的模式中(比如 ‘rb’ 或 ‘wb’)
t 文件的文本模式(自动将字节解码为 Unicode)。如果没有指明模式,默认使用此模式,可以添加到别的模式中(例如 ‘rt’ 或 ‘xt’)

重要的 Python 文件方法或属性

方法 描述
read([size]) 将文件数据作为字符串返回,可选参数 size 控制读取的字节数
readlines([size]) 返回文件中行内容的列表,size 参数可选
write(str) 将字符串写入文件
writelines(strings) 将字符串序列写入文件
close() 关闭文件
flush() 将内部 I/O 缓冲器内容刷新到硬盘
seek(pos) 移动到指定的位置(整数)
tell() 返回当前的文件位置,返回值是整数
closed 如果文件已关闭,则为 True

你可能感兴趣的:(数据分析学习)