Python科学计算库函数快速索引表

前言:好东西就要一起分享呀。今天考完数据结构,会点但不多,但是及格应该没问题(什么时候我只有这点追求了,落泪了),whatever这暂时告一段落了。继续补前面的人工智能的作业,说实话感觉老师讲得挺好的但有点虚。于是又打开刚开学时侯学数据科学的视频,补了一下宋晖老师后几章的内容,然后意外在课件中,发现了汇总好的一些函数,觉得很棒,在此浅浅记录一下,仅作学习与分享之用,当然侵删咯,嘻嘻嘻。

目录

Numpy

pandas

Matplotlib Drawing

Scikit-learn

Text Processing

Graphic Processing

Series and Speech Data

Numpy

引用模块函数/属性名实例说明
import numpy as np
1)基本属性
array.ndim数组维度
array.size数组元素个数
array.dtype数组数据类型
2) 基本函数
np.set_printoptions()np.set_printoptions(precision=4, suppress=True)设置输出精度,是否使用科学计算
np.array()np.array([[1,2,3,4],[0,1,2,3]] )创建 ndarray对象
np.arange()np.arange(15)
np.arrange(-3,3,0.2)  #0.2为步长
创建一个等差数组
np.zeros()np.zeros(10)
np.zeros( (3,6) )
生成一个给定大小的全0数组
np.ones()np.ones( (2,3,2) )生成一个给定大小的全1数组
np.reshape()np.arange(15).reshape(3, 5)将一维数组转换为指定的多维数组
3) 通用数学函数
np.abs()、np.fabs()np.abs(x),np.fabs(x)计算整数、浮点数或复数的绝对值
np.sqrt()np.sqrt(arr)计算各元素的平方根
np.square()np.square(x)计算各元素的平方
np.exp()np.exp(arr)计算各元素的指数
np.sin()、np.cos()、np.cosh()、np.sin()
np.sinh()、np.tan()、np.tanh()
np.sin(arr)普通和双曲型三角函数
np.floor()np.floor(arr/10) #将arr转换成整数形式的十分制分数计算各元素的floor值,即小于等于该值的最大整数
np.ceil()计算各元素的ceiling值,即大于等于该值的最小整数
3) 二元函数
np.add()将数据中对应的元素相加
np.subtract()从第一个数组中减去第二个数组中的元素
np.multiply()数组元素相乘
np.divide()除法或向下取整除法
np.power()对第一个数组中的元素A,根据第二个数组中的相应元素B,计算AB
np.mod()元素级的求模运算
np.copysign()将第二个数组中的值的符号复制给第一个数组中的值
np.equal(),np.not_equal()执行元素级的比较运算,产生布尔型数组
4) 聚集函数
array.sum()arr.sum() #全部求和
arr.sum(1) #按给定轴求和,产生低一维的数组
求和函数
array.mean()arr.mean()算术平均值
array.min()、array.max()arr.max()、arr.min()最大值和最小值
array.argmin()、array.argmax()arr.argmax()、arr.argmin()最大值和最小值的索引
array.cumsum()arr.cumsum(axis = 1)  #逐列求累加和从0开始向前累加各元素
array.cumprod()arr.cumprod()从1开始向前累乘各元素
5) 随机生成函数
np.random.random()随机产生[0,1)之间的浮点值
np.random.randint()np.random.randint(0, 2, size = (2,10)) #生成0-1之间的整数随机数,维度是2*10随机生成给定范围内的一组整数
np.random.uniform()随机生成给定范围内服从均匀分布的一组浮点数
np.random.choice()在给定的序列内随机选择元素
np.random.normal()np.random.normal( 1, 2.1, size(4,4) ) #生成4*4的矩阵,均值为1,方差为2.1随机生成一组服从给定均值和方差的正态分布随机数
6) 条件逻辑的数组运算
np.where()result = np.where(cond, xarr, yarr)
np.where( arr>0, 2, -2)   #将arr数组中>0的替换为2,其余替换为-2
np.where( arr>0, 2, arr)   #将arr数组中>0的替换为2,其余不变
三元表达式:x if condition else y的矢量化版本

pandas

import pandas as pd
1) pandas数据结构
Series()obj1=Series([4,7,5,3],index=['d','b','a','c'])   #创建带索引的Series
states=['California','Ohio','Oregon']    #使用字典创建Series
obj3=Series(sdata,index=states)   
创建Series
Series()
DataFrame()frame2=([[1,2,3,],[4,5,6]], index=['x','y'],columns=['a','b','c'])创建DataFrame
基于索引名选取obj[ col ]选取某列
obj[ colList ]students[['height','weight']] 选取某几列
obj.loc[ index, col ]选取某行某列
obj.loc[ indexList, colList ]选取多行多列
基于位置序号选取obj.iloc[ iloc, cloc]选取某行某列
obj.iloc[ ilocList, clocList ]选取多行多列
obj.iloc[ a:b, c:d ]students.iloc[1:, 0:2]选取a~(b-1)行, c~(d-1)列
条件筛选obj.loc[ condition, colList ]students.loc[ students['height']>=168, ['height','weight'] ] 使用索引构造条件表达式,选取满足条件的行
obj.iloc[ condition, clocList ]使用位置序号构造条件表达式,选取满足条件的行
obj[colname] = liststudents['expense'] = [1500,1600,1200]添加新列
obj.drop(collist, axis, inplace,...)students.drop(1, axis=0)
students.drop('expense', axis=1)
删除某几列
2) 数据文件读写
pd.read_csv()pd.read_csv('1111.csv')读取CSV文件数据(带分隔符的数据,默认为逗号)
object.to_csv()ts = Series(np.arange(7), index=dates)
ts.to_csv('ch06/tseries.csv')
将DataFrame或Series中的数据写到一个以逗号分隔的文件中
pd.read_excel()pd.read_excal('a.xlsx', 'Group1')从excel文件的指定表单中读取数据
参数sepsep=‘,’字符串,每行各数据之间的分隔符
headerheader = None文件中第一行不是列索引,默认第一行为列索引
index_colindex_col = 0用作行索引的列序号
namesnames=['学号',‘成绩’]列表,定义列索引,如果不使用文件中第一行为列索引
skiprowspd.read_csv('ch06/ex4.csv', skiprows=[0, 2, 3]) #跳过文件的第一行、第三行和第四行跳过文件中的某些行
na_valuespd.read_csv('ch06/ex5.csv' ,na_values=['NULL'])可以接受一组用于表示缺失值的字符串
nrowspd.read_csv('ch06/ex6.csv' , nrows=5)  #nrows=5表示读取前5行逐行读取文本文件
delimiterreader = csv.reader(f, delimiter= '|')用于分隔字段的单字符字符串。默认','
3) 数据清洗
dataframe.dropna()data1.dropna(thresh=3)  #thresh代表保留几个有效值滤除缺失数据
dataframe.fillna(value, method, inplace, ...)   df1.fillna(0)
stu.fillna({'年龄':20, '体重':stu['体重'].mean()} )
method='ffill'    method='bfill'   
填充缺失数据
dataframe.drop_duplicates()df1.drop_duplicates()去除重复数据
dataframe.isnull()stu.isnull()检测每个元素值是否是NaN
dataframe.any()stu.isnull().any() 按行或列检测是否有值为Flase
4) 数据规整化
pd.concat()pd.concat([s1, s2, s3])  #默认情况下,concat按照行叠加轴向连接函数,沿着指定轴将多个对象堆叠到一起
pd.merge()pd.merge(newstu,card, how='left', left_on='学号', right_on='ID') 按照给定列连接两张表中数据
dataframe.sort_values()stu.sort_values(by='成绩', ascending=False) 按照给定列排序
dataframe.rank()stu['成绩'].rank(method='min', ascending=False) 按照指定轴给出每个数据排名
5) 统计分析
sr.value_counts()Series各取值出现的频数
sr.unique()Series出现的值
sr.describe()stu[['身高','体重','成绩']].describe() 返回基本统计量和分位数
sr1.corr(sr2)stu['身高'].corr( stu['体重'] )sr1与sr2的相关系数
df.corr()stu[['身高','体重','成绩'] ].corr() df各列的相关系数
df.count()统计每列数据个数
df.max()、df.min()最大值和最小值
df.idxmax()、df.idxmin()最大值、最小值对应的索引
df.sum()按行或列求和
df.mean()、df.median()stu['成绩'].mean() 计算均值、中位数
df.qantile()tu['月生活费'].quantile( [.25, .75] ) 计算给定的四分位数
df.var()、df.std()计算方差、标准差
df.mode()计算众数
df.cumsum()从0开始向前累加各元素
df.cov()stu[['身高','体重','成绩'] ].corr() 计算协方差矩阵
pd.crosstab(df[col1],df[col2])pd.crosstab( stu['性别'], stu['月生活费']) pandas函数,交叉表,计算分组的频率
dataframe.groupby()grouped = stu.groupby(['性别', '年龄']) 按照指定索引将数据划分为多个组
grouped.aggregate()grouped.aggregate( {'身高':np.mean, '月生活费':np.max } )按照给定统计方法分组统计

Matplotlib Drawing

import matplotlib.pyplot as plt
1)pandas绘图
dataframe.plot()data.plot(title='2010~2016 GDP',LineWidth=2, marker='o', linestyle='dashed',color='r', grid=True,alpha=0.9,use_index=True,yticks=[3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5])
#b---blue   c---cyan  g---green    k----black m---magenta r---red  w---white    y----yellow
#'  ‘‐'     实线   '‐‐'   破折线  '‐.'    点划线   ‘ :’   虚线    ‘*’ 星性
# 'o'     实心圈标记  'v'  倒三角标记   's' 实心方形标记   'p'实心五角标记
pandas绘制图形
dataframe.plot.scatter()stdata.plot.scatter(x='Height',y='Weight',title='Students Body Shape', marker='*',grid=True, xlim=[150,200], ylim=[40,80], label='(Height,Weight)')pandas绘制散点图
pd.plotting.scatter_matrix()pd.plotting.scatter_matrix(data,diagonal='kde',color='k') 绘制散点图矩阵
dataframe.boxplot()df1.boxplot(by='Gender',figsize=(6,6))绘制箱须图
(series/dataframe).plot()s.plot(kind='bar', ax=axes[0], color='b', alpha=0.7)
s.plot(kind='barh', ax=axes[1], color='y', alpha=0.7)
df.plot(kind='barh', ax=axes[1], stacked=True, alpha=0.5)
s.plot(kind='pie', figsize=(6,6), title='Party size')
Series.plot(kind=’hist’,bins=6,normed=True)
绘制各类图
绘制(堆积)柱状图、绘制饼图、脂肪图
xx轴数据,默认值为None
yy轴数据,默认值为None
kind绘图类型。‘line’:折线图,默认值;‘bar’:垂直柱状图; ‘barh’:水平柱状图; ‘hist’-直方图; ‘box’-箱线图; ‘kde’-Kernel核密度估计图; ‘density’:-与‘kde’相同; ‘pie’:饼图; ‘scatter’:散点图 
title图形标题,字符串
color画笔颜色。用颜色缩写如’r’、’b’,或RGB值,如’#CECECE’。主要颜色缩写:b-blue c-cyan g-green k-black m-magenta r-red  w-white y-yellow
grid图形是否有网格,默认值为None
fontsize坐标轴(包括x轴和y轴)刻度的字体大小。整数,默认值为None
alpha图表的透明度,0~1之间,图表的透明度,值越大颜色越深
use_index 默认为True,用索引做x轴刻度
linewidth绘图线宽
linestyle绘图线型。'‐'实线 '‐‐'破折线 '‐.'点划线 ‘:’ 虚线
marker标记风格。’.’点 ‘,’像素(极小点)’o’实心圈 ‘v’倒三角 ‘^’上三角 ‘>’右三角 ‘<’左三角 ‘1’下花三角 ‘2’上花三角 ‘3’左花三角 ‘4’右花三角 ‘s’实心方形 ‘p’实心五角 ‘*’星形 ‘h’’/’’H’竖/横六边形 ‘|’垂直线 ‘+’十字 ‘x’x ’D’菱形 ‘d’瘦菱形
2)Matplotlib绘图
plt.figure()fig = plt.figure(figsize=(8,4)) #figsize参数指定绘图区域的宽度和高度,英寸创建一个绘图对象
plt.plot()plt.plot(x, y, 'o-', color='green', linewidth=2.0)绘制线性图
plt.xlabel()、plt.ylabel()plt.xlabel(‘时间(s)’, fontproperties='SimHei', fontsize=15)
plt.ylabel(‘幅度(mV)’, fontproperties='SimHei', fontsize=15)
设置当前x轴、y轴的标签
plt.title()plt.title('Figure 1')设置标题
plt.xticks()、plt.yticks()plt.xticks(range(0,7),('2010','2011','2012','2013','2014','2015','2016')) 设置当前x轴、y轴刻度位置的标签和值
plt.legend()plt.legend(loc=‘best’, fontsize=20)  添加图例
plt.axis()plt.axis([0, 6, 0, 1.8])设置x, y坐标轴最小最大取值范围
plt.xlim()、plt.ylim()plt.xlim([0, 5*np.pi/3])、plt.ylim([0, 5*np.pi/3])设置当前x轴、y轴取值范围
plt.text()plt.text(1.8,7.5,'GDP keeps booming!',fontsize='larger')添加注解文字
plt.annotate()plt.annotate('turning point',xy=(1,7.8),xytext=(0.5,7.5), arrowprops=dict(arrowstyle='->'))添加注释
plt.grid()plt.grid(True)打开或者关闭坐标网格
plt.figure().add_subplot()ax1=fig.add_subplot(2,1,1)   创建子图
figure.savefig()/fig.savefig()fig.savefig('2010-2012GDP.jpg',dpi=400,bbox_inches='tight')保存图形
plt.scatter()plt.scatter(x1, x2)绘制单张散点图
plt.show() plt.show() 显示并关闭绘图

Scikit-learn

1) 预处理
data.values.astype()X = data.iloc[ :, 0:5 ].values.astype(float)
y = data.iloc[ :, 5].values.astype(int)
从DataFrame获取ndarray
from sklearn import model_selectiontrain_test_split()X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.35, random_state=1)按比例随机划分训练集、测试集
from sklearn import preprocessingscale()X_scale = preprocessing.scale(X)将数值型数据标准化处理
2) 初始化、训练模型,预测
from sklearn import treeDecisionTreeClassifier()clf = tree.DecisionTreeClassifier()初始化决策树模型
from sklearn import svmSVC()svc = svm.SVC(kernel='rbf', gamma=0.6, C = 1.0)初始化支持向量机模型
from sklearn.linear_model import LinearRegressionLinearRegression()linreg = LinearRegression()初始化线性回归模型
linreg.intercept_, linreg.coef_线性回归模型参数
from sklearn.cluster import KMeansKMeans()kmeans = KMeans(n_clusters=3)   KMeans模型初始化
from sklearn.neural_network import MLPClassifierMLPClassifier()mlp = MLPClassifier(solver='lbfgs',alpha=1e-5,hidden_layer_sizes=(5, 5), random_state=1)神经网络模型初始化
model.fit()clf.fit(X, y)  
kmeans.fit(X)   
有监督学习,输入X,y
无监督学习,输入X
model.predict()print("预期销售:",load_linreg.predict(new_X) ) 使用模型预测
model.score()decision_score = linreg.score(X, y)
predict_score =linregTr.score(X_test,y_test)
计算回归函数的决定系数
计算分类器的正确率
3) 评估模型性能
from sklearn import metrics
mean_squared_error()test_err = metrics.mean_squared_error(y_test, y_test_pred) 计算均方误差
confusion_matrix()metrics.confusion_matrix(y, predicted_y)计算混淆矩阵
classification_report()metrics.classification_report(y, predicted_y)生成分类性能报告
adjusted_rand_score()metrics.adjusted_rand_score(y, kmeans.labels_)计算兰德指数
silhouette_score()metrics.silhouette_score( X,kmeans.labels_,metric='euclidean' )计算轮廓系数
4)保存、加载模型
from sklearn.externals import joblibdump()joblib.dump(linreg, 'linreg.pkl')将模型保存至文件
load()load_linreg = joblib.load('linreg.pkl') 从文件读取模型

Text Processing

1) 分词、词性标注
import jiebajieba.cut()jieba.lcut("2018年世界杯小组赛")
#sentence:待分词的字符串;cut_all:是否采用全模式;HMM:是否使用 HMM 模型。
分词,返回可迭代的generator。支持精确模式和全模式
jieba.cut_for_search()#sentence:待分词的字符串;HMM:是否使用 HMM 模型。分词,返回可迭代的 generator。该方法为搜索引擎模式,适合用于建立搜索引擎构建倒排索引,粒度比较细
jieba.lcut() jieba.lcut("2018年世界杯小组赛", cut_all = True)与cut函数类似,直接返回词列表
jieba.lcut_for_search() jieba.lcut_for_search("2018年世界杯小组赛")与cut_for_search函数类似,直接返回词列表
import jieba.posseg as psegpseg.cutwords = pseg.cut("2018年世界杯小组赛")分词同时标注词性
2)特征提取
from sklearn.feature_extraction.text import CountVectorizerCountVectorizer()cv = CountVectorizer()词袋模型初始化
cv.fit_transform()cv_fit=cv.fit_transform(split_corpus)生成词袋向量
from sklearn.feature_extraction.text import TfidfTransformerTfidfTransformer()tfidf_transformer = TfidfTransformer()TFIDF转换器初始化
tfidf_transformer.fit_transform()tfidf_fit = tfidf_transformer.fit_transform(cv_fit)将词袋向量转换为TFIDF向量
from sklearn.feature_extraction.text import TfidfVectorizerTfidfVectorizer()tfidf = TfidfVectorizer(token_pattern=r"(?u)\b\w+\b")初始化TFIDF模型
tfidf.fit_transformtfidf_fit=tfidf.fit_transform(split_corpus)生成TFIDF向量

Graphic Processing

1) 图形处理
from skimage import io io.imread() robot = io.imread("data/Robot.jpg") 从文件中读取图像数据
img.shaperobot.shape图像像素和颜色字节数
io.imshow()io.imshow(robot)显示图像
io.show()显示
io.imsave()io.imsave('data/RobotHead.jpg', head)将图像数据保存到文件
2) 深度神经网络库keras
from keras.models import SequentialSequential()model = Sequential()序贯模型初始化
from keras.layers import DenseDense()model.add(Dense(units=16, input_dim=4))创建Dense层
from keras.layers import ActivationActivation()model.add(Activation('relu'))创建Activation层
from keras.layers import DropoutDropout()model.add(Dropout(0.25))  #随机断开25%的连接创建Dropout层
from keras.layers import Conv2DConv2D()model.add(Conv2D(32, (3, 3), padding='same',
 input_shape=x_train.shape[1:]))
创建Conv2D层
from keras.layers import MaxPooling2DMaxPooling2D()model.add(MaxPooling2D(pool_size=(2, 2)))创建MaxPooling2D层
from keras.layers import FlatternFlattern()model.add(Flatten())创建Flattern层
model.compile()model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=["accuracy"])模型编译
scores = model.evaluate(x_test, y_test, verbose=1)评估模型性能

Series and Speech Data

1) ARIMA算法
from statsmodels.graphics.tsaplots import plot_acfplot_acf() plot_acf(data) 绘制自相关图
plot_pacf()plot_pacf(D_data)绘制偏自相关图
from statsmodels.stats.diagnostic import acorr_ljungboxacorr_ljungbox()acorr_ljungbox(data['股价'], lags=1)白噪声-检验,纯随机性检验
from statsmodels.tsa.stattools import adfuller as ADF ADF() ADF(data['股价'])ADF检验,自相关性检验
from statsmodels.tsa.arima_model import ARIMAARIMA().fit()model = ARIMA(data, (p,1,q)).fit()输入数据,建立ARIMA模型
model.aicmodel.aic计算模型AIC信息准则
model.summary2()model.summary2()给出模型的分析报告
model.forecast(5)model.forecast(5)使用模型预测
2)语音识别
from aip import AipSpeechAipSpeech()client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 语音识别模型初始化
client.asr()result = aipSpeech.asr(get_file_content(file_name), 'wav', 16000, {'dev_ip': '1536'})识别语音文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值