用python获取excel指定列数据并根据第一列的名字绘制第二列对应的正态分布曲线,并将双峰曲线颜色变红,加粗
时间: 2023-11-22 16:55:37 浏览: 77
可以绘制正态分布的曲线
4星 · 用户满意度95%
可以使用 pandas 和 matplotlib 库来实现这个任务。以下是一个简单的示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
# 指定要绘制的列
col1 = '名称'
col2 = '数值'
# 分组计算每个名称对应的均值和标准差
grouped = df.groupby(col1).agg([np.mean, np.std])[col2]
# 绘制正态分布曲线
fig, ax = plt.subplots()
for name, group in grouped.groupby(level=0):
x = np.linspace(group.index.min(), group.index.max(), 100)
y = np.exp(-(x - group['mean'].loc[name]) ** 2 / (2 * group['std'].loc[name] ** 2)) / \
(group['std'].loc[name] * np.sqrt(2 * np.pi))
ax.plot(x, y, label=name)
# 设置双峰曲线为红色,加粗
for line in ax.lines:
if len(line.get_xdata()) == 100 and max(line.get_ydata()) >= 0.1:
line.set_color('r')
line.set_linewidth(2)
# 添加图例、标题和坐标轴标签
ax.legend()
ax.set_title('正态分布曲线')
ax.set_xlabel(col1)
ax.set_ylabel(col2)
# 显示图形
plt.show()
```
其中,`data.xlsx` 为包含数据的 Excel 文件,`名称` 和 `数值` 分别为第一列和第二列的列名。在此代码中,我们首先使用 pandas 库读取 Excel 文件,并指定要绘制的列。然后,使用 `groupby` 函数按照名称分组,计算每个名称对应的均值和标准差。最后,使用 matplotlib 库绘制每个名称对应的正态分布曲线,并将双峰曲线颜色变红、加粗。
阅读全文