【1】第20期 学习者手册(Pandas)
【2】第一章 预备知识
1. Python 基础
1.1 列表推导式与条件赋值
问题1:生成 [0, 2, 4, 6, 8] 样式的数字序列
- 写法1:定义函数+循环
def my_func(x):
return x*2
list = []
for i in range(5):
list.append(my_func(i))
print(list)
- 写法2:定义函数+列表推导式
list = [my_func(i) for i in range(5)]
print(list)
列表推导式
[* for i in *],第一个*表示映射函数,其输入为后面i指代的内容,第二个*表示迭代的对象。
问题2:用多层嵌套列表推导式生成 ['a_c', 'a_d', 'b_c', 'b_d']
[a+'_'+b for a in ['a', 'b'] for b in ['c', 'd']]
问题3:用带有 if 选择的条件赋值,即value = a if condition else b 实现截断列表中超过5的元素,即超过5的用5代替,小于5的保留原来的值
list = [1, 2, 3, 4, 5, 6, 7]
[i if i<=5 else 5 for i in list]
1.2 匿名函数与map方法
问题4:利用匿名函数生成 [0, 2, 4, 6, 8] 样式的数字序列
[(lambda x:x*2)(i) for i in range(5)]
问题5:利用匿名函数和map函数对匿名函数映射,生成 [0, 2, 4, 6, 8] 样式的数字序列
a = map(lambda x:x*2, range(5))
# 在python2中map()函数返回的是一个列表
# 但是在python3中返回的是一个迭代器(iteration)
for i in a:
print(i) # 0 2 4 6 8
list(map(lambda x: 2*x, range(5)))
问题6:利用匿名函数和map函数对匿名函数映射,生成[‘0_a’, ‘1_b’, ‘2_c’, ‘3_d’, ‘4_e’]
# list函数生成列表list('abcd') >>> ['a', 'b', 'c', 'd']
list(map(lambda x,y: str(x)+'_'+y, range(5), list('abcde')))
map()根据提供的函数对指定序列做映射,语法:map(function, iterable, ...)
注:在做这道题时,总是报错’list’ object is not callable,后来才发现原来是做上面题时我命名了list变量,以后要注意 避免和函数名、方法名和关键词重复。不是第一次犯这种错误了 = =
【3】变量和函数同时使用了list,导致抛出异常
1.3 zip对象与enumerate方法
问题7:用zip打包多个可迭代对象
L1 = list('abcde')
L2 = range(4)
for a, b in zip(L1, L2):
print(a, b)
# 元素个数与最短的列表一致
>>>
a 0
b 1
c 2
d 3
问题8:用 enumerate 打包一个可迭代对象并绑定迭代元素的遍历序号
L = list('abcd')
for index, value in enumerate(L):
print(index, value)
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。语法:enumerate(sequence, [start=0]),sequence表示一个序列、迭代器或其他支持迭代对象,[start=0]表示下标起始位置。
问题9:用 zip 压缩 L1 和 L2,并解压
zipped = list(zip(L1, L2))
zipped
>>> [('a', 0), ('b', 1), ('c', 2), ('d', 3)]
list(zip(*zipped))
>>> [('a', 'b', 'c', 'd'), (0, 1, 2, 3)]
问题10:用 zip 建立 L1 和 L2 的字典映射
dict(zip(L1, L2))
>>> {
'a': 0, 'b': 1, 'c': 2, 'd': 3}
2. Numpy基础
2.1 np数组的构造
问题11-1:用 array 构造 [1, 2, 3]
np.array([1,2,3])
>>> array([1, 2, 3])
问题11-2:利用 np.linspace, np.arange 构造等差序列
np.linspace(1,5,11) # [起始, 终止], 样本个数
>>> array([1, 2, 3])
np.arange(1,5,2) # [起始, 终止), 步长
>>> array([1, 3])
问题11-3:构造偏移主对角线1个单位的伪单位矩阵
np.array([1,2,3])
>>> array([1, 2, 3])
问题11-4:利用 np.random 生成随机矩阵
# (1)生成服从0-1均匀分布的三个随机数
np.random.rand(3)
# (2)生成元素服从0-1均匀分布的3*3数组
np.random.rand(3,3)
# (3)生成服从a-b均匀分布的三个随机数
a, b = 5, 15
(b-a) * np.random.rand(3) + a
=======================
# (1)生成服从N(0,1)标准正态分布的三个随机数
np.random.randn(3)
# (2)生成服从方差σ^2, 均值μ一元正态分布的三个随机数
sigma, mu = 2.5, 3
mu + np.random.randn(3) * sigma
=======================
# (1)生成随机整数 [low, high)
low, high, size = 5, 15, (2,2)
np.random.randint(low, high, size)
>>> array([[11, 8],
[14, 10]])
==================

本文介绍了使用Python的Pandas库进行数据处理的基础知识,包括列表推导式、条件赋值、匿名函数等技巧,以及Numpy库的基础操作,如数组创建、变形、切片、数学运算等内容。
最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



