pandas绘制正态直方图
时间: 2023-08-31 08:05:24 浏览: 168
可以使用`pandas`和`matplotlib`库来绘制正态直方图。下面是一个简单的例子:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 生成一组正态分布的随机数
data = pd.Series(np.random.normal(size=1000))
# 绘制直方图
data.plot(kind='hist', bins=30, density=True, alpha=0.5)
# 绘制正态分布曲线
mu, sigma = data.mean(), data.std()
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()
```
其中,`kind='hist'`表示绘制直方图,`bins`表示直方图的柱子数量,`density=True`表示将纵轴转换为概率密度,`alpha=0.5`表示设置透明度为0.5。`stats.norm.pdf(x, mu, sigma)`表示生成正态分布曲线。
相关问题
使用python读取excel中的某几列数据并绘制正态分布直方图与核密度图,并在正态分布直方图、核密度图中添加图例与正态分布曲线,使用sns包
好的,以下是代码实现:
```python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
# 读取excel数据
df = pd.read_excel('data.xlsx', usecols=[1, 2, 3, 4])
# 绘制直方图与核密度图
sns.set_style('whitegrid')
sns.histplot(data=df, x='A', kde=True, label='A')
sns.histplot(data=df, x='B', kde=True, label='B')
sns.histplot(data=df, x='C', kde=True, label='C')
sns.histplot(data=df, x='D', kde=True, label='D')
# 添加图例
plt.legend()
# 绘制正态分布曲线
x = np.linspace(-10, 10, 100)
plt.plot(x, norm.pdf(x, 0, 1), label='Normal')
# 添加图例
plt.legend()
# 显示图像
plt.show()
```
其中,`usecols`参数指定需要读取的列,`kde=True`参数表示绘制核密度图,`sns.histplot()`函数绘制直方图和核密度图,`sns.set_style()`函数设置图像外观风格,`plt.plot()`函数绘制正态分布曲线,`plt.legend()`函数添加图例,`plt.show()`函数显示图像。
使用python读取excel中的某几列数据并绘制正态分布直方图与核密度图
首先,需要安装以下库:pandas、matplotlib、seaborn、numpy
然后,可以按照以下步骤进行操作:
1. 导入所需的库
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
```
2. 读取Excel文件中的数据
```python
df = pd.read_excel('data.xlsx', usecols=['列1', '列2', '列3'])
```
3. 绘制直方图
```python
plt.hist(df['列1'], bins=20, density=True, alpha=0.5, color='blue')
plt.hist(df['列2'], bins=20, density=True, alpha=0.5, color='green')
plt.hist(df['列3'], bins=20, density=True, alpha=0.5, color='red')
plt.xlabel('数据')
plt.ylabel('频率')
plt.title('正态分布直方图')
plt.show()
```
4. 绘制核密度图
```python
sns.kdeplot(df['列1'], shade=True, color='blue')
sns.kdeplot(df['列2'], shade=True, color='green')
sns.kdeplot(df['列3'], shade=True, color='red')
plt.xlabel('数据')
plt.ylabel('密度')
plt.title('核密度图')
plt.show()
```
完整代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
df = pd.read_excel('data.xlsx', usecols=['列1', '列2', '列3'])
plt.hist(df['列1'], bins=20, density=True, alpha=0.5, color='blue')
plt.hist(df['列2'], bins=20, density=True, alpha=0.5, color='green')
plt.hist(df['列3'], bins=20, density=True, alpha=0.5, color='red')
plt.xlabel('数据')
plt.ylabel('频率')
plt.title('正态分布直方图')
plt.show()
sns.kdeplot(df['列1'], shade=True, color='blue')
sns.kdeplot(df['列2'], shade=True, color='green')
sns.kdeplot(df['列3'], shade=True, color='red')
plt.xlabel('数据')
plt.ylabel('密度')
plt.title('核密度图')
plt.show()
```
阅读全文