我一组样本数据,存在excel中,如何用python绘制该组数据的分布图和正态分布图
时间: 2024-03-10 21:51:08 浏览: 80
要用Python绘制该组数据的分布图和正态分布图,你可以使用Python中的pandas、matplotlib和scipy等库。具体步骤如下:
1. 导入库:使用import语句导入需要的库。
```
import pandas as pd
import matplotlib.pyplot as plt
import scipy.stats as stats
```
2. 读取数据:使用pandas库中的read_excel函数读取Excel文件中的数据。
```
df = pd.read_excel('data.xlsx')
```
3. 绘制分布图:使用matplotlib库中的hist函数绘制数据的分布图。
```
plt.hist(df['data'], bins=20)
plt.title('Data Distribution')
plt.xlabel('Data')
plt.ylabel('Frequency')
plt.show()
```
其中,bins参数指定数据的分组数量。
4. 绘制正态分布图:使用scipy库中的norm函数生成正态分布数据,并使用matplotlib库中的plot函数绘制正态分布图。
```
mu, std = stats.norm.fit(df['data'])
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = stats.norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Normal Distribution')
plt.xlabel('Data')
plt.ylabel('Probability density')
plt.show()
```
其中,fit函数计算数据的均值和标准差,pdf函数生成概率密度函数,plot函数绘制正态分布曲线。
完整代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
df = pd.read_excel('data.xlsx')
plt.hist(df['data'], bins=20)
plt.title('Data Distribution')
plt.xlabel('Data')
plt.ylabel('Frequency')
plt.show()
mu, std = stats.norm.fit(df['data'])
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = stats.norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Normal Distribution')
plt.xlabel('Data')
plt.ylabel('Probability density')
plt.show()
```
其中,data.xlsx是包含数据的Excel文件,其中数据列名为data。你需要将代码中的data.xlsx替换为你的数据文件名,并在代码中指定正确的数据列名。
阅读全文