python 使用小知识点

本文介绍了Python编程中的实用技巧,包括numpy和pandas的使用、随机数生成、assert断言、矩阵操作、函数自定义变量、编码错误处理、数据处理函数如apply和map的区别、数据清洗、循环与迭代工具、图表绘制以及机器学习模型的应用等。

python数据包numpy及pandas函数参考:
numpy:点击这里
pandas:点击这里

1、每次生成随机数时,都指定一样的seed,则生成的随机数一致。
random.seed(1)
random.randn(5,3)
2、使用assert 来检查程序是否正确,正确执行,不正确报AssertionError,在判断矩阵操作的维数时很方便。
assert (Z.shape == (W.shape[0],A.shape[1]),
其中,shape[0]为矩阵行数,shape[1]为矩阵列数。
3、python中矩阵操作的广播,可以实现不同维度矩阵的运算。
例如,3x4维+3x1维
4、数组和矩阵的区别:
(1)可以使用type()查看类型,python中很多内置函数,例如random\zeros\ones生成的都是数组。
(2)对于矩阵操作生成一维矩阵,可以使用keepdims保证为一维矩阵
b = np.sum(dZ, axis=1, keepdims=True) / m
其中,axis=0表示对列进行sum,最后生成一行,还是代表对行索引操作,axis=1表示对行操作,最后得到一列。
第0轴沿着行的索引垂直往下(列索引不动),第1轴沿着列的方向水平延伸。
data.reshape(-1,1)#-1代表未指定、通配的,最终数据为一列。
(3)关于秩为1的数组和行/列向量,在进行矩阵运算时尽量避免使用shape为(a,)的形式。
a=np.random.rand(3)
b=np.random.rand(3,1)
print a.shape //(3L,)
print b.shape //(3L, 1L)
5、python 函数可以自定义变量使用,且只要变量名保存一致,赋值顺序改变也无所谓。
def L_layer_model(a,c=50,b=4):
d=(a+b)*c
return d
parameters = L_layer_model(3,b=6 )
print parameters
结果为 (3+6)*50=450
6、numpy 切片操作,之所以总是取到索引的前一个数字?是为了代码优雅。切片最常见的用法就是“从数组中切出前n位”或“从数值这第i位起切出n位”,使用0-based代码为X[0,n]和X[i,i+n],而使用1-based则为X[i,i+n-1]

7、UnicodeDecodeError 解决方式?系统编码重置,搞不懂,因为什么。python默认编码到底是什么
import sys
reload(sys)
sys.setdefaultencoding(‘gbk’)

8、apply,applymap和map

apply 用在dataframe上,用于对row或者column进行计算;
applymap 用于dataframe上,是元素级别的操作;
map (其实是python自带的)用于series上,是元素级别的操作。
lambda:匿名函数。

9、pop\remove\del 区别
在这里插入图片描述
9、展开折叠代码块:
折叠:ctrl - 折叠全部:ctrl shift -
展开:ctrl = 展开全部:ctrl shift =

10、关于替换空值:
data.fillna(value,inplace=True) #inplace 代表是否在原数据操作
data.isnull()\data.notnull() #返回bool值
字符:str.replace(“old”,“new”,num)num为次数,默认全部,不改变原字符串内容

11、python 图标含义:
选中类或函数后 点击Ctrl进入源码界面,_base为包基类。
在这里插入图片描述
12、pandas 中loc\iloc\ix\at\iat: loc 和iloc 功能比较全、at 和iat 是选取单个值的
loc:传入标签,也可以布尔值(True 为选取,False 为不选),例如
data.loc[‘row’],返回行row;
data.loc[‘row’,‘col’]返回行列定位的cell value;此时同data.at[‘row’,‘col’]
data.loc[data[‘row’]>90],可以筛选;
iloc:传入索引,其他用法同loc 例如data.loc[3,5],返回第四行第六列,此时同data.iat[3,5],
ix:loc 和 iloc的混合。
列索引可以直接data[col],返回列col;
删除行列用data.drop(index=[‘row’])

13、cumsum 函数:求取累积和
(1)可以用于求累积频率: p = data.cumsum()/data.sum() #最大为1
(2)求取各个值出现的次数:data[‘Times’].groupby([‘ID’]).cumsum()#每个ID出现的累积次数
14、groupby函数以及agg聚合函数:
data.groupby(‘keyvalue’);#多个分组传入列表
data.groupby([‘Customer_id’,‘Product_ID’])
按照分组计算和、均值、次数等:
data.groupby([‘Customer_id’]).agg({‘交易金额’:[‘sum’,‘max’,‘count’],‘交易日期’:max})
单列次数也可以用 data['key1].groupby(data[‘key2’]).value_counts()

15、cut、qcut函数:数据的等距和等频分割
d=np.array([1,21,3,4,6,7,8,983,2,16,10])
name=[‘a’,‘b’,‘c’,‘d’,]
bins=[4,7,2,16] #分组的区间 ,可以是整数,默认等宽
res=pd.qcut(d,bins,labels=name)

16、关于函数参数* :
def d_range(df,*cols): d_range(data,key1,key2,key3)
元组参数,即 *args,参数格式化存储在一个元组中,长度没有限制,必须位于普通参数和默认参数之后。
def d_range(df,**cols): d_range(data,key1=‘a’,key2=‘b’)
字典参数,即 **kwargs,参数格式化存储在一个字典中,必须位于参数列表的最后面.

17、main函数中的global变量主要是为了防止局部与整体变量重名时冲突。

18、关于列举单一值,可以用set,但是set 没有索引,可以用drop_dulpulicate,删除重复值,可以索引。

19、 os.chdir(path)可以更改当前工作目录。

20、python 默认的数据类型默认是24字节,占用内存,可以更改精度,降低内存使用率。
推荐博文一链接
推荐博文二链接

21、python 实现一个进度条:
(1)使用tqdm,需要pip install tqdm
直接在正常的循环体前加一个tqdmj即可,完全不影响效率。
for i in tqdm(df.columns)
(2)直接使用 bar

22、python 循环的zip函数
数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。长度与元素最少的列表相同。
a=[2,3,4]
b=[1,6]
zip(a,b)=[(2,1),(3,6)]

20、画图:
(1)matplotlib.pyplot
(2)pandas.plot

20、机器学习使用模板:
一般sklearn API 或者具体模型都有官网,可以直接看官方文档。
例子入门:https://www.jianshu.com/p/b5eb165ac2c2
(1)监督学习:
导入模型:
model=cluster.KMeans(n_clusters=3,n_init=100)
训练模型:已聚类为例,模型中已经涵盖了分类结果、迭代次数、聚类中心等
#self.cluster_centers_, self.labels_, self.inertia_, self.n_iter_
model_fit=model.fit(X)
模型结果:
labels=model_fit.labels_
(2)非监督学习:
划分训练测试集;
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
导入模型:可以设置初始参数
model = LogisticRegression()
model = RandomForestClassifier()
model=XGBClassifier()
训练模型
model.fit(x_train, y_train)
返回标签
labels=model.predict(x_test))
返回标签属于某类的概率
model.predict_proba(x_test))
精度
model.score(X_test,Y_test)
(3)关于样本不平衡时精度的评定
精度评价有很多方法,acc、KS、recall、precision等
acc 用于仰恩数量较均衡
ks 一般要大于0.4,模型区分正负样本的能力,x值即为阈值
recall 和precision 均代表每个类别的正确率,
在实际选择中,需要根据自己的目标,例如仅仅正样本精度最高,还是整体还是负样本识别能力强,不同的额目的选择不同的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值