numpy和pandas 各种比较常见的用法总结 一、numpy 1、numpy中reshape的用法 2、numpy中zeros_like的用法 二、pandas

numpy和pandas 各种比较常见的用法总结
一、numpy
1、numpy中reshape的用法
2、numpy中zeros_like的用法
二、pandas

1、numpy中reshape的用法

经常会遇到np.reshape(a,-1) 或者np.reshape(-1,a) 这样的情况(a=1,2,3,4,5),-1是一个比较神奇的功能,意思是我只要确定需要分成a行后者a列,剩下的数据你随便分,反正结果都一样。

例:

arr =np.array([1,2,3,4,5,6,7,8,9,10,11,12])一个一维的ndarry数组,长度为9

如果我想把它变成3x3的矩阵,可以直接arr.reshape(3,4),也可以用以上方法arr.reshape(3,-1) 或者arr.reshape(-1,4) ,最终的结果都一样

 

2、numpy中zeros_like的用法

numpy.zeros_like(a,dtype=Noneorder='K'subok=True)

该行代码会返回形状和数据类型和a相同且元素都为0的数组

3、array和asarray的区别

array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会,意思是对数据源进行重新赋值的话,array转化后的数据不变,asarray转化后的数据也会跟着数据源重新被赋值。

二、pandas

1、DataFrame

 取出DataFrame的所有标签名:

columns = data.columns

对DataFrame中的缺失值进行统计:

null_counts = data.isnull().sum()   # 统计所有有缺失值列的缺失值个数,要统计某一列直接进行指定即可,比如data['target'].isnull().sum() 

去掉缺失值最多的列:

data= data.drop('target',axis=1)  # 去掉缺失值最多的列,以target为例

去掉有缺失值的样本:

data= data.dropna(axis=0)  # 去掉有缺失值的样本

对缺失值进行填充:

notnull_feature = data.fillna(np.mean(0))  # 这里填充的是每一列的平均值,也可以直接填0

统计数据类型以及筛选:

dtypes = data.dtypes.value_counts()

object_columns = data.select_dtypes(include=['object'])   #有字符型的数据会被选出来分析

转换数据类型astype():

data = data.astype('float')   #. type 获取数据类型 ;dtype 获取数组元素的类型

将数据中的文本转化为数字:

data = pd.get_dummies(data,dummy_na=True)

一般数据比较大的时候,我们可以先读取第一行,观察数据结构,或者直接打印前五行

data_0 = data.iloc[0]  # 第一行

data_5 = data.head  # 前五行

data_info = data.info() #显示数据综合信息,个数、类型。。。

DataFrame数据结构非常灵活,可以通过多种方法提取出自己想要的列或者想要的行:

data= data[(data['target']=='car') | (data['target']=='truck')]   # 提取某一列下car和truck两个分类,如果该列还有其他类别,该类别以及类别横向对应的数据都会舍弃

去掉重复项:

data.drop_duplicates()

传入字典,可以对某一列的类别进行替换:

 status_replace = {'loan_status': }

 data= data.replace(status_replace)  #将loan_status列的两个属性进行替换

横向拼接:

 data= pd.concat([loans, dummy_df], axis=1)   # 横向拼接

特征列与标签列进行分离:

feature = data.iloc[:,data.columns!='Class']
labels = data.iloc[:,data.columns=='Class']

2、Series

如果要统计某一列的唯一值可以用unique(),只支持Series数据类型因此使用的时候只能针对DataFrame某一列:

unique = data['target'].unique()

DataFrame数据结构可以看做是很多个Series共用一列index,有个values_count()可以统计某列数据的类别分别是多少,只支持Series数据类型因此使用的时候只能针对DataFrame某一列:

values_count = data['TARGET'].value_counts()

values_count .index   #TARGET的类别

values_count .values  #TARGET类别对应的个数