pandas基础

pandas基础

一.基础知识

1.Python基础

列表推导式与条件赋值

常规生成数字序列方法:

L=[]
def func(x):
	return x*x
#range范围从0~n-1
for i in range(5):
	L[i]=func(i)

使用列表推导式简化:

[func(i) for i in range(5)]

列表推导式的多层嵌套:

[i+'_'+j for i in ['a','b'] for j in ['d','c']]

注:range范围从0~n-1

条件赋值:实现大于5赋值为5

L = [1, 2, 3, 4, 5, 6, 7]
[i if i <= 5 else 5 for i in L]

匿名函数与map方法

func=lambda x:2*x
func(3)

x_add_y=lambda x,y:x+y
x_add_y(1,2)

简化:

[(lambda x:2*x)(i) for i in range(5)]

map映射:

通过list转化类型

list(map(lambda x:2*x,range(5)))

多个输出值的映射:

list(map(lambda x,y: str(x)+'_'+y,range(5),list('abcde')))

zip对象与enumerate方法

zip函数:将多个迭代对象逐个打包成元组构成新的可迭代对象

L1, L2, L3 = list('abc'), list('def'), list('hij')

list(zip(L1, L2, L3))

tuple(zip(L1, L2, L3))

list(zip('abc',[1,2,3]

补充:常用函数

help()返回帮助信息
dir()返回指定对象或模块的成员列表
divmod(x, y)返回包含整商和余数的元组
abs(x)返回数字的绝对值和复数的模
all() 所有的元素为true,或不为true都返回true
any()真返回true 假返回false
ascii()转换为ASCII码
chr()返回Unicode为x的字符
ord()返回x的Unicode编
bool()返回对应的布尔值true或者false
bytes()生成字节串或把指定对象转换为字节串表示
callable()测试对象是否可以被调用
compile()把代码编译成可被exec()eval()函数执行的代码对象
complex()返回复数
bin()将整数转化为二进制串
eval()计算返回字符串中s中表达式的值
int()返回十进制
str()转化字符串
exec()执行
oct()整数变成八进制
hex()将x转换为十六进制
input([提示])返回字符串
round()四舍五入
exit()退出当前解释器
quit()退出当前解释器
float()把整数和字符串转浮点数返回
frozenset([x])创建不可变字典对象
globals()返回当前作用域的全局变量及其值的字典
hash()返回哈希值,不可哈希抛出异常(列表可变不可哈希,元组不可变,可哈希)
id()返回内存地址
len()返回对象包含的元素个数,列表元组集合字典字符串以及range对象
list([]),set([]),tuple([x]),dict([x])  将对象转化为列表 集合 元组 字典 或生成空的
max() min()返回最大值最小值
next()获取下一个元素
open()指定mode模式打开文件name并返回文件对象
pow(x,y)返回x的y次方
range(start=,end,step=)
reversed()逆序返回
sorted(,reverse)排序  参数reverse决定顺序
sum()求和
type()返回类型

2.Numpy基础

数组的构造

np.array()创建一维矩阵,内容是同类型,不同类会被转成同类

import numpy as np
L1=[1,2,3,4,5]
np.array(L1)

二维矩阵

nd2=np.array([[1,2,3,4],[2,2,3,4],[3,2,3,4]])
#形状属性
print(nd2.shape)
#类型属性
print(nd2.dtype)
#维度属性
print(nd2.ndim)
#元素个数
print(nd2.size)
#字节属性
print(nd2.itemsize)

等差数列

linspace(start,end,num)
#start起始位置,end中止位置(包含),num个数
np.linspace(1,6,6)

np.arange(1,6,6) # 起始、终止(不包含)、步长

随机矩阵

#生成服从0-1均匀分布的三个随机数
np.random.rand(3)

#服从区间 a 到 b 上的均匀分布
(b - a) * np.random.rand(3) + a
np.random.uniform(5, 15, 3)
 
#N(0,I) 的标准正态分布
np.random.randn(3)

#一元正态分布
np.random.normal(3, 3, 3)

#指定生成随机整数
np.random.randint(2, 10, 4)

#随机种子
np.random.seed(0)
np.random.rand()

特殊矩阵

#repeat创建指定次数指定元素的一维矩阵
np.repeat(3,4)

#固定数值和形状
np.full((2,3), 10)
#每行填入相同列表
np.full((2,3), [1,2,3]) # 每行填入相同的列表

#创建指定值全为1的矩阵
np.ones((3,4))

#全为0的矩阵
np.zeros((3,4))

#创建对角线为1,其他值为0的方形矩阵
np.eye((5))

数组的操作

转置

np.zeros((2,3)).T

合并

二维数组而言, r_c_ 分别表示上下合并和左右合并

np.r_[np.zeros((2,3)),np.zeros((2,3))]

np.c_[np.zeros((2,3)),np.zeros((2,3))]

转换维度

np.arange(8).reshape((2,4),order='读取顺序,行(C)/列(F)')

切片与索引

索引从0-n,切片通过分割 start:stop:step

nd2=np.array([[1,2,3,4],[2,2,3,4],[3,2,3,4]])
nd2[0][2]
nd2[:2]
nd2[:-1]

#将多维矩阵变成一维矩阵
# nd3=nd2.flatten()
#切片和索引
nd3[:]
nd3[2:]
nd3[2:5]
nd3[2:5:2]
nd3[::-1]

#n维矩阵索引与切片
nd6=np.array([[[1,2,3],[1,1,2]],[[4,5,6],[2,2,3]],[[7,8,9],		                  [3,3,4]],[[10,11,12],[4,4,5]]])
nd6[2][0][1]
nd6[:1,:1,::-1]

向量与矩阵的运算

内积

a.dot(b)

矩阵乘法

a = np.arange(4).reshape(-1,2)
b = np.arange(-4,0).reshape(-1,2)
a@b

常用函数

where

是一种条件函数,可以指定满足条件与不满足条件位置对应的填充值

a = np.array([-1,1,-1,0])
np.where(a>0, a, 5) # 对应位置为True时填充a对应元素,否则填充5

nonzero 返回非零数的索引

argmax, argmin 分别返回最大和最小数的索引

a = np.array([-2,-5,0,1,3,-1])
np.nonzero(a)
a.argmax()
a.argmin()

any指当序列至少 存在一个 True或非零元素时返回 True ,否则返回 False

all指当序列元素 全为 True或非零元素时返回 True ,否则返回 False

a = np.array([0,1])
a.any()
a.all()

cumprod, cumsum 分别表示累乘和累加函数,返回同长度的数组, diff 表示和前一个元素做差,由于第一个元素为缺失值,在默认参数情况下,返回长度是原数组减1

a = np.array([1,2,3])
a.cumprod()
a.cumsum()
np.diff(a)

常用的统计函数包括 max, min, mean, median, std, var, sum, quantile ,其中分位数计算是全局方法,因此不能通过 array.quantile 的方法调用:

target = np.arange(5)
target.max()
np.quantile(target, 0.5) # 0.5分位数

略过缺失值统计最大值

np.nanmax(list)

协方差,相关系数

np.cov(array, array)
np.corrcoef(array, array)

axis 参数,它能够进行某一个维度下的统计特征计算,当 axis=0 时结果为列的统计指标,当 axis=1 时结果为行的统计指标

target = np.arange(1,10).reshape(3,-1)
target.sum(0)
target.sum(1)

参考

#[1]: https://datawhalechina.github.io/joyful-pandas/build/html/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值