TypeError:无法根据规则“safe”将数组数据从dtype('<U1')强制转换为dtype('float64')

2024-09-27 00:17:25 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在散点图上使用不同颜色绘制异常值时,遇到了以下错误:

TypeError: Cannot cast array data from dtype('U1') to dtype('float64') according to the rule 'safe'

我的代码:

import statsmodels.api as sm
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

CRP = pd.read_csv('CarsProp.csv')

priceMean = CRP.price.mean()
priceStd = CRP.price.std()   

CRP['isOutlierPrice'] = np.nan
testColumn1 = abs(CRP.price - priceMean) > 2*priceStd

for i, value in enumerate(testColumn1):
    if value == True:
        CRP['isOutlierPrice'][i] = 1

mileageMean = CRP.mileage.mean()
mileageStd = CRP.mileage.mean()

CRP['isOutlierMileage'] = np.nan
testColumn2 = abs(CRP.mileage - mileageMean) > 2*priceStd

for i, value in enumerate(testColumn2):
    if value == True:
        CRP['isOutlierMileage'][i] = 1

outlierPmsJoint = ((CRP['isOutlierPrice'] == 1) | (CRP['isOutlierMileage'] == 1))

colorChoiceDict = {True: (1.0, 0.55, 0.0, 1.0), 
              False: (0.11, 0.65, 0.72, 0.1)}

colorCol = [colorChoiceDict[val] for val in outlierPmsJoint]

PriceFloat = [float(val) for val in CRP.price]
MileageFloat = [float(val) for val in CRP.mileage]

plt.figure()
plt.scatter(PriceFloat, MileageFloat, c = colorCol, linewidth='0')
plt.set_title('Price vs. Mileage with outliers')  

有人知道问题在哪里,怎么解决吗?谢谢你


Tags: inimporttrueforvalueasnpplt
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:25

问题出在散点图上。它应该是:

plt.scatter(PriceFloat, MileageFloat, c = colorCol, linewidth=0)

我把行宽度arg放在倒转的comas中,但没有产生输出。然而,错误信息非常误导人。下一次调试时我可能不会太注意错误消息。在

相关问题 更多 >

    热门问题