TypeError: ไม่สามารถส่งข้อมูลอาร์เรย์จาก dtype ('‹U1') ถึง dtype ('float64') ตามกฎ 'ปลอดภัย'

เมื่อพยายามพล็อตค่าผิดปกติโดยใช้สีที่ต่างกันบน Scatterplot ฉันพบข้อผิดพลาดนี้:

TypeError: ไม่สามารถส่งข้อมูลอาร์เรย์จาก dtype ('U1') ถึง dtype ('float64') ตามกฎ 'ปลอดภัย'

รหัสของฉัน:

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')  

ไม่มีใครรู้ว่าปัญหาอยู่ที่ไหนและจะแก้ไขได้อย่างไร? ขอบคุณ,


person Linh    schedule 06.10.2018    source แหล่งที่มา
comment
คงจะดีถ้าระบุบรรทัดของข้อผิดพลาด ... หรือข้อมูลสแต็กเพิ่มเติมอีกเล็กน้อย ...   -  person Jonathan Gagne    schedule 06.10.2018
comment
ฉันใช้ Spyder และไม่ได้บอกว่าบรรทัดใดมีข้อผิดพลาด (แม้ว่าจะเกิดขึ้นในกรณีอื่นก็ตาม)   -  person Linh    schedule 06.10.2018
comment
ดูตัวอย่างที่ทำซ้ำได้น้อยที่สุด หรือ sscce.   -  person ImportanceOfBeingErnest    schedule 06.10.2018


คำตอบ (1)


ปัญหาอยู่ในเส้นการลงจุดกระจาย มันควรจะเป็น:

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

ฉันกำลังใส่ความกว้างของเส้นหาเรื่องในโคม่ากลับด้าน ซึ่งไม่ได้ให้ผลลัพธ์ อย่างไรก็ตาม ข้อความแสดงข้อผิดพลาดทำให้เข้าใจผิดมาก ครั้งต่อไปฉันอาจจะให้ความสำคัญกับข้อความแสดงข้อผิดพลาดน้อยลงเมื่อทำการดีบัก

person Linh    schedule 08.10.2018