python数据分析简洁介绍,numpy、matplotlib、pandas

numpy

一个很强大的N维数组对象,ndarray,ndarray对象运算时,每一个维度对应元素已经进行了运算。eg:A+B(均为矩阵)

  1. ndarray由两部分组成:内容+描述这些数据的元数据(type、dim)。np.array()生成ndarray

  2. axis数据维度,rank表示axis的数量.

    a=np.array()
    a.dim
    a.shape #(m,n)
    a.size #m*n
    a.dtype #float16,float32,float64
    a.itemsize
    

    ndarray的创建:

    1. 从python的列表、元组

    2. 使用numpy的数值,arange,ones,zeros,full,eye,ones_like(a根据a的形状生成),np.linspace(),np.concatenate()

      a=np.ones((2,3,4),dtype=np.int32)
      .reshape(shape)不改变元素,只改变形状,是在原数据的基础上修改的!!!
      
    3. 从字节流(raw bytes)中创建ndarray.

    4. 从文件中读取特点格式,创建ndarray.

对元素类型做精细化定义,有助于合理使用存储空间并优化性能

a=np.array([2,2,3,2,3,2])
a[1:4:2]# start、end、step。编号0开始,从左递增;编号-1开始,从右递减。
b=np.array(24).reshape((2,3,4))
b[-1,-2,-3]# 不同维度用逗号隔开。
b[:,1:3,:]#选取一整个维度用冒号:

数值 与标量之间的运算作用于数组的每一个元素

元素基本的运算np.array,矩阵级别的运算要使用numpy.matrix
a=a/a.sum()
np.[abs,fabs,sqrt,square,log,log10,log2,ceil,floor,exp,sign,cos,rint(计算各个元素四舍五入的值),modf(整数与小数分布返回 )]
#二元运算,+-*、 np.maximum(x,y)、np.mod(x,y) >< >= <= == !=
numpy 写入csv文件
np.savetxt(frame,array,fmt,delimiter) # frame表示文件,字符串,或者生成器
a=np.arrange(100).reshape(5,20)
np.savetxt("a.csv",f,fmt='%d',delimiter=',') # fmt="%.1f"

#相对于的有
np.loadtxt(frame,dtype,delimiter,unpack)
# 因为CSV只能有效存储一维和二维数组,所以np.savetxt() np.loadtxt()只能有效存取一维和二维数组

任意维度的存取:a.tofile(frame, sep=’’, format=’%s’)、相对应的有:np.fromfile(frame, dtype=float, count=‐1, sep=’’),-1表示读入整个元素。

a=np.arrange(100).reshape(5,10,2)
a.tofile("b.bat",sep=",",format="%d")
推荐:np.save(fname,array)或者np.savez(fname,array),np.load(fname)

• fname : 文件名,以.npy为扩展名,压缩扩展名为.npz;此时就是二进制格式了

numpy的随机数函数库np.random.*
  • np.random.randn()正态分布

  • np.random.rand(d0,d1,…,dn) 根据d0‐dn创建n维随机数,浮点数,范围在[0,1)之间,均匀分布

  • np.random.randint(low[,high,shape])),

  • seed(s) 随机数种子,s是给定的种子值

  • shuffle(a) 根据数组a的第1轴进行随机排列,改变数组x

  • permutation(a) 根据数组a的第1轴产生一个的乱序数组,不改变数组x

  • choice(a[,size,replace,p])从一维数组a中以概率p抽取元素

  • uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size形状

  • normal(loc,scale,size) 产生具有正态分布的数组,loc均值,scale标准差,size形状

a=np.random.rand(3,4,5)

numpy的统计函数

NumPy直接提供的统计类函数,np.[std(),var(),arerage()加权平均,sum(),sum]

  • min(a) max(a) 计算数组a中元素的最小值、最大值
  • argmin(a) argmax(a) 计算数组a中元素最小值、最大值的降一维后的下标
  • median(a) 计算数组a中元素的中位数(中值)
  • ptp(a) 计算数组a中元素最大值与最小值的差

numpy的梯度计算

np.gradient(f) 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度,存在两侧值:(a‐b)/2,只有一侧值:(a-b)/1

matplotlib库

matplotlib是绘制各类图形的命令子库,相当于快捷方法

plot()当输入参数只是一维列表时,此内容会被当成y轴数据,此时x轴就是列表的索引

plt.savefig()保存图形,plt.show()显示图形。plt.axis([四个元素xmin,xmax……])

plot()的输入参数个列表时,则分别对应x轴和y轴。plt.plot(x,y)

**绘图区域,plt.subplot(nrows,ncols,polt_number)第3个参数是指当前在哪儿**子区域1,子区域2,……

subplot()后面绘制的所有图形都在这个子区域中可以去掉中间的逗号,eg(324)

plt.plot(x,y,format_string,**kwargs)

x可选,y必须,format_string控制曲线的格式字符串可选kwargs第二组或者更多的(x,y,format_string),当绘制多条曲线时,各条曲线的x不能省略,format_string由颜色字符、风格字符和标记字符(数据点来标记)组成eg:

  1. b、g、r、m、c,当颜色没有指明时,会自动选择一条不同的颜色。

  2. 风格字符:-实线--破折线-.点划线:虚线、空或者空格表示没有风格,

  3. 曲线中的每一个点采取什么样的方法来标记处理,.每一个样本点用点来标注o每一个样本点用用实心圈来标注v表示每一个样本点用倒三角标注(类似的有:^上三角>右三角<左三角)+十字标记*星号标记

a=np.arange(10)
plt.plot(a,a*1.5,"go-",a,a*2.5,"rx",a,a*3.5,"*",a,a*4.5,"b-*")

可以使用'markersize表示标记尺寸'

pyplot默认不支持中文显示,需要修改rcParams,这个修改是全局的,不建议使用!!!,推荐使用,在需要的中文的地方使用 fontproperties属性,配套可以使用fontsize、color

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'# 黑体
plt.xlabel("横轴:时间",fontproperties="SimHei")
plt.grid()
#rcParams中控制字体的参数 
'''
font.family字体名称
font.style字体风格,normal、italic斜体
font.size 字体大小,整数或者'large'、'x-small'
'''

plt,xlabel()、plt.ylabel'、plt.title()、plt.text()在图形的任何位置增加文本,plt。annotate()增加带箭头的注释,plt的文本显示支持LaTeX

plt.title(r"$\mu=100$")

绘制复杂的自定义网格plt.subplot2grid(),其思想是设定网格,选中网格,确定其中的行列区域数量,编号从0开始

plt.subplot2grid((3,3),(1,0),colspan=2)
# 元组(3,3)表示把一个区域分成3行3列,元组(1,0)表示当前位置,colspan表示列的延伸。

plt.plot() plot.boxplot(),plt.bar() plt.pie(),plt绘制散点图,用plot只不过线型设置为空。

pandas

pandas提供了容易使用的数据类型(Series、DataFrame)和操作从应用的角度建立数据与索引的关系,就是python中字典的拓展,这就是pandas与numpy的一个区别。

pd.Series([1,2,3,2],index=['a','b','c','d'])

series对象可以由python列表、标量值、python字典、ndarray、其他函数来创建,可以采用切片来操作。可以采用in,series对齐的。

dataframe可以由ndarray、值为列表的字典生成。

d=pd.DataFrame(np.arange(10).reshape(2,5))
a=pd.DataFrame({"one":[1,2,4,2],"two":[2,3,4,4]})

dataframe的增加或重排或删除,drop、reindex()重排或者增加

d=d.reindex(columns=["a","b","c","d"])# 或者index=[]

**pandas运算的原则:1.首先根据行列索索引,补齐后运算,**简记为==自动补齐、缺失项补NaN。2.运算.add() .sub() .mul() .div()好处可以增加额外的参数。或者+*/- ,此外还可以用比较运算eg:>< >= !=,结果为bool对象

pandas排序:1.对索引 .sort_index() 2.对数据排序.sort_values()

基本的统计分析方法:a.describe()

累计统计分析(使用于series和dataframe类型):.cumsum() .cumprod() .cummax() .cummin()用于计算前n个元素的和、乘、最大值、最小值

滚动计算(窗口计算).rolling(w).sum()依次计算相邻w个元素的和。
类似的.rolling(w).mean()、.rolling(w).[var()方差,std() ,min(),max()]

度量事件的相关性(正相关性、负相关性、相关)。协方差、pearson相关系数(就是线性相关系数),在pandas中使用cov()计算变量的协方差矩阵,.corr()计算相关系数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值