Pandas
1.DataFrame.apply() 函数则会遍历每一个元素,对元素运行指定的 function。
例如:DataFrame.apply(np.abs,axis = 0) 素:指的是对Dataframe进行取绝对值的function,并指定了行。
默认情况下 axis=0 表示按行,axis=1 表示按列。
2.inplace参数的理解:
修改一个对象时:
inplace=True:不创建新的对象,直接对原始对象进行修改;
inplace=False:对数据进行修改,创建并返回新的对象承载其修改结果。
pd.Series(data,index,dtype,copy) : 参数描述具体同下
pd.DataFrame() : 创建一个空DataFrame
df.loc['牛逼'] :df指的是DataFrame
df.iloc[]函数,检索dataframe中数据,逗号前面是行,后面是列
iloc[-1] : 负数含义为检索倒数最后一行
iloc[:,:] : 检索所有行列
iloc[1:,:] : 除了第一行,检索余下行列
df = df.drop([0,1]) : 删除DataFrame中第一行和第二行。
df = df.drop("标签") : 删除 DataFrame 中 标签 那行
df.head(n) : 获取前n条数据
df.tail(n) : 获取后n条数据 两者标签都会保留
df.T : 转置df
df.shape : 获取df德数据维度
df.size : 获取df的元素个数
df.Reindex(index=[0,2] ,column = ["A","C"]) : 向df中获取1和三行的A、C特征,重建一个新的df。
pandas排序
df.sort_index() : 对索引列进行从小到大进行排列
df.sort_values(by = 'col1') : 对数据标签col1的值从小到大进行排序
pandas 缺失数据处理
df.isnull() : 检查df中缺失值
df.notnull() : 检查df中的非缺失值 两者结果以布尔值表示。
df.fillna(0) : 用标量0代替缺失值NaN
df.fillna(method = "pad"):向前填充处理 缺失值用(pad)前一个数据去代替
df.dropna() : 删除缺失值
pandas 分组统计
df.groupby("A") :按A特征标签进行分组
df.groupby("A").get_group(2014) : 选择一个A特征元素值为2014的分组
对指定的数据集进行数据标准化处理:如下图操作
df.filter(lambda x: len(x)>=3) : 过滤掉同元素个数小于3个的元组
pandas 多表合并 (主要是Merge合并函数,需要根据实际运用参数)
“how”参数情况
-
how= 'left' :此时两表合并,以左边表为基础,不改变行数,连接右表,右表没有的数据读为空值NaN,右表多出的行直接剔除。
-
how= 'right' :与上相反
-
how = ‘outer’:内连接 效果如下
-
how = ‘outer’:内连接 效果如下
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False) #删除重复值
从示例之中可以看到drop_duplicates()方法是通过Dataframe类型的对象来调用的,而该方法可以去接收的参数有四个,其中参数subset为必选参数。它表示操作的列是哪一个,不写的话默认就是删除列所有值。
参数keep需要接收first、last以及False三个值,含义分别为保留第一个重复项、最后一个重复项以及删除所有重复项、默认值为first。
参数inplace的值也是布尔类型的True和False,意思为是否直接对原本的Dataframe对象操作,False就是不会修改原对象。
最后一个参数gnore_index的默认值为True,意思就是重置索引,会按照顺序为剩余的列指定索引值。
当数据过大时:
pd.set_option('display.max_columns', None) :使得df数据展示全部列
pd.set_option('display.max_rows', None):使得df数据展示全部行
numpy库
数组的创建
np.arrange() : 创建数组 (常见)
np.empty([2,3],dtype=int) :创建2行三列的空数组 数据类型为int
np.zeros([2,3],dtype=int) :创建2行三列的空数组 数据类型为int (与empty同理)
nadarry 指的是numpy建立数组的数组名,可以自定义。
nadarray.size 得到数组元素的总个数 相当与m*n的大小
#改变数组形状
nadarray.shape 数组的维度 例如矩阵 m行n列
nadarray.reshape(n,m) 改变数组的维度 成为n行m列(在处理数据中常用,方便进行运算)矩阵倒置
nadarray.reval() 拆解,将多维数组变成一维数组。
nadarray.flatten() 拉直,其功能与 ravel() 相同,但是 flatten() 返回的是真实的数组,需要分配新的内存空间,而 ravel() 仅仅是改变视图。
np.concatenate((a,b)) = np.hstack((a,b)) : 沿行轴连接a,b两个数组(水平堆叠)
np.concatenate((a,b),axis=1) = np.vstack((a,b)) : 沿列轴连接a,b两个数组(竖直堆叠) axis=0 指的是纵向 ,axis = 1指的是横向 vertical 简称v 垂直
对nadarray的切片操作
nadarray切片例子:
-
In: a=np.array([[1,2,3],[4,3,2]])
-
In: a[1][0]
-
Out:array([4])
-
In:a[1,:2] #获取第1维的前2个元素
-
Out:array([4, 3])
数组的运算
np.pi np.sin() np.cos() np.tan() np.arctan() ~
np.around(a,2): 对a进行四舍五入,且保留两位小数
np.around(a,-1): 对a进行四舍五入,向十位四舍五入
、
np.power(a,b) : 以a为底数,求a的b次幂
np.mod( ) : 求余数
numpy的统计函数
numpy的排序函数
np.abs(a) np.fabs(a) : 取各元素的绝对值
np.sqrt(a) : 计算各元素的平方根
np.square(a): 计算各元素的平方
np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数
np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.rint(a) : 各元素 四舍五入
np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回
np.exp(a) : 计算各元素的指数值
np.sign(a) : 计算各元素的符号值 1(+),0 ,-1(-)
np.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;
np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值
np.minimum(a, b) np.fmin() : 取最小值
np.mod(a, b) : 元素级的模运算
np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素
np.T :可理解为矩阵的转置
key:
矩阵可逆的充要条件是矩阵满秩。
-
import numpy as np
-
import numpy.linalg as lg
-
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
-
In:lg.inv(a)
-
Out:array([[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15],
-
[ -6.30503948e+15, 1.26100790e+16, -6.30503948e+15],
-
[ 3.15251974e+15, -6.30503948e+15, 3.15251974e+15]])
-
#当a满秩具有可逆前提时,out即为a的逆矩阵
Matplotlib可视化