Numpy-Pandas
Morvan Numpy&Pandas知识点整理
Numpy
np.array([1,2,3],dtype=np.int)
np.empty((3,4))
np.zeros((3,4))
np.arange(12).reshape((3,4))
np.linspace(0,12,6) #0-12,6段
c = np.dot(a,b)
a = np.random.random((2,4))
np.argmin(a) #求最小值索引
np.argmax(a)
np.average()
np.median()
np.cunsum() #累加
np.diff() #相邻数字差
np.nonzero() #返回非0元素索引,前面是行,后面是列
np.sort() #无返回值,多用sorted(a)
np.transpose() #转置 a.T
np.clip(a,x1,x2) #a中小于x1为x1,大于x2为x2
for column in A.T:
print(column)
A.faltten() #展平
A.flat #展平迭代器
np.vstack((A,B)) #上下合并
np.hstack((A,B)) #左右合并
A=np.arrat([1,1,1])
A[np.newaxis,:] #行上加一个维度
A[:,np.newaxis] #列.....
np.concatenate((A,B), axis=0) #纵向合并(行)
np.split(A,2,axis=1) #矩阵纵向分割两块
np.array_aplit(A,3,axis=1) #不等分割
np.vsplit(A,3) #纵向分割
np.hsplit(A,3)
b = a.copy() #deep copy,b不关联a,只拷贝副本
Pandas
import pandas as pd
s = pd.Series([1,2,3,4])
pd.date_range('20160101',peroids=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, colunms=['a','b','c','d'])
df = pd.DataFrame(np.arange(12).reshape((3,4)))
df = pd.DataFrame({'A':1,'B':2,'C':3}) #内含字典
df.index #行
df.columns #列
df.values #值
df.describe()z #数字形式统计
df.sort_index(axis=1, ascending=False) #按列,倒序
df.sort_values(by='E') #按照某个值排序
print(df['A'],df.A)
df.loc['A']
df.iloc[3:5,2:4] #index索引
df.ix[2:4,'A:'B'] #索引混用,pandas0.20.0版本已经弃用,改为iloc功能
df[df.A>8]
pd['E'] = pd.Series([1,2,3], index=['A','B','C']) #pd新增一列值
df.dropna(axis=0,how='any') #how=['any','all],any有一个nan就丢弃整行,all需要全部nan才丢弃
df.fillna(value=0)
df.isnull()
np.any(df.isnull()==True) #any检查至少有一个为True,这里检查至少有一个是Nan
读取文件
pd.read_csv
pd.read_excel
保存
data.to_csv('test.csv')
data.to_excel
合并
res = pd.concat([df1,df2,df3], axis=0, ignore_index=True)
res = pd.concat([df1,df2,df3], join='inner') #inner保留交集,outer取并集,补充nan
res = df1.append([df2, df3], ignore_index=True)#根据index合并
res = df1.append(series1, ignore_index=True) #append series,根据index合并
pd.merge(left, right, on='key',indicator=True) #合并,key为行/列名,等值连接,indicator显示合并过程
boys = pd.DataFrame({'k':['k0','k1','k2'],'age':[1,2,3]})
girls = pd.DataFrame({'k':['k0','k1','k2'],'age':[4,5,6]})
res = pd.merge(boys,girls,on='key',suffixes=['_boys','_girls],how='outer') #合并并且区分男女,on设置主键值,suffixes设置新名,age+_boys