pandas 拟合曲线
时间: 2023-10-20 10:36:49 浏览: 245
你可以使用 Python 中的各种库来拟合曲线,其中最常用的是 NumPy 和 SciPy。下面是一个简单的示例代码,演示如何使用多项式拟合曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建样本数据
x = np.linspace(0, 10, 100)
y = 2 * x + 1 + np.random.normal(0, 1, 100)
# 使用多项式拟合曲线
coefficients = np.polyfit(x, y, deg=1)
poly = np.poly1d(coefficients)
y_fit = poly(x)
# 绘制原始数据和拟合曲线
plt.scatter(x, y, label='Original Data')
plt.plot(x, y_fit, color='r', label='Fitted Curve')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
这段代码首先生成了一些随机的样本数据 `x` 和 `y`,然后使用 `np.polyfit()` 函数进行拟合,其中 `deg` 参数为多项式的次数(这里为 1),返回拟合的系数。之后,使用 `np.poly1d()` 函数创建一个多项式对象,并通过该对象计算拟合后的 `y` 值。最后,使用 Matplotlib 库绘制原始数据和拟合曲线。
你可以根据你的具体需求修改代码中的数据和拟合函数。希望对你有所帮助!
相关问题
Python根据‘新生数据.xls’,绘制: 男生身高分布直方图和拟合曲线; 女生身高分布直方图和拟合曲线;
好的,我可以为您提供Python代码来绘制男生和女生身高分布直方图和拟合曲线。以下是代码示例:
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import norm
# 读取数据
data = pd.read_excel('新生数据.xls')
# 筛选男生和女生数据
male_data = data[data['性别'] == '男']
female_data = data[data['性别'] == '女']
# 绘制男生身高分布直方图和拟合曲线
sns.distplot(male_data['身高'], fit=norm, kde=False, color='blue')
plt.title('Male Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Frequency')
plt.show()
# 绘制女生身高分布直方图和拟合曲线
sns.distplot(female_data['身高'], fit=norm, kde=False, color='pink')
plt.title('Female Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Frequency')
plt.show()
```
请注意,此代码需要使用`pandas`、`matplotlib`、`seaborn`和`scipy`库。如果您没有安装这些库,请先安装它们。
用Python根据‘新生数据.xls’,分别绘制: 男生身高分布直方图和拟合曲线; 女生身高分布直方图和拟合曲线;
好的,我可以为您完成这个任务。以下是Python代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.optimize import curve_fit
# 读取数据
data = pd.read_excel('新生数据.xls')
# 分别获取男生和女生的身高数据
male_height = data[data['性别'] == '男']['身高']
female_height = data[data['性别'] == '女']['身高']
# 绘制男生身高分布直方图和拟合曲线
plt.hist(male_height, bins=20, density=True, alpha=0.5, color='blue')
mu, std = norm.fit(male_height)
x = np.linspace(male_height.min(), male_height.max(), 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Male Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Probability Density')
plt.show()
# 绘制女生身高分布直方图和拟合曲线
plt.hist(female_height, bins=20, density=True, alpha=0.5, color='pink')
mu, std = norm.fit(female_height)
x = np.linspace(female_height.min(), female_height.max(), 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Female Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Probability Density')
plt.show()
```
这段代码会生成两个图表,分别是男生身高分布直方图和拟合曲线,以及女生身高分布直方图和拟合曲线。其中,直方图显示了身高数据的分布情况,拟合曲线则是使用正态分布函数对数据进行拟合得到的。
阅读全文