Numpy and Pandas

Numpy 和 Pandas[^1]是科学运算当中最重要的两个模块,在数据分析,机器学习领域不可或缺。其特点是运算速度快和消耗的资源少。

安装

在windows 10下通过下面指令安装成功。

1
2
$ pip install numpy
$ pip install pandas

如果安装遇到问题,可能与VS有关,网络上有很多解决办法。

numpy

numpy arrary的属性:

  • ndim : 维度
  • shape:行数与列数
  • size:元素个数

numpy 的方法:

  • array() :创建数组
  • zeros():创建数据全为0的数组
  • ones():创建数据全为1的数组
  • empty():创建数据全接近0的数组
  • arrange():按指定范围创建数据
  • linspace(): 创建线段
  • reshape(): 改变数据形状

numpy的属性:

  • dtype: 指定数据类型

将元素列表转化成numpy矩阵:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
array = np.arrary([1,2,3],
[4,5,6]])

# 创建一个Array并指定数据类型为float,数据类型有int,int32, float32
a = np.array([1, 2, 4],dtype=np.float)

# 创建一个元素全为1的2x5的2维矩阵
all_1 = np.ones((2,5),dtype=np.int)

# 使用arrange创建[10,19]步长为1的连续数组
a = np.arange(10,20,1)

# 将连续数据改变成2x5的2维矩阵
a = a.reshape(2,5)

Numpy基础运算:

  • 加减乘除

    • 加, 减

      1
      2
      c = a - all_1
      c = a + all_1
    • 乘,这里的乘法是里面元素一一对应的相乘而非矩阵乘法

      1
      c = a * all_1
  • 平方

1
c = a**2
  • 矩阵乘法
1
2
c_dot = a.dot(all_1)	or
c_dot = np.dot(a, all_1)
  • 常用数学函数
    • sin
    • sum
    • min
    • max
    • argmin() 获取矩阵中最小元素的索引
    • argmax() 获取矩阵中最大元素的索引
    • mean() 求均值
    • median() 求中位数
    • cumsum() 生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和
    • diff() 累差函数,没一行中后一项与前一项的差,最后一列舍去
    • sort()
    • transpose() 求矩阵转置

Pandas

Pandas是基于Numpy构建的,让Numpy为中心的应用变得更加简单。首先理解其两个数据结构:Series和DataFrame。

Series

Series可以将他理解成一列数据,索引在左边,值在右边。如果数据未指定索引,系统自动创建一个0到N-1(N为长度)的整数型索引。

1
2
3
# create a series
import pandas as pd
s = pd.Series([1,3,6,np.nan,44,1])

DataFrame

DataFrame是一个表格型的数据结构,它包含有多组有序的列,每列可以是不同的值类型(数值,字符串,布尔值等)。DataFrame既有行索引也有列索引, 它可以被看做由Series组成的大字典。

1
2
3
4
5
6
# 创建一个DataFrame结构,列名称分别为a,b,c,d,shape为6x4的矩阵
df = pd.DataFrame(np.random.randn(6,4),columns=['a','b','c','d'])

# 创建一个DataFrame结构,列名称分别为a,b,c,d,shape为6x4的矩阵,并且指定行名称
dates = pd.date_range('20160101',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])

DataFrame的方法:

  • describe(), 得出一些统计值
  • head(), 获取前5个数据
  • hist(), 绘制柱状图
  • reindex(), 重新排列
  • isnull(), 判断是否有缺失数据NaN

这里插入一些关于将数据绘制成图形的使用。matplotlib是Python中用的非常广的绘图库,windows平台可以通过下面命令来安装。

1
pip3 install matplotlib

在代码中通过import将其导入,进行使用。

例程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pandas as pd
import numpy as np
# 导入matplot pyplot库
import matplotlib.pyplot as plt

# 随机生成1000个数据,并有4列,列标签为‘A','B','C','D'
data = pd.DataFrame(np.random.randn(100,4),
index=np.arange(100),
columns=list("ABCD"))
# 打印前5行数据
print(data.head())

# pandas 数据可以直接观看其可视化形式,线性图。
data.plot()
plt.show()

# 绘制点图
ax=data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class A')

# 通过下面这条语句可以将ax的图形与下面的图形合并一起绘制
# data.plot.scatter(x='C',y='D',color='DarkGreen',label='Class B',ax=ax)
plt.show()

可能不是很详尽,但是足以入门,往后有使用还是要借助网络搜索。

[^1]: Numpy User Guide
[^2]: 莫烦Python