2020-12-16

pandas数据分析预备知识

python基础

1.列表推导式与条件赋值
列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表.例如生成一个序列列表,列表推导式比常用的for循环更方便
常用的for循环:

L = []
for i in range(10):
    L.append(i)
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用列表推导式:

L = [i for i in range(10)]
L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表推导式还可以支持多层嵌套:

L = [a+'_'+b for a in ['red','yellow'] for b in ['apple','watermelon']]
L
['red_apple', 'red_watermelon', 'yellow_apple', 'yellow_watermelon']

列表推导式还可以和条件判断相结合(条件赋值)
举个例子,判断一个列表中的偶数,如果是偶数保持不变,如果是奇数替换成1

L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
S = [i if i%2==0 else 1 for i in L]
S
[0, 1, 2, 1, 4, 1, 6, 1, 8, 1]

2.匿名函数与map方法
匿名函数可以简单理解成一种映射关系
例如把一个列表中的数字映射成平方关系:

L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
R = [(lambda x : x**2)(i) for i in L]
R
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

还有一种映射方式是map方法

def square(x):
    return x**2
list(map(square,range(5)))
[0, 1, 4, 9, 16]

3.zip对象与enumerate方法
zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,它返回了一个zip对象,通过tuple, list可以得到相应的打包结果:
例如:

L1, L2, L3 = list('abc'), list('def'), list('hij')
list(zip(L1, L2, L3))
[('a', 'd', 'h'), ('b', 'e', 'i'), ('c', 'f', 'j')]

zip对应的还有解压函数利用*好来实现:

A = ['q','w']
B = ['c','d']
zipped = list(zip(A,B))
zipped
[('q', 'c'), ('w', 'd')]

#解压操作
list(zip(*zipped))
[('q', 'w'), ('c', 'd')]

enumerate函数主要返回值以及对应的下标

for index, value in enumerate(A):
     print(index, value)
0 q
1 w

Numpy基础
NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象Array,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
我们一般通过import numpy as np 来导入numpy库,np是默认的简写,让我们先用numpy生成一个一维数组

import numpy as np
np.array([4,54,3])

下面介绍一些numpy常用的方法:
1.np.linspace、np.arange两者都是生成一个等差序列,两者的前两个参数都是开始和终止位置,linspace的第三个参数是样本个数,arange的第三个参数是步长

np.linspace(1,10,5)
array([  1.  ,   3.25,   5.5 ,   7.75,  10.  ])
np.arange(1,11,2)
array([1, 3, 5, 7, 9])

numpy的特殊矩阵里,主要说一下np.full,一共有两个参数,第一个参数是矩阵的大小,第二个参数填充值

np.full((3,4),10)
array([[10, 10, 10, 10],
       [10, 10, 10, 10],
       [10, 10, 10, 10]])

numpy数组的合并 :
对于二维数组而言,np.r_和np.c_分别表示上下合并和左右合并

numpy数组的索引种值得一提的是np.ix_,可以利用np.ix_在对应的维度上使用布尔索引,但此时不能使用slice切片

a = np.arange(16).reshape(4,4)
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])


a[np.ix_([True,True,False,False],[True,True,False,False])]
array([[0, 1],
       [4, 5]])

在numpy数组中还有一个比较重要的点是:广播机制
广播描述了算法如何在不同形状的数组之间的运算。最简单的广播机制是标量值与数组之间的运算。

arr = np.arange(5)
arr
array([0, 1, 2, 3, 4])

arr*4
array([ 0,  4,  8, 12, 16])

当两个数组的形状并不相同的时候,我们可以通过扩展数组的方法来实现相加、相减、相乘等操作,例如:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值