1. 程式人生 > >pandas一些基本操作(DataFram和Series)_2

pandas一些基本操作(DataFram和Series)_2

randint isinf 向上 四舍五入 and [1] taf init base

import numpy as np
arr1 = np.arange(32).reshape(8,4)
print(arr1)
arr1 = arr1.reshape(-1);
print(arr1)
arr2 = np.logspace(1,8,8,base=2).reshape(8,1)
print(arr2)
##數組廣播的規律,要麽兩個維度相同,要麽某一個維度為1
##矩陣積為dot A np的行乘以B np的列的和,所以行列要一致。
arr3 = [[15930.2,244.2],
[8111.87,148.87],
[13722.46,221.1]]
arr3 = np.array(arr3,float);
print(arr3.dtype)
##利用切片取數組
print(arr3[:,0])
print("======================================")
print(arr3[[0,2]])
print("======================================")
print(arr3[[0,2],[1,1]])
print("======================================")
##取多行多列,使用np的索引器,np.ix_(m,n)
print(arr3[np.ix_([0,2],[1])])
##數組轉置
arr3 = [[15930.2,244.2],
[8111.87,148.87],
[13722.46,221.1]]
arr3 = np.array(arr3)
print(arr3.T)
xiaoming_score=np.array([100,60,50,65])
#取不及格分數
print(xiaoming_score >= 60)
condition = xiaoming_score >= 60
print(xiaoming_score[condition])#取出對應的數,多維同樣適用,會降低到一維數據
xiaoming_score2=np.array([[100,60,50,65],[20,30,40,50]])
print(xiaoming_score2.transpose())#數組的轉置和軸兌換
##數組的拉伸和合並 (如果reps參數只寫一個數值為橫向拉伸的倍數,如果使用[m,n] m為縱向 n為橫向拉伸的倍數)
print(np.tile(xiaoming_score2,[2,1]))
print("===================================================")
##合並操作
xiaoming_2_score = np.array([[90,90,90,90],[88,88,88,88]])
print(np.stack([xiaoming_score2,xiaoming_2_score],axis=0))#沿著某一個軸合並 0是兩塊合並 1是拆快合並 2是拿對應個數合並
print("===================================================")
##堆疊操作
print(np.vstack([xiaoming_score2,xiaoming_2_score]))
print(np.hstack([xiaoming_score2,xiaoming_2_score]))
##np 的函數操作
print("===================================================")
arry2 = np.random.randint(-10,10,[3,4])
print(arry2)
#絕對值
print(np.fabs(arry2))
print(np.sqrt(arry2))#開方
print(np.square(arry2))#平方
#exp #計算各個元素的指數e的x次方
#log10 log2 log1p
arr3 = np.arange(1,11)
print(arr3)
print(np.log2(arr3))#相當於2為底,求arr3每個元素的多少次方等於每個位置元素 eg:1=2^x log就是e為底
#np.log1p 以1+x為真數e為底的對數
#以5為底 可以利用換底公式
arry4 = np.log2(arr3)/np.log2(5)
print(arry4)
#ceil 向上取整 floor 向下取整
np.floor(arry4)
print(np.floor(arry4))
#四舍五入 np.rint
#保留幾位小數 np.around(arr4,decumals=2)
#modf 把小數拆開成兩個數組,返回小數位和整數位
#判斷元素是否是nan isnan 可以用布爾值索引取出數組中nan ~取反操作
#np.isfinite 是否有窮數 isinf(inf 是無窮數)
#mod
arr6 = np.arange(10)
print(arr6)
print(np.mod(arr6,3))
#dot 舉證積操作

##eg:np.greater(arr5,arr6) less equal less_equal not_equal
np.power(arr6,3)#幾次方
score = np.array([
[80,90,87,56,77],
[55,45,87,90,98],
[100,12,100,89,77],
[77,33,87,79,60]
])
print(score)
print(np.amax(score))#求成績的最高分
print(np.amax(score,axis=0))#豎向求最大
print(np.amax(score,axis=1))#橫向求最大
print(np.mean(score,axis=1))#橫向求平均分
#方差和標準差
#方差,np.mean(a-a.mean()**2)
print(np.mean(np.square(score-np.mean(score))))
print(np.var(score))
##再開方是標準差 std是直接求標準差
random1 = np.random.randint(0,10,10)
random2 = np.random.randint(0,10,10)
print(random1)
print(random2)
cond = random1 > random2
print([x if z else y for(x,y,z) in zip(random1,random2,cond)])#取較大數合並 多維對比合並用np.where(cond,random1,random2)
#print(x,y,z)
# np.unique 去除重復值
arr10 = np.random.randint(0,5[5,5])
print(arr10)
np.unique(arr10)

pandas一些基本操作(DataFram和Series)_2