您的位置:首页 > 编程语言 > Python开发

Something About Python(numpy,pandas)

2017-12-23 17:05 351 查看

         

      一,学习一门语言,最先需要做好的就是学习如何去查看相关的文档,以及一些重要函数方法的查看方法。比如python,如果我们引入一个模块,我们就要想着如何去看下这个模块的函数,这时候就可以用python的dir(module)函数了。如何我要已经明确要使用一个函数,想去了解这个函数的入参以及一些使用方法,那么我们就可以用help(module)这个函数了,同时如果可以使用dir(__builtins__)去查看系统库自带的方法和模块。这些是了解python模块和函数最简单的方法了。当然也可以去查看官方文档。这个应该是最完整的了。下面是我手敲的一些numpy跟pandas的代码示例。

1,首先我们引入numpy模块,下面的代码的注释可以自己打开,在自己的pyshell看下效果。
import numpy as np
array = np.array([[1,2,3],[2,3,4]])  #用numpy的array方法构造一个array
#print(array)
#print('number of dim:',array.ndim)
#print('shape:',array.shape)
#print('size:',array.size)

2,下面是numpy的array的一些属性,大家伙可以自己运行看下结果。

a = np.array([[2,34,4],[5,6,7]],dtype=np.int)
#print(a.dtype)
#print(a.ndim)
#print(a.shape)

3,下面是python的一些常用的构造array的方法,以及numpy的计算以及切片选择。
b = np.zeros((3,4))
c = np.ones((3,4))
d = np.empty((3,4))
f = np.arange(10,20,2)
#print(f)
e = np.arange(12).reshape((3,4))
#print(e)
g = np.linspace(1,10,20)
#print(g)

a = np.array([10,20,30,40])
b = np.arange(4)

c = a**2
d = a-b

#print(c,d)

a = np.array([
[1,1],
[0,1]])
b = np.arange(4).reshape(2,2)
c = a*b
c_dot=np.dot(a,b)
c_dot_2 = a.dot(b)

#print(c)
#print(c_dot)

a = np.random.random((2,4))
b=np.sum(a,axis=0)
np.min(a)
np.max(a)
#print(a)
#print(b)

a = np.arange(14,2,-1).reshape((3,4)).T
#print(np.argmin(a))
#print(np.cumsum(a))
np.diff(a)
np.nonzero(a)
np.mean(a)
b=np.sort(a,axis=0)
#print(a)
#print(b)

np.clip(a,5,9)#小于5的就是5 大于9的就是9

#--------------------------------------------
a = np.arange(3,15).reshape(3,4)
a[1,2]
a[:,:]

#print(a)
#print(a[2,2])
a.flatten()
for row  in a:
#print(row)
pass
for column in a.T:
#print(column)
pass
for item in a.flat:
#print(item)
pass


4,下面是numpy的合并,有横向合并,有纵向合并,大家在用的时候要特别注意。特别是axis这个属性,0是行,1是列,但是有时候会很绕。大家要多尝试。
a = np.array([1,1,1])
b = np.array([2,2,2])

c = np.vstack((a,b))
#print(c)
d = np.hstack((a,b))
#print(d)

e = a[np.newaxis,:]
f = a[:,np.newaxis]

c = np.concatenate((a,b),axis=0)
#print(c)

#---------------------------
a = np.arange(12).reshape((3,4))
b = np.split(a,3,axis=0)
#print(a)
#print(b)

np.array_split(a,3,axis=1)#可以不等分割
np.vsplit(a,3)
np.hsplit(a,2)
#-----------------------------------

a = np.arange(4)
b =a
c =a
d =b
#print(a is b)
b =a.copy()# deep copy
5,pandas的一些属性,先是引入pandas,首先都默认已经引入了numpy模块。以下就是pandas的一些属性,包括pandas的series,pandas的dataframe。
以及pandas的一些简单的用法。
import pandas as pd

s = pd.Series([1,2,3,4,np.nan,7])

#print(s)
datas = pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=datas,columns=['a','b','c','d'])
print(df)

df1 = pd.DataFrame(np.random.randn(3,4))
print(df1)

df2 = pd.DataFrame({'a':1.0,
'b':pd.Timestamp('20130102'),
'c':pd.Series(1,index=list(range(4)),dtype='float32'),
'd':np.array([3]*4,dtype='int32'),
'e':pd.Categorical(['test','train','test','train']),
'f':'foo'
})

df2.index
df2.dtypes
df2.columns
df2.values
df2.describe()

df2.sort_index(axis=1,ascending=False)
df2.sort_values(by='e')

#------------------------------

dates = pd.date_range('20130101',periods=6)

df = pd.DataFrame(np.arange(24).reshape((6.4),
index=dates,columns=['a','b','c','d']))
df['a']
df.a
df[0:3]

df['20130101':'20130104']
df.loc['20130101']
df.loc['20130101',['a','b']]
df.iloc[[1,3,4],1:3]
df.ix[:3,['a','c']]

df[df.a>8]
df.iloc[2,2]=111
df.loc['20130102','a']=555

df['e'] = pd.Series([1,2,3,4,5,6],index=dates)

#--------------------------------------
#缺失数据的处理
df.dropna(axis=0,how='any')#how={'any','all'}
df.fillna(value=0)
df.isnull()
np.any(df.isnull()==True)

#pandas读取csv文件
data = pd.read_csv('student.csv')

#print(data)

data.to_pickle('student.pickle')
#pandas data merge split

df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])
df3 = pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])

res = pd.concat([df1,df2,df3],axis=0)
res1 = pd.concat([df1,df2,df3],axis=0,ignore_index=True)

#join : inner outer
df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2 = pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])

res2 = pd.concat([df1,df2]) #outer
res = pd.concat([df1,df2],join='inner',ignore_index=True)

res4 = pd.concat([df1,df2],axis=1,join_axes=df1.index)

s1 = pd.Series([1,2,3,4],index=['a','b','c','d'])
res = df1.append(s1,ignore_index=True)

#merge
left = pd.DataFrame({
'key':['k0','k1','k2','k3'],
'a':['a0','a1','a2','a3'],
'b':['b0','b1','b2','b3']
})
right = pd.DataFrame({
'key':['k0','k1','k2','k3'],
'c':['c0','c1','c2','c3'],
'd':['d0','d1','d2','d3']
})

res = pd.merge(left,right,on='key')
#how inner outer left right
res1 = pd.merge(left,right,on=['key1','key2'],how='inner')#inner

res2 = pd.merge(df1,df2,on='c',how='outer',indicator=True)


6,下面是pandas的读取本地磁盘文件的方法。当然都有一些存本地磁盘的方法,把read换成to就行了。这就是存本地磁盘的方法。大家伙一定要多敲多尝试,实验成真知。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息