mycursor = mydb.cursor() mycursor.execute("SELECT 有功功率,瞬时风速 from mytable") data = mycursor.fetchall() # 将得到的数据转化为dataframe格式 import pandas as pd df = pd.DataFrame(data, columns=['有功功率', '风速']) import matplotlib.pyplot as plt plt.figure(dpi=500) plt.scatter(df['风速'], df['有功功率'], s=1) # 坐标轴中文能显示 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.xlabel('瞬时风速') plt.ylabel('有功功率') plt.title('风功率曲线') plt.show() 基于该数据,使用拉依达准则实现异常数据的识别,请写出代码
时间: 2023-09-04 07:07:23 浏览: 104
以下是基于这段代码使用拉依达准则实现异常数据识别的代码示例:
```
import pandas as pd
import matplotlib.pyplot as plt
# 从MySQL数据库中获取数据
mycursor = mydb.cursor()
mycursor.execute("SELECT 有功功率,瞬时风速 from mytable")
data = mycursor.fetchall()
# 将数据转换成DataFrame格式
df = pd.DataFrame(data, columns=['有功功率', '风速'])
# 计算均值和标准差
mean = df['有功功率'].mean()
std = df['有功功率'].std()
# 计算每个数据点到均值的距离
distances = abs(df['有功功率'] - mean)
# 计算比例
ratios = distances / std
# 设置阈值为3
threshold = 3
# 标记异常值
df['is_outlier'] = ratios > threshold
# 绘制散点图
plt.figure(dpi=500)
plt.scatter(df['风速'], df['有功功率'], s=1)
plt.scatter(df[df['is_outlier']]['风速'], df[df['is_outlier']]['有功功率'], color='red', s=10)
plt.xlabel('瞬时风速')
plt.ylabel('有功功率')
plt.title('风功率曲线')
plt.show()
```
在上述代码中,我们首先计算了数据的均值和标准差。接着,我们计算了每个数据点到均值的距离,并计算了距离与标准差的比例。然后,我们设置了阈值为3,并标记了所有比例大于阈值的数据点为异常值。最后,我们使用散点图将数据和异常值进行了可视化。
阅读全文