numpy和pandas 各种比较常见的用法总结

一、numpy

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':{'Fully Paid':1,'Charged Off':0} }

 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类别对应的个数

 



posted @ 2019-06-28 00:19  编程小虾米  阅读(4371)  评论(0编辑  收藏  举报