(1)矩阵乘法: A*B表示矩阵对应位置元素相乘 A.dot(B)表示矩阵的内积(一行乘以一列)
(2)随机函数: np.random.random((3,4)) 创造一个三行四列的随机数矩阵,在(-1,1)之间,10*np.random.random((3,4))表示将随机数扩大十倍
(3)np.floor(a), 表示将元素a向下取整
(4)制造向量或矩阵 np.array([1,2,3]) np.array([[1,2,3],[4,5,6]])
(5)x.shape 输出行列(3,)或(2,3) x.size 求元素的总个数,
x.reshape((m,n))将原矩阵改成m*n矩阵,只有一个参数,(m,n)
(6)可以通过切片的方式取某行某列 x[:,0:2] 表示取所有行,0,1列,x[1]表示第二行
(7)x.min() x.max() 返回矩阵中的最小值或最大值
(8)x.sum(axis=0)返回对每一列求和的结果 x.sum(axis=1)返回对每一行求和
(9)np.arange(15) 制作一行矩阵,元素为0~14 np.arange(1,10),表示1~9
可以配合reshape使用,np.arange(15).reshape((3,5))
np.range(1,100,5) 表示[1,6,11,16,21,…,96]
(10) np.zeros((4,3)) np.ones((3,4))
(11)x.ravel()表示将一个矩阵铺成一行输出,但实际上这个矩阵没有变,还是原来的行列数
(12)np.hstack((x,y))表示水平拼接矩阵x和y,增加了列数;
np.vstack((x,y))表示竖直拼接矩阵x和y,增加了行数;
np.hsplilt((x,3))表示将矩阵x水平方向切成3份;(实际切分的是列)
np.hsplilt((x,(3,5)))表示将矩阵x水平切成0~2列,3~4列,5~n列;
np.vsplilt((x,3))表示将矩阵x竖直方向切成3份;(实际切分的是行)
(13)复制的三种做法及区别:(判断a与b是否相同,用a is b 返回True or False)
b = a // a与b完全一致,指向同样的值,id相同
b = a.view() // a与b指向同样的值,但是id不同
b = a.copy() // a与b指向不同的值,并且id不同
(14)l.argmax(axis=0) 返回矩阵l每一列的最大值的索引;
l.argmax(axis=1) 返回矩阵l每一行的最大值的索引;
l.argmax() 把矩阵当作一维矩阵返回最大值的索引
(15)b = np.tile(a,(4,3)) ,a是一个矩阵,把a当作一个元素,扩展成4行a,3列a的矩阵
(16)np.sort(a ,axis = 0) 将矩阵a的每一列按照从小到大的顺序排列
np.sort(a ,axis = 1) 将矩阵a的每一行按照从小到大的顺序排列
* c_name 是列名column_name的简写,字符串类型
* pandas对象是一个DataFrame对象data,data的每一列取出来,是一个Series对象ss,ss.values又是一个numpy.ndarray对象
(1)data = pandas.read_csv(‘**.csv’) 返回的是DataFrame,看作一个矩阵
(2)data.head(4) 数据的前4行;(DataFrame的对象)
data.tail(3) 数据的后3行;(DataFrame的对象
data.columns 显示数据的列名(每一列的属性)
data.shape 显示数据的(行,列)
data.loc[0] 取第1行的数据(不包含列名那一行)
data.loc[:5] 取第1~5行的数据
data[c_name] 取某一列的的数据,也可以将几个列名组成一个list,作为参数
data.columns.tolist() 将列名转为list
(3)str.endswith(“(g)”) 判断字符串结尾,返回bool类型
(4)将原数据中加上一个特征(加入一列):data[‘new_column’] = columns
Columns可以是原数据中的几列处理得到,新加的一列要保证列数与原数据相同
(5)data[c_name].max() 求某一列的最大值
(6)data.sort_values(c_name,inplace=True) 将c_name对应的一列从小到大排序
ascending参数是升序(从小到大),默认为True;
inplace=True 是否生成新的DataFrame
NaN是pandas认为的缺失值,不管是升序还是降序,NaN都排在最后
排完序之后,数据的index还是原来的,可以调用 data.reset_index(drop=True)
drop=True表示原来的index不要了,重新生成index
(7)pd.isnull(data[c_name]) 判断该列中的元素是不是缺失值,返回将该列value替
换成bool值的DataFrame对象
e.g. age = titanic_survival(‘Age’)
age_is_null = pd.isnull(age)
age_null_true = age[age_is_null],返回age为NaN,索引为True
的DataFrame对象
(8)在计算均值的时候,需要过滤掉缺失值,做法如下:
good_age = titanic_survival[‘Age’][age_is_null == False]
mean_age = sum(good_age[‘Age’])/len(good_age)
pandas里有个mean()方法,自动过滤掉缺失值
mean_age = titanic_survival[‘Age’].mean()
(9)titanic_survival.pivot_table(index=‘Pclass’,values=’Survived’,
aggfunc=np.mean)
如果没有指定aggfunc的话,默认的也是求均值;
pivot_table:计算不同船仓等级(此处的index),存活人数(此处的values)的均值
(此处的aggfunc),如果不同的index求和,令 aggfunc=np.sum,values也可以是
一个list,[’Survived’,’Age’]
(10)data.dropna(axis = 0 ,subset=[‘Age’,’Sex’])表示在Age与Sex两列中有
没有缺失值,有的话就把该行删除,subset可以缺省,表示所有列
(11)data.loc[83,’Age’],定位第83行,列名为Age的元素
(12)data.apply(yourfunc) apply的参数是你自定义的函数名,然后执行你的函数
(13)data[‘DATE’] = pd.to_datatime(data[‘DATE’])
将日期格式2017/11/02转成2017-11-02
(14)data.drop('income',axis=1) 将data中的income列删除赋给新的特征,常用于特征处理
(15)data.describe()
data.columns
data.dtypes
len(data)
(1)plt.plot(data[‘DATE’],data[‘VALUE’]) 左边的参数表示x轴的数据,右边的
表示y轴的数据
(2)plt.show() 显示图像
(3)plt.xticks(rotation=45) 将x轴的上坐标值倾斜45度显示
(4)plt.xlable(‘Month’) //x轴加上一个标签
plt.ylable(‘Unemployment Rate’) //y轴加上一个标签
plt.title(“Monthly Unemployment Trends,1948”) // 图形加上标题
(5)fig = plt.figure() //返回默认画图的区域
fig = plt.figure(figsize = (3,4)) //画图的大小width宽度和depth高度
ax1 = fig.add_subplot(2,2,1) // 将fig划分成 2*2 大小,这是第1个子图
ax2 = fig.add_subplot(2,2,2) // 将fig划分成 2*2 大小,这是第2个子图
ax3 = fig.add_subplot(2,2,4) // 将fig划分成 2*2 大小,这是第4个子图
plt.show()
(6)ax1.plot(np.random.randint(1,5,5),np.arange(5)) // 给子图填充数据
折线图
(7)plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘red’) // c是颜色
plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘black’)
plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘black’,label =‘name’)
label标签是显示折线图的中该条线的名称
柱形图
(8)ax.bar(data1,data2,width) // 还可以调用 plt.bar();
data1,data2 是一个 numpy.ndarray对象,可以用 np.arange(5)创造
width 表示的是柱形图的宽度(取小数0.5较好)
numpy.ndarray对象输出的是[1 2 3 4],跟np.array([1,2,3,4])类似,可看作
是一维矩阵,它不是一个list对象,list对象输出的是[1,2,3]
散点图
(9)ax.scatter(data1,data2)或者plt.scatter()
ax.set_xlabel(“name1”) || plt.xlabel(‘name1’)
ax.set_ylabel(“name2”) || plt.ylabel(‘name2’)
(1) iris = sns.load_dataset(‘iris’)//sns库中内置了鸢尾花的数据集
sns.pairplot(iris)//这个函数自动将iris的四个特征值两两组合作为x轴,y轴,画出函数图像
(2) tips = sns.load_dataset(“tips”)//sns库中内置了小费tips的数据集
(3) regplot()和 lmplot()都可以绘制回归关系,推荐regplot()
(4) sns.regplot(x=’total_bill’,y=’tip’,data=tips)
//参数依次是:x轴,y轴,data,然后绘制拟合数据点的直线
(5) sns.stripplot(x=‘days’,y=‘bill’,data=tips,jitter=True)
jitter让数据点左右抖动,免得点重叠在一起( 没有这个属性的话,数据点就像一条线连在一起)
(6) sns.swarmplot(x=‘days’,y=‘bill’,data=tips)
让数据点分布像一棵树一样
(7) g = sns.FaceGrid(tips,col=’Time’,hue=‘smoker’)
//tips为pandas对象,col:列,hue:类型名,
hue需要与 g.add_legend()搭配使用才会显示
(8) g.map(plt.scatter,’x’,’y’)
//参数说明:指定画图方式,此处为散点;另外两个参数分别是:xlabel,ylabel
如果第一个参数是plt.hist表示柱状图