Numpy,Pandas基本用法

Numpy使用

1. 数组创建

1.1. 创建新数组

numpy.empty(shape,dtype = float, order = ‘C‘, like = None)

创建一个空数组
shape:int或int元组
dtype:数据输出的类型,默认为numpy.float64,
order:顺序,默认为‘C‘行优先,或可为‘F‘列优先
like:引用对象允许创建非NumPy数组的数组

2. numpy的四则运算

# 向量与向量之间
# 加法
np.add(a,b)
a + b
# 减法
np.subtract(a,b)
a - b
# 乘法(X乘)
np.multiply(a,b)
a * b
# 点乘
np.dot(a,b)
# 除法
np.divide(a,b)
a / b

# 向量与标量之间
# 加法
a + 1
# 减法
a - 1
# 乘法
a * 2
# 除法
a / 2
# 求余
a % 2
# 矩阵转置
a.T
# 矩阵的逆(矩阵满秩)
import numpy.linalg as lg
lg.inv(a)

3. Numpy数组的切片与索引

a[3:7] # 提取a[3]-a[6]的值
a[:7:2] # 提取a[0]-a[6]每次递增2
a[::-1] # 反转数组
a[1,:2] # 获取第一维前两个数

4. Numpy数组的堆叠

# 改变数组形状
# reshape()
b = np.arange(24),reshape(2,3,4) # 三重数组
# ravel()
# 将多维数组拆解为一维数组
b.ravel()
# flatten()
# 拉直,功能与ravel()相同,不过flatten()返回的是真实的数组,需要分配新的内存空间,ravel()仅改变视图。
b.flatten()
# shape()
# 使用元组改变数组形状
b.shape = (6,4)
# transpose()
# 转置
b.transpose() # (6,4)变为(4,6)

# 数组的堆叠
a = np.arange(9).reshape(3,3)
b = a * 2
# hstack()
# 水平叠加
np.hstack((a,b)) # (3,3)变为(3,6)
# vstack()
# 垂直叠加
np.vstack((a,b)) # (3,3)变为(6,3)
# 深度叠加
np.dstack((a,b)) # (3,3)变为(3,3,2)

5. Numpy的拆分

a = np.arange(9).reshape(3,3)
# 拆分数组
# hsplit()
# 横向拆分
np.hsplit(a,3)
# vsplit()
# 纵向拆分
np.vsplit(a,3)
# dsplit()
# 深度拆分
# 深度拆分要求数组的秩大于等于3
np.dsplit(a,3)

6. Numpy比较运算

比较运算符在numpy中也是通过通用函数来实现,具体如下:

比较运算符 通用函数
== np.equal
!= np.not_equal
< np.less
<= np.less_equal
> np.greater
>= np.greater_equal

布尔逻辑

逻辑运算符 通用函数
& np.bitwise_and
| np.bitwise_or
^ np.bitwise_xor
~ np.bitwise_not
data=np.array([(‘Alice‘, 4, 40), (‘Bob‘, 11, 85.5) ,(‘Cathy‘, 7, 68.0),(‘Doug‘, 9, 60)],dtype=[("name","S10"),("age","int"),("score","float")])
 print(data)
‘‘‘
输出:[(b‘Alice‘,  4, 40. )
(b‘Bob‘, 11, 85.5)
(b‘Cathy‘,  7, 68. )
 (b‘Doug‘,  9, 60. )]
‘‘‘
 print(data["score"]>60)  #使用比较运算得的一个布尔数组
‘‘‘
输出:[False  True  True False]
‘‘‘
 print(data[data["score"]>60])  #进行简单的索引,即掩码操作将值为True的选出
‘‘‘
输出:[(b‘Bob‘, 11, 85.5) (b‘Cathy‘,  7, 68. )]
‘‘‘

Pandas使用

1. Pandas包的导入

from pandas import Series,DataFrame
import pandas as pd

1.1. Pandas中的数据结构

  • Series:一维数组,类似于Python中的基本数据结构list,区别是Series只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据;
  • DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。
  • Panel:三位的数组,可以理解为DataFrame的容器。

2. Series

# 自动创建索引
In [1]:obj=Series([4,7,-5,3])
In [2]:obj
Out[2]:
0 4
1 7
2 -5
3 3
# 手动设置索引
In [5]:obj2=Series([4,7,-5,3],index=[‘d‘,‘b‘,‘a‘,‘c‘])
In [6]:obj2
Out[6]:
d 4
b 7
a -5
c 3
# 字典方式创建
In [7]:sdata={‘Ohio‘:35000,‘Texas‘:71000,‘Oregon‘:16000,‘Utah‘:5000}
In [8]:obj3=Series(sdata)
In [9]:obj3
Out[9]:
Ohio   35000
Texas  71000
Oregon 16000
Utah   5000

3. DataFrame

DataFrame是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由Series组成的字典。

# 创建DataFrame
dictionary = {‘state‘:[‘0hio‘,‘0hio‘,‘0hio‘,‘Nevada‘,‘Nevada‘],
             ‘year‘:[2000,2001,2002,2001,2002],
             ‘pop‘:[1.5,1.7,3.6,2.4,2.9]}
frame = DataFrame(dictionary)
# 修改行索引
frame = DataFrame(dictionary,index=["one","two","three","four","five"])
# 添加新列
frame["add"] = [0,0,0,0,0]
# 添加Series类型
value = Series([1,3,1,4,8,10],index=[0,1,2,3,4,5])
frame["add1"] = value

Numpy,Pandas基本用法

上一篇:nginx中反向代理


下一篇:CronExpression表达式详解和案例