- 简介
- numpy、pandas是python提供的数据处理工具包
- 能够处理类似列表、字典类型的数据
- 它们通过矩阵运算处理,能够大大加快数据处理速度
- 是机器学习、神经网络中常用的数据处理工具
- numpy
能够生成和处理多维array,主要用于矩阵处理
导入numpy包
import numpy as np
常用方法
- 创建矩阵:
A = np.array([[1,2,3],[4,5,6]]),dtype = np.int)
B = np.zeros((2,3)) # 生成2行3列 元素全部为0的矩阵
# 类似的方法还有np.ones np.empty等等,同样可以利用dtype指定元素类型
C = np.arrange(0, 12, 2).reshape((2,3)) # 类似range()
D = np.linspace(1, 7, 20).reshape((5,4)) # np.linspace(begin, end, num_of_parts) 线性分割
- 简单方法:
A.shape A.ndim A.size # 矩阵的形状、维数、元素个数
+ - * / # 应用在array上时 即对应分量元素做运算
A.dot(B) np.dot(A,B) # 矩阵乘法
np.transcode(A) A.T # 矩阵转置
A[3][2] A[3,2] # 两种元素索引方式
np.min(A) np.max(A) np.sum(A) # 可以添加axis=0对列、axis=1对行做操作 如np.sum(A, axis=0)
np.argmin(A) np.argmax(A) # 最小值、最大值的索引
np.mean(A) np.average(A) np.median(A) # 求平均数、中位数 同样可以使用axis选项
np.cumsum(A) # 生成类似兔子序列
np.diff(A) # 生成A的一阶累差序列(按行计算)
np.nonzero(A) # 能够找到非零元素和零元素的索引
np.reshape <-> np.flattern # 将array重构<->将矩阵压成一维
- 合并、分割
np.vstack(A,B) np.hstack(A,B) # 纵向合并 横向合并
np.concatenate(A,B,C,A,D, axis=1) # 可以合并多个array,可以使用axis选项
np.array_split(A, 2, axis=1) np.array_split(B, 3, axis=0) # 等量分割
np.vsplit(A,2) np.hsplit(B,3) # 支持不等量分割
- pandas
pandas是在numpy的基础上增加了行、列的标签 即类似字典结构
导入pandas
import pandas as pd
常用方法
- 创建一个dataframe
A = np.arange(12).reshape((3,4))
df = pd.DataFrame(A)
# pandas通常会和numpy结合起来使用
二者的区别显而易见:dataframe在array的基础上添加了行、列索引
df = pd.DataFrame(A, index=B, column=C) # index、column选项用于命名df的行、列索引名称
df = pd.DataFrame({'column1'= A1, 'column2' = A2}) # 命名列 行索引默认0 1 2 3
-
属性
对dataframe,同样有dtype、index、columns、transcode、values等方法
pandas有大量和numpy相同用法的方法 此处不再赘述 -
导入、导出数据
data = pd.read_excel("file_in.excel")
data.to_json("file_out.json")
# read和to是一对相反的方法
# 支持csv、excel、json、html、sas、sql、pickle等多种类型