Something About Python(numpy,pandas)
2017-12-23 17:05
387 查看
一,学习一门语言,最先需要做好的就是学习如何去查看相关的文档,以及一些重要函数方法的查看方法。比如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就行了。这就是存本地磁盘的方法。大家伙一定要多敲多尝试,实验成真知。
相关文章推荐
- python常用数据处理库的安装(numpy pandas matplotlib)
- [转] python安装numpy和pandas
- python3 科学计算模块 numpy、pandas、sns、seaborn等模块安装遇到的问题
- windows安装python+numpy+scipy+matplotlib+pandas+beautifulsoup
- python 安装anaconda, numpy, pandas, matplotlib
- python及numpy,pandas易混淆的点
- Python及其接口函数库(TensorFlow、NumPy、Matplotlib、sklearn、pandas)参考资料(更新中,更新日期:2017-07-10)
- Python Pandas与Numpy中axis参数的二义性
- Python数据科学Jupyter-Matplotlib-Numpy-Keras-Pandas速查
- Python使用numpy和pandas模拟转盘抽奖游戏
- python安装numpy和pandas
- windows 安装python3.6(numpy,scipy,pandas,matplotlib,scikit-learn)
- python基础(Numpy,Pandas,Matplotlib,
- python科学运算库numpy,pandas学习记录
- python Numpy,SciPy,MatplotLib,pandas安装流程
- Numpy, Pandas, 及Python原生的排序方法
- python numpy和pandas包实现归一化和标准化
- 数据预处理(3) ——数据归约 使用python(sklearn,pandas,numpy)实现
- python数据处理之numpy和pandas(中)
- Windos7(32位)安装Python2.7,再加上numpy、scipy、Matplotlib、Ipython、pandas