numpy和pandas 各种比较常见的用法总结
一、总结
一句话总结:
numpy的结构是纯粹的ndarray,而pandas的是Series(单维)和DataFrame(多维)
1、numpy库中创建数组方法array和asarray的区别?
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,【array仍然会copy出一个副本,占用新的内存,但asarray不会】
意思是对数据源进行重新赋值的话,array转化后的数据不变,asarray转化后的数据也会跟着数据源重新被赋值。
二、numpy和pandas 各种比较常见的用法总结
转自或参考:numpy和pandas 各种比较常见的用法总结 - 编程小虾米 - 博客园
https://www.cnblogs.com/lmcltj/p/10960686.html
一、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=None, order='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类别对应的个数