数据科学库(二)

numpy补充和pandas入门

numpy补充

矩阵的索引和切片

索引和切片的基本操作和python一样,在此介绍二维数组的索引和切片操作。

索引行和列

生成4x4的矩阵,分别索引需要的行和列:

import numpy as np
A= np.arange(16).reshape(4,4)
print(A)
print(A[1:3])    #索引第2行和第3行
print(A[:,2:4])  #索引第3列和第4列
print(A[1:3,2:4])#索引第2行和第3行中的第3列和第4列

结果如下:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 4  5  6  7]
 [ 8  9 10 11]]
[[ 2  3]
 [ 6  7]
 [10 11]
 [14 15]]
[[ 6  7]
 [10 11]]
按特定条件索引

如:

import numpy as np
A= np.arange(16).reshape(4,4)
print(A)
print(A[A>10])   #输出A中大于10的元素组成的数组
print(A[A%2==0]) #输出A中偶数元素组成的数组

结果如下:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[11 12 13 14 15]
[ 0  2  4  6  8 10 12 14]

pandas入门

pandas的关键数据结构

一维数据结构Series
import pandas as pd
import numpy as np
s=pd.Series([1,3,5,np.NaN,8,4])   #NaN表示Not a Number
print(s)

输出结果如下:

0    1.0
1    3.0
2    5.0
3    NaN
4    8.0
5    4.0
dtype: float64

第一列为索引(自动创建),第二列为值。

二维数据结构DataFrame
  1. 创建日期序列
import pandas as pd
import numpy as np
dates=pd.date_range('20160301',periods=6)
print(dates)

输出结果如下:

DatetimeIndex(['2016-03-01', '2016-03-02', '2016-03-03', '2016-03-04',
               '2016-03-05', '2016-03-06'],
              dtype='datetime64[ns]', freq='D')
  1. 用数据结构DataFrame创建二维数组:
import pandas as pd
import numpy as np
dates=pd.date_range('20160301',periods=6)
data=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#使用np.random.randn()创建6x4的随机数组,使用dates作为行索引,列索引用ABCD表示。
print(data)

输出结果如下:

                   A         B         C         D
2016-03-01 -1.025216 -1.750513  0.717700  1.249785
2016-03-02 -1.159727  1.247696  0.681604 -0.795137
2016-03-03 -0.904264  1.103957  0.639108 -0.573438
2016-03-04  0.287851  1.855954 -1.431715  0.890373
2016-03-05  0.034006 -1.472277  0.609982 -0.546555
2016-03-06  0.301257 -1.247960  2.360873 -0.425789
字典(另一个创建二维数组的方法)

使用字典创建一个二维数组:

import pandas as pd
import numpy as np
d={
   'A':1,"B":pd.Timestamp("20130301"),'C':range(4),'D':np.arange(4)}
#ABCD四个key分别赋值数值1、一个时间戳、range()函数的值、np.arange()函数的值。
df=pd.DataFrame(d)
print(df)

输出结果如下:

   A          B  C  D
0  1 2013-03-01  0  0
1  1 2013-03-01  1  1
2  1 2013-03-01  2  2
3  1 2013-03-01  3  3
查看数据
head查看前(五)行、tail查看后(五)行

head()、tail()默认返回5行数据

import pandas as pd
import numpy as np
dates=pd.date_range('20160301',periods=6)
data=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#使用np.random.randn()创建6x4的随机数组,使用dates作为行索引,列索引用ABCD表示。
print(data.head())
print(data.tail())
print(data.head(2))
print(data.tail(3))

输出结果如下:

                   A         B         C         D
2016-03-01  0.687377  0.291196  0.788835  0.144668
2016-03-02  0.133120 -1.066542 -0.655071 -0.278354
2016-03-03  0.571230  1.059514 -1.572226  0.998279
2016-03-04 -0.707941  0.490541 -0.508189  1.332583
2016-03-05  0.782082 -0.309733  0.385113 -2.001689
                   A         B         C         D
2016-03-02  0.133120 -1.066542 -0.655071 -0.278354
2016-03-03  0.571230  1.059514 -1.572226  0.998279
2016-03-04 -0.707941  0.490541 -0.508189  1.332583
2016-03-05  0.782082 -0.309733  0.385113 -2.001689
2016-03-06  0.155096 -0.276119  1.035860 -0.385331
                   A         B         C         D
2016-03-01  0.687377  0.291196  0.788835  0.144668
2016-03-02  0.133120 -1.066542 -0.655071 -0.278354
                   A         B         C         D
2016-03-04 -0.707941  0.490541 -0.508189  1.332583
2016-03-05  0.782082 -0.309733  0.385113 -2.001689
2016-03-06  0.155096 -0.276119  1.035860 -0.385331
index、columns、values

index返回行标签、columns返回列标签、values以二维数组的形式返回该二维数组的值。

import pandas as pd
import numpy as np
dates=pd.date_range('20160301',periods=6)
data=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#使用np.random.randn()创建6x4的随机数组,使用dates作为行索引,列索引用ABCD表示。
print(data)
print(data.index)
print(data.columns)
print(data.values)

输出结果如下:

                   A         B         C         D
2016-03-01 -0.627376 -0.631146 -0.768253 -0.365725
2016-03-02  0.274266 -2.671629 -0.971605 -1.304933
2016-03-03 -0.039024 -1.267995  1.343958 -1.553249
2016-03-04 -0.564481 -0.157503 -0.716591 -0.290638
2016-03-05  0.768433 -0.397582  0.678337 -0.707139
2016-03-06 -0.162657 -1.191969  0.439424 -3.304446
DatetimeIndex(['2016-03-01', '2016-03-02', '2016-03-03', '2016-03-04',
               '2016-03-05', '2016-03-06'],
              dtype='datetime64[ns]', freq='D')
Index(['A', 'B', 'C', 'D'], dtype=</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值