Numpy+Pandas基础梳理
Numpy: numpy提供了两种基本的对象:
1.ndarray:是存储单一数据类型的多维数组
np.array(data,dtype) #data可以是列表、元组、多维数组 ,dtype默认为None
np.arange(0,1,0.2) #指定起始值为0,终值为1,步长为0.2的一维数组,结果不包含终值
np.linspace(0,1,5) #指定起始值为0,终值为1,个数为5的一维数组,等差数列
np.logspace(0,1,5) #指定起始值为0,终值为1,个数为5的一维数组,等比数列
np.zeros([3,3]) np.ones(5) np.diag([1,2,3]) #全零,全一,对角矩阵
np.random.rand(5) #生成[0,1]随机数组,浮点数 .randint()生成整数
np.concatenate((arr1,arr2),axis=0) #合并数组,axis=1横向合并,axis=0纵向合并
np.split(arr,2,axis=1) #横向分割时,同hsplit() 纵向分割时,同vsplit()
2.ufunc:是一种能够对数组进行处理的函数
(1)四则运算:数组间的四则运算是对每个数组中的元素分别进行四则运算,所以形状必须相同。
(2)比较运算:比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
(3)逻辑运算:np.any表示逻辑‘or’,np.all表示逻辑‘and’,运算结果返回布尔值。
3.统计与分析:
(1)读/写文本文件 np.loadtxt("路径",delimiter=',')
np.savetxt("path",arr,fmt='%d',delimiter=',')
(2)排序:np.sort(a,axis,kind,order) #arr.sort()
(3)重复数据:np.repeat(a,reps='重复次数',axis) 去重:np.unique(arr)
(4)统计函数:np.sum()、np.mean()、np.std()、np.var()、np.max()、np.min()
Pandas: pandas有三种数据结构:Series、DataFrame、Panel
1.Series是一种一维数组对象,包含一个值序列、数据标签(索引)
pd.Series(data,index) #创建Series,index可不指定;data为列表或字典
2.DataFrame是一个表格型的数据结构,包含一组有序的列
pd.DataFrame(data,columns=['1','2','3'])#通常传入一个由等长列表或Numpy数组组成的字典
3.常用操作:
设置索引:df.set_index('new_index')
重置索引:df.reset_index(drop=True,inplace=True) #drop=True,原有索引就不会成为新的列
更改列名:1.直接法:df.columns = ['grammer', 'score', 'cycle', 'id']
2.使用rename()函数:df.rename(columns={'col1':'grammer', 'col2':'score'},inplace=True)
更改列的顺序:order = df.columns[[0, 3, 1, 2]] # 或者order = ['xx', 'xx',...] 具体列名
删除存在缺失值的行:
df.groupby('course').mean() #分组求平均
数据分成多个区间:pd.cut(ages, [0,5,20,30], labels=[u"婴儿",u"青年",u"中年"],retbins=True)
分组统计:df.groupby('hour').education.value_counts() #按hour分组,统计各个学历的个数
(3)数据聚合
df.agg({'a':np.mean,'b':np.sum,'c':[np.std,np.mean]}) #计算不同字段不同数目的统计量
df.groupby(['a','b'])['c'].transform('mean').sample(5) #通过transform方法将运算分布到每一行
df.groupby(['a','b'])['c'].apply(np.mean) #类似agg,将函数应用于每一列

浙公网安备 33010602011771号