DAY18

DAY 18

numpy模块

numpy是Python的是一种开源的数值计算扩展库。这种库可以用来存储和处理大型numpy数组,比如Python自身的嵌套列表结构要高效的多(该结构也可以用来表示numpy数组)。

numpy库也两个作用:

  1. 区别于list列表,提供了数组操作、数组运算、以及统计发布和简单的数学模型
  2. 计算速度快,甚至要由于Python内置的简单运算,使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。

为什么用numpy

lis1 = [1, 2, 3]
lis2 = [4, 5, 6]
lis1

[1, 2, 3]

lis2

[4, 5, 6]

如果我们想让lis1 * lis2 得到一个结果为lis_res = [4, 10, 18],非常复杂。

创建numpy数组

numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。

import numpy as np
# np.array?  相当于pycharmd的ctrl+鼠标左键 
# 创建一维的ndarray对象
arr = np.array([1, 2, 3])
print(arr, type(arr))

[1 2 3] < class 'numpy.ndarray'>

# 创建二维的ndarray对象
print(np.array([1, 2, 3], [4, 5, 6]))

[[1 2 3]

[4 5 6]]

#  创建三维的ndarray对象
print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))

[[1 2 3]

[4 5 6]

[7 8 9]]

numpy数组的常用属性

属性解释
T数组的转置(对高维数组而言)
dtype数组元素的数据类型
size数组元素的个数
ndim数组的维数
shape数组的维度大小(以元组形式)
astype类型转换

dtype种类:bool_,int(8, 16, 32, 64), float(16, 32, 64)

arr = np.array([[1, 2, 3], [4, 5, 6]], dtype = np.float32)
print(arr)

[[1. 2. 3.]

[4. 5. 6.]]

print(arr.T)

[[1. 4.]

[2. 5.]

[3. 6.]]

print(arr.dtype)

float32

arr = arr.astype(np.int32)
print(arr.dtype)
print(arr)

int32

[[1 2 3]

[4 5 6]]

print(arr.size)

6

print(arr.ndim)

2

print(arr.shape)

(2, 3)

获取numpy数组的行列数

由于numpy数组是多维的,对于二维的数组而言,numpy数组就是既有行又有列。

注意:对于numpy我们一般多讨论二维的数组。

切割numpy数组

切分numpy数组类似于列表的切割,但是与列表的切割不同的是,numpy数组的切割涉及到行列的切割,但是两者切割的方式都是从索引0开始,并且取头不取尾。

numpy数组元素替换

numpy数组元素的替换,类似于列表元素的替换,并且numpy数组也是一个可变类型的数据,即如果对numpy数组进行替换操作,会修改原numpy数组的元素,所以下面我们用.copy()方法举例numpy数组元素的替换。

numpy数组的合并

合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的,其中axis=1表示合并两个numpy数组的行,合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的,其中axis=0表示合并两个numpy数组的列

通过函数创建numpy数组

方法详解
array()将列表转换为数组,可选择显式指定dtype
arange()range的numpy版,支持浮点数
linspace()类似arange(),第三个参数为数组长度
zeros()根据指定形状和dtype创建全0数组
ones()根据指定形状和dtype创建全1数组
eye()创建单位矩阵
empty()创建一个元素全随机的数组
reshape()重塑形状

numpy数组运算

运算符说明
+两个numpy数组对应元素相加
-两个numpy数组对应元素相减
*两个numpy数组对应元素相乘
/两个numpy数组对应元素相除,如果都是整数则取商
%两个numpy数组对应元素相除后取余数
**n单个numpy数组每个元素都取n次方,如**2:每个元素都取平方

numpy数组运算函数

numpy数组函数详解
np.sin(arr)对numpy数组arr中每个元素取正弦,sin(x)sin(x)
np.cos(arr)对numpy数组arr中每个元素取余弦,cos(x)cos(x)
np.tan(arr)对numpy数组arr中每个元素取正切,tan(x)tan(x)
np.arcsin(arr)对numpy数组arr中每个元素取反正弦,arcsin(x)arcsin(x)
np.arccos(arr)对numpy数组arr中每个元素取反余弦,arccos(x)arccos(x)
np.arctan(arr)对numpy数组arr中每个元素取反正切,arctan(x)arctan(x)
np.exp(arr)对numpy数组arr中每个元素取指数函数,exex
np.sqrt(arr)对numpy数组arr中每个元素开根号x−−√

numpy数组矩阵化

numpy数组的点乘

numpy数组的点乘必须满足第一个numpy数组的列数等于第二个numpy数组的行数,即m∗n⋅n∗m=m∗mm∗n·n∗m=m∗m。

numpy数组的转置

numpy数组的转置,相当于numpy数组的行和列互换。

numpy数组的逆

numpy数组行和列相同时,numpy数组才可逆。

numpy数组数学和统计方法

方法详解
sum求和
cumsum累加求和
mean求平均数
std求标准差
var求方差
min求最小值
max求最大值
argmin求最小值索引
argmax求最大值索引
sort排序

numpy.random生成随机数

函数名称函数功能参数说明
rand(d0,d1,⋯,dnd0,d1,⋯,dn)产生均匀分布的随机数dndn为第n维数据的维度
randn(d0,d1,⋯,dnd0,d1,⋯,dn)产生标准正态分布随机数dndn为第n维数据的维度
randint(low[, high, size, dtype])产生随机整数low:最小值;high:最大值;size:数据个数
random_sample([size])在[0,1)[0,1)内产生随机数size为随机数的shape,可以为元祖或者列表
choice(a[, size])从arr中随机选择指定数据arr为1维数组;size为数组形状
uniform(low,high [,size])给定形状产生随机数组low为最小值;high为最大值,size为数组形状
shuffle(a)与random.shuffle相同a为指定数组

pandas模块

pandas基于Numpy,可以看成是处理文本或者表格数据。pandas中有两个主要的数据结构,其中Series数据结构类似于Numpy中的一维数组,DataFrame类似于多维表格数据结构。

pandas是python数据分析的核心模块。它主要提供了五大功能:

  1. 支持文件存取操作,支持数据库(sql)、html、json、pickle、csv(txt、excel)、sas、stata、hdf等。
  2. 支持增删改查、切片、高阶函数、分组聚合等单表操作,以及和dict、list的互相转换。
  3. 支持多表拼接合并操作。
  4. 支持简单的绘图操作。
  5. 支持简单的统计分析操作。

Series数据结构

Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。

Series比较像列表(数组)和字典的结合体

Series支持NumPy模块的特性(下标)

详解方法
从ndarray创建SeriesSeries(arr)
与标量运算df*2
两个Series运算df1+df2
索引df[0], df[[1,2,4]]
切片df[0:2]
通用函数np.abs(df)
布尔值过滤df[df>0]

Series支持字典的特性(标签)

详解方法
从字典创建SeriesSeries(dic),
in运算’a’ in sr
键索引sr['a'], sr[['a', 'b', 'd']]

Series缺失数据处理

方法详解
dropna()过滤掉值为NaN的行
fillna()填充缺失数据
isnull()返回布尔数组,缺失值对应为True
notnull()返回布尔数组,缺失值对应为False

DataFrame数据结构

DataFrame是一个表格型的数据结构,含有一组有序的列。

DataFrame可以被看做是由Series组成的字典,并且共用一个索引。

产生时间对象数组:date_range

参数详解
start开始时间
end结束时间
periods时间长度
freq时间频率,默认为'D',可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),…

DataFrame属性

属性详解
dtype是查看数据类型
index查看行序列或者索引
columns查看各列的标签
values查看数据框内的数据,也即不含表头索引的数据
describe查看数据每一列的极值,均值,中位数,只可用于数值型数据
transpose转置,也可用T来操作
sort_index排序,可按行或列index排序输出
sort_values按数据值来排序

DataFrame取值

loc(通过行标签取值)
iloc(类似于numpy数组取值)
使用逻辑判断取值

DataFrame值替换

读取CSV文件

处理丢失数据

合并数据

导入导出数据

使用df = pd.read_excel(filename)读取文件,使用df.to_excel(filename)保存文件。

读取文件导入数据

读取文件导入数据函数主要参数:

参数详解
sep指定分隔符,可用正则表达式如'\s+'
header=None指定文件无行名
name指定列名
index_col指定某列作为索引
skip_row指定跳过某些行
na_values指定某些字符串表示缺失值
parse_dates指定某些列是否被解析为日期,布尔值或列表
写入文件导出数据

写入文件函数的主要参数:

参数详解
sep分隔符
na_rep指定缺失值转换的字符串,默认为空字符串
header=False不保存列名
index=False不保存行索引
cols指定输出的列,传入列表

pandas读取ison文件

orient参数的五种形式

orient是表明预期的json字符串格式。orient的设置有以下五个值:

  1. 'split' : dict like {index -> [index], columns -> [columns], data -> [values]}

这种就是有索引,有列字段,和数据矩阵构成的json格式。key名称只能是index,columns和data。

  1. 'records' : list like [{column -> value}, ... , {column -> value}]

这种就是成员为字典的列表。如我今天要处理的json数据示例所见。构成是列字段为键,值为键值,每一个字典成员就构成了dataframe的一行数据。

  1. 'index' : dict like {index -> {column -> value}}

以索引为key,以列字段构成的字典为键值。

  1. 'columns' : dict like {column -> {index -> value}}

这种处理的就是以列为键,对应一个值字典的对象。这个字典对象以索引为键,以值为键值构成的json字符串。

  1. 'values' : just the values array。

values这种我们就很常见了。就是一个嵌套的列表。里面的成员也是列表,2层的。

pandas读取sql语句

转载于:https://www.cnblogs.com/huansan0209/p/11379627.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值