#%% # 生成正态分布随机数 mu, sigma = mean, std # 均值和标准差 # 画直方图 count, bins, ignored = plt.hist(df, 30, density=True) # 画正态分布曲线 plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp(-(bins - mu)**2 / (2 * sigma**2)), linewidth=2, color='r') # 设置标题和坐标轴标签 plt.title('Normal distribution') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图像 plt.show()
时间: 2024-02-20 18:56:49 浏览: 116
根据平均值和标准差生成符合正态分布的随机数
这段代码有一些问题,需要进行修改。以下是修改后的代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 读取 Excel 文件
df = pd.read_excel('D:\\pythonfile\\MySchoolshumoclass\\2023sdata.xlsx')
# 计算均值和标准差
mean = df.mean()
std = df.std()
# 生成正态分布随机数
mu, sigma = mean, std # 均值和标准差
data = np.random.normal(mu, sigma, 1000)
# 画直方图
count, bins, ignored = plt.hist(data, 30, density=True)
# 画正态分布曲线
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp(-(bins - mu)**2 / (2 * sigma**2)),
linewidth=2, color='r')
# 设置标题和坐标轴标签
plt.title('Normal distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 显示图像
plt.show()
```
在上面的示例中,我们首先读取了 Excel 文件,得到一个 DataFrame 对象 `df`。然后使用 `mean()` 函数和 `std()` 函数计算了 `df` 中各列的均值和标准差,并将结果保存在变量 `mean` 和 `std` 中。接着使用 `numpy.random.normal` 函数生成了一个包含 1000 个随机数的数组 `data`,其均值和标准差分别为 `mean` 和 `std`,表示一个标准正态分布。然后使用 `matplotlib` 库的 `hist` 函数画出了 `data` 的直方图。接着使用 `numpy` 库的公式计算正态分布曲线上的点,并使用 `matplotlib` 库的 `plot` 函数画出了正态分布曲线。最后设置了图像的标题和坐标轴标签,并使用 `show` 函数显示图像。
阅读全文