Python 3.x--数据分析: numpy(一)

本文介绍了NumPy库的基础知识,包括其重要性、主要对象ndarray及其属性,并通过实例展示了如何使用NumPy生成和操作数据集,适用于Python数据分析的初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓自由,不是随心而欲,而是自我主宰

numpy介绍:

前言:

因为Python中array模块只支持一维数组,不支持多维数组,也没有各种运算函数,不适合数值运算,所以numpy的出现弥补了不足

NUMPY库(简称np)是Python数据分析中必不可少的第三方库,np是Python其他科学计算包的基础包,是数据分析的基础,np是Scipy,Pandas等数据处理或科学计算库最基本的函数功能库。
因此,充分理解和应用np的数据类型对Python数据分析帮助很大,因为需求,所以最近要好好的学习一下有关数据分析的基本知识,那么就从numpy开始~

numpy的主要对象是由同种元素构成的多维数组(ndarray),简称“数组”

ndarray类型的维度(dimension)叫做(axes),轴的个数叫做(rank)。其中,一维数组的秩为1,二维数组的秩为2。

数组的属性:

这里写图片描述

np重点功能:

  • 强大的多维数组对象ndarray
  • 广功能函数
  • 提供了线性代数、傅里叶变换、随机数生成的相关功能

基本概念与基本操作:

1、什么是数据维度?

维度是一组数据的组织形式,不同数据维度可能表示不同的含义。
根据数据关系的不同分为:一维数据、二维数据、高维数据
一维数据由对等关系的有序和无序数据构成,采用线性方式组织,对应于数学中的数组和集合等概念。可以用数组表示,
通俗讲:

1,2,3,4,5,6

这一行数据可以称为一维数据,但这样折叠一下

1,2,3
4,5,6

那么这就是二维数据了,也可称为矩阵

高维数据由键值对类型的数据构成,采用对象方式组织,属于整合度更好的数据组织方式

2、秩的含义

矩阵秩的概念:任何矩阵都可以经过有限次初等行变换,形成行阶梯型矩阵,其中非零行的行数是唯一确定的,该行数称为矩形的秩

求矩阵的秩需先将矩阵化为阶梯型矩阵
这里写图片描述

如下秩=3,即满秩矩阵
这里写图片描述

3、数据集
顾名思义是数据的集合,用来训练程序的数据集合,多指二维、多维数表。只要有数据都可以直接手工创建一个数据集。
其中,用逗号分割数值的数据集叫做CSV(Comma-Separated Values,逗号分隔值)数据集,csv是一种通用的文件格式,用来存储批量的数据,就像一张Excel表。
形如:

城市,环比,同比,定基
北京,101.5,120.7,121.4
上海,101.1,111.2,111.3
南京,133.0,133.2,133.4

3.1、生成数据集
可以借助np内置函数生成数据集:

np.savetxt(frame,array,fmt='%.18e',delimiter=None)

例如:
这里写图片描述
这里写图片描述

代码实现:

import numpy as np
a=np.arange(20).reshape(4,5)
np.savetxt('test.csv',a,fmt='%d',delimiter=',')

代码说明:
第二行:

np.arange(n).reshape(x,y)

数组n不变,返回维度为(x,y)的数组

第三行:

  • frame:名字,文件、字符串的名字等
  • array:存入文件的np数组,可以是压缩文件(.gz,.bz2)
  • fmt(format):写入文件的格式,默认的是%.18e(科学计数法保留18位),除此之外还有,%d, %2f
  • delemiter:分割字符串,默认是空格

其中CSV格式存储的文件一般采用.csv为扩展名,Windows记事本或者office Excel工具可以打开。
Python提供了CSV读写的标准库,可以通过import CSV使用

3.2、读取数据集

仍然使用np内置函数可以实现:

np.loadtxt(frame,dtype=np.float,delimiter=None,inpack=False)

如下:

  • frame:文件来源
  • dtype:数据类型
  • unpack:默认false,读入文件,写入一个数组;若True,读入属性()将分别存储

这里写图片描述

3.3、csv文件的局限

CSV文件的局限:只能对一维数据和二维数据进行有效的操作,高维数据无法将文本更直观的显示出来

除了savetxt()和loadtxt()可以存储读取数组外
对于ndarray数组,np中的tofile方法也可以存储和读取数组,但是知识将数组的元素列出而没有维度信息
例如:
存储:

import numpy as np
a=np.arange(20).reshape(4,5)
a.tofile('a.dat',sep=',',format='%d')

这里写图片描述

读取:

np.fromfile(frame,dtype=float,count=-1,sep='')
  • count:读文件的个数,默认-1,读取全部
  • sep:数据分割字符串,如果为空,写入文件为二进制

4、存/取高纬度数据

save/load函数

np.save(frame,array)或者np.savez(frame,array)
np.load(fname)

  • frame:文件名,以.npy为扩展名,压缩为.npz
  • array:数组变量
import numpy as np
a=np.arange(20).reshape(4,5)
np.save('b.npy',a)

这里写图片描述

5、np例子
正态分布实例:
公式
这里写图片描述

代码实现:

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt

data = pd.read_csv('Book1.csv') #载入数据文件

time = data["t"]                #文档数据’t'赋值给time
mean = time.mean()              #数据的均值
standard = time.std()           #数据的标准差σ sigma
def normal(x,m,s):              #正态分布的概率密度函数,其中x:x;m:μ;s:σ
    pdf = np.exp(-((x-m)**2)/(2*(s**2)))/(s*(np.sqrt(2*np.pi)))
    return pdf

x = np.arange(80,100,0.1)       #数据,以0.1为步长更平滑
y = normal(x,mean,standard)     #载入公式

plt.plot(x,y)
plt.title('normal distribution')
plt.xlabel('time')
plt.ylabel('probaility')
plt.hist(time,bins=10,rwidth=0.9,normed=True) #画出直方图,normed=True或1表示出现的概率

plt.show()

csv数据:
这里写图片描述

输出效果图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值