python数学实验与建模脚本之家_Python数学实验与建模(2)

本文介绍了Python中用于数据处理与可视化的工具,包括NumPy的数值计算,Pandas的数据操作,Matplotlib的可视化以及scipy.stats模块的随机变量和分布。通过示例展示了如何使用这些库进行数据分析和可视化。
摘要由CSDN通过智能技术生成

第2章 数据处理与可视化数值计算工具NumPy

文件操作

数据处理工具Pandas

Matplotlib可视化

scipy.stats模块简介

1.数值计算工具Numpy

2.文件操作

3.数据处理工具Pandas

4.Matplotlib可视化

Numpy、Pandas、Matplotlib相关资料查询也可以查阅《Python最优化算法实战》相关章节。

5.scipy.stats模块简介随机变量及分布

概率密度函数和分布律可视化

详细参考资料:

1)随机变量及分布

连续型随机变量

from scipy import stats

# 查看scipy.stats中的所有连续型随机变量:

stat_rv_continuous = [k for k, v in stats.__dict__.items() if isinstance(v, stats.rv_continuous)]

print(stat_rv_continuous)

可以看到scipy.stats中的所有连续型随机变量:

['ksone', 'kstwobign', 'norm', 'alpha', 'anglit', 'arcsine', 'beta', 'betaprime', 'bradford', 'burr', 'burr12', 'fisk', 'cauchy', 'chi', 'chi2', 'cosine', 'dgamma', 'dweibull', 'expon', 'exponnorm', 'exponweib', 'exponpow', 'fatiguelife', 'foldcauchy', 'f', 'foldnorm', 'weibull_min', 'weibull_max', 'frechet_r', 'frechet_l', 'genlogistic', 'genpareto', 'genexpon', 'genextreme', 'gamma', 'erlang', 'gengamma', 'genhalflogistic', 'gompertz', 'gumbel_r', 'gumbel_l', 'halfcauchy', 'halflogistic', 'halfnorm', 'hypsecant', 'gausshyper', 'invgamma', 'invgauss', 'norminvgauss', 'invweibull', 'johnsonsb', 'johnsonsu', 'laplace', 'levy', 'levy_l', 'levy_stable', 'logistic', 'loggamma', 'loglaplace', 'lognorm', 'gilbrat', 'maxwell', 'mielke', 'kappa4', 'kappa3', 'moyal', 'nakagami', 'ncx2', 'ncf', 't', 'nct', 'pareto', 'lomax', 'pearson3', 'powerlaw', 'powerlognorm', 'powernorm', 'rdist', 'rayleigh', 'reciprocal', 'rice', 'recipinvgauss', 'semicircular', 'skewnorm', 'trapz', 'triang', 'truncexpon', 'truncnorm', 'tukeylambda', 'uniform', 'vonmises', 'vonmises_line', 'wald', 'wrapcauchy', 'gennorm', 'halfgennorm', 'crystalball', 'argus']

离散型随机变量

from scipy import stats

# 查看scipy.stats中的所有离散型随机变量:

stat_rv_discrete = [k for k, v in stats.__dict__.items() if isinstance(v, stats.rv_discrete)]

print(stat_rv_discrete)

可以看到scipy.stats中的所有离散型随机变量:

['binom', 'bernoulli', 'nbinom', 'geom', 'hypergeom', 'logser', 'poisson', 'planck', 'boltzmann', 'randint', 'zipf', 'dlaplace', 'skellam', 'yulesimon']

2)概率密度函数和分布律可视化

简单示例:

分布:

gamma.pdf(x, a, loc=0, scale=1),这里

from matplotlib.pyplot import plot, legend, xlabel, ylabel, savefig, show, rc

from scipy.stats import gamma

from numpy import linspace

x = linspace(0, 15, 100)

rc('font', size=15)

# rc('text', usetex=True)

plot(x, gamma.pdf(x, 4, 0, 2), 'r*-', label="$\\alpha=4,\\beta=2$")

plot(x, gamma.pdf(x, 4, 0, 1), 'bp-', label="$\\alpha=4,\\beta=1$")

plot(x, gamma.pdf(x, 4, 0, 0.5), '.k-', label="$\\alpha=4,\\beta=0.5$")

plot(x, gamma.pdf(x, 2, 0, 0.5), '>g-', label="$\\alpha=2,\\beta=0.5$")

legend()

xlabel('$x$')

ylabel('$f(x)$')

savefig("figure2_46.png", dpi=500)

show()

正态分布:

import matplotlib.pyplot as plt

import numpy as np

from scipy.stats import norm

mu0 = [-1, 0]

s0 = [0.5, 1]

x = np.linspace(-7, 7, 100)

plt.rc('font', size=15)

# plt.rc('text', usetex=True);

plt.rc('axes', unicode_minus=False)

f, ax = plt.subplots(len(mu0), len(s0), sharex=True, sharey=True)

for i in range(2):

for j in range(2):

mu = mu0[i]

s = s0[j]

y = norm(mu, s).pdf(x)

ax[i, j].plot(x, y)

ax[i, j].plot(1, 0, label="$\\mu$ ={:3.2f}\n$\\sigma$ ={:3.2f}".format(mu, s))

ax[i, j].legend(fontsize=12)

ax[1, 1].set_xlabel('$x$')

ax[0, 0].set_ylabel('pdf($x$)')

plt.savefig('figure2_47.png');

plt.show()

随机变量X~b(n,p)(二项分布):

from scipy.stats import binom

import matplotlib.pyplot as plt

import numpy as np

n, p = 5, 0.4

x = np.arange(6)

y = binom.pmf(x, n, p)

plt.subplot(121)

plt.plot(x, y, 'ro')

plt.vlines(x, 0, y, 'k', lw=3, alpha=0.5) # vlines(x, ymin, ymax)画竖线图

# lw设置线宽度,alpha设置图的透明度

plt.subplot(122)

plt.stem(x, y, use_line_collection=True)

plt.savefig("figure2_48.png", dpi=500)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值