python中pandas库 模块_python模块之numpy,pandas基本用法

numpy:

是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库。

直接看例子

一维数组:

k=np.array([1,2,3,4])

np.ndim(k) #查看维数1np.shape(k) #显示维度的元素个数

(4,)

k.size #总共多少个数字4

二维数组:

m=np.array([[1,2,3,4],[0.1,0.2,0.3,0.4]])

np.shape(m) #

(2, 4) #两个维度,一个维度4个数字

m

array([[1. , 2. , 3. , 4. ],

[0.1, 0.2, 0.3, 0.4]])

m.size8

m[:,0:2] #显示每个维度里面第一和第二个数字

array([[1. , 2. ],

[0.1, 0.2]])

下面看看一个图

2e6d746d605f87fa2acdee102406f13e.png

pandas

是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,它本身有很多的函数去处理维度层面的数据。

例如:

datas=pd.date_range('20191125',periods=6)

df=pd.DataFrame(np.random.randn(6,4),index=datas,columns=list('abcd')) #通过numpy生成(6,4)的随机数字

df

a b c d2019-11-25 -0.050400 1.399334 -0.747377 -0.246388

2019-11-26 -1.737346 -0.398420 -0.109420 0.532931

2019-11-27 1.960727 -0.267495 -0.069288 0.071406

2019-11-28 0.430069 -1.064840 -0.046383 1.358375

2019-11-29 -0.648332 -1.448899 -1.246229 -0.331214

2019-11-30 -0.468561 -0.995754 0.750662 0.335533

查看某列,某行数据,有个缺陷:写了行不能写列,写了列不能写行

df['a'] #查看a名称列的数据2019-11-25 -0.050400

2019-11-26 -1.737346

2019-11-27 1.960727

2019-11-28 0.430069

2019-11-29 -0.648332

2019-11-30 -0.468561Freq: D, Name: a, dtype: float64

#查看某行或者某几行数据

df['2019-11-25':'2019-11-28'] #注意

a        b         c       d

2019-11-25 -0.050400 1.399334 -0.747377 -0.246388

2019-11-26 -1.737346 -0.398420 -0.109420 0.532931

2019-11-27 1.960727 -0.267495 -0.069288 0.071406

2019-11-28 0.430069 -1.064840 -0.046383 1.358375

df['2019-11-25':'2019-11-25'] #注意

a       b       c           d

2019-11-25 -0.0504 1.399334 -0.747377 -0.246388

重要方法一:loc  根据数组里面存在的元素查找需要的部分

下面以df为例子

datas=pd.date_range('20191125',periods=6)

df=pd.DataFrame(np.random.randn(6,4),index=datas,columns=list('abcd'))

df

a b c d2019-11-25 -0.050400 1.399334 -0.747377 -0.246388

2019-11-26 -1.737346 -0.398420 -0.109420 0.532931

2019-11-27 1.960727 -0.267495 -0.069288 0.071406

2019-11-28 0.430069 -1.064840 -0.046383 1.358375

2019-11-29 -0.648332 -1.448899 -1.246229 -0.331214

2019-11-30 -0.468561 -0.995754 0.750662 0.335533

df.loc['2019-11-25':'2019-11-25','a':'b'] #查看日期2019-11-25的 a,b两列

a        b

2019-11-25 -0.0504 1.399334

#需要取行中不连续的,要使用index,例如上面的index=datas,相当于把时间放入一个列表里面

df.loc[datas[0::2],'a':'b']

a          b

2019-11-25 -0.050400 1.399334

2019-11-27 1.960727 -0.267495

2019-11-29 -0.648332 -1.448899

重要方法之二:iloc,它的原理将行列转化成列表的索引表示

df.iloc[0:1,1:2] #就不会出现数组里面的元素了

b2019-11-25 1.399334df.iloc[::2,0:2]

a b2019-11-25 -0.050400 1.399334

2019-11-27 1.960727 -0.267495

2019-11-29 -0.648332 -1.448899

pandas重要方法之三:groupby 根据某个列值取排列某个列或者多个列,用来计算

>>> df1=pd.DataFrame({'Data1':np.random.randint(0,10,5),'Data2':np.random.randint(10,20,5),'key1':list('aabba'),'key2':list('xyyxy')})>>>df1

Data1 Data2 key1 key2

07 15a x1 3 11a y2 3 18b y3 6 15b x4 9 10 a y

根据单列来对单列分组计算

>>> mm=df1['Data1'].groupby(df1['key1'])

查看mm的分组情况

>>> mm.groups #'key1'列排序后就两个字符串 a,b 然后分别根据a,b来对'Data1'列进行分组

{'a': Int64Index([0, 1, 4], dtype='int64'), 'b': Int64Index([2, 3], dtype='int64')}

#对mm进行求平均

>>> mm.mean()

key1

a 6.333333

b 4.500000

Name: Data1, dtype: float64

#根据多列对多列分组

>>> df1.groupby([df1['key1'],df1['key2']]).sum()

Data1    Data2

key1 key2

a     x       7        15

y       12       21

b     x       6        15

y       3        18

根据多列对多列分组看下图

b882bd8ca61889ce85a5e73ddebe24ff.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值