TypeError: Tidak dapat mentransmisikan data array dari dtype('‹U1') ke dtype('float64') sesuai dengan aturan 'aman'

Saat mencoba memplot outlier menggunakan warna berbeda pada plot sebar, saya menemukan kesalahan ini:

TypeError: Tidak dapat mentransmisikan data array dari dtype('U1') ke dtype('float64') sesuai dengan aturan 'aman'

Kode saya:

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

Adakah yang tahu di mana masalahnya dan bagaimana cara mengatasinya? Terima kasih,


person Linh    schedule 06.10.2018    source sumber
comment
Alangkah baiknya jika memberikan baris kesalahannya... Atau sedikit lebih banyak info tumpukan...   -  person Jonathan Gagne    schedule 06.10.2018
comment
Saya menggunakan Spyder dan tidak disebutkan secara pasti baris mana yang mengalami kesalahan (walaupun ada dalam kasus lain).   -  person Linh    schedule 06.10.2018
comment
Lihat contoh minimal yang dapat direproduksi atau ssce.   -  person ImportanceOfBeingErnest    schedule 06.10.2018


Jawaban (1)


Masalahnya ada pada alur plot pencar. Harus:

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

Saya meletakkan argumen lebar garis dalam koma terbalik, yang tidak menghasilkan keluaran. Namun, pesan kesalahan tersebut sangat menyesatkan. Lain kali saya mungkin akan kurang memperhatikan pesan kesalahan saat debugging.

person Linh    schedule 08.10.2018