2016-05-11 2 views
1

Я пытаюсь построить график рассеяния для данного входа с помощью Pandas. Я получаю следующую ошибку.Не удалось преобразовать строку в float - Pandas Read Column

Вход:

tweetcricscore 34 #afgvssco 51 
tweetcricscore 23 #afgvszim 46 
tweetcricscore 24 #banvsire 12 
tweetcricscore 456 #banvsned 46 
tweetcricscore 653 #canvsnk 1 
tweetcricscore 789 #cricket 178 
tweetcricscore 625 #engvswi 46 
tweetcricscore 86 #hkvssco 23 
tweetcricscore 3 #indvsban 1 
tweetcricscore 87 #sausvsvic 8 
tweetcricscore 98 #wt20  56 

Код:

import numpy as np 
import matplotlib.pyplot as plt 
from pylab import* 
import math 
from matplotlib.ticker import LogLocator 
import pandas as pd 

df = pd.read_csv('input.csv', header = None) 

df.columns = ['col1','col2','col3','col4'] 

plt.scatter(x='col2', y='col4', s=120, c='b', label='Highly Active') 

plt.legend(loc='upper right') 
plt.xlabel('Freq (x)') 
plt.ylabel('Freq(y)') 
#plt.gca().set_xscale("log") 
#plt.gca().set_yscale("log") 
plt.show() 

От 4 столбцов Я пытаюсь построить седловины [1] и точка цв [3] в качестве данных пары в графике рассеяния.

Ошибка

Traceback (most recent call last): 
    File "00_scatter_plot.py", line 14, in <module> 
    plt.scatter(x='col2', y='col3', s=120, c='b', label='Highly Active') 
    File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3087, in scatter 
    linewidths=linewidths, verts=verts, **kwargs) 
    File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6337, in scatter 
    self.add_collection(collection) 
    File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1481, in add_collection 
    self.update_datalim(collection.get_datalim(self.transData)) 
    File "/usr/lib/pymodules/python2.7/matplotlib/collections.py", line 185, in get_datalim 
    offsets = np.asanyarray(offsets, np.float_) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 514, in asanyarray 
    return array(a, dtype, copy=False, order=order, subok=True) 
ValueError: could not convert string to float: col2 

ответ

1

Это ваше сообщение об ошибке:

File "00_scatter_plot.py", line 14, in <module> 
    plt.scatter(x='col2', y='col3', s=120, c='b', label='Highly Active') 
ValueError: could not convert string to float: col2 

Как вы можете видеть, что вы пытаетесь преобразовать строку "col2" плавать.

Принимая взглянуть на ваш код, кажется, что вы хотите что-то вроде этого:

plt.scatter(x=df['col2'], y=df['col4'], s=120, c='b', label='Highly Active') 

вместо:

plt.scatter(x='col2', y='col4', s=120, c='b', label='Highly Active') 
+1

Отлично !! замечательный исправление. –

+0

Добро пожаловать! ;-) –

1

пытаются изменить:

plt.scatter(x='col2', y='col4', s=120, c='b', label='Highly Active') 

в :

df.plot.scatter(x='col2', y='col4', s=120, c='b', label='Highly Active') 

он работал для меня:

enter image description here

+0

Отлично! Спасибо. Оба решения работают для меня. –

+1

@SitzBlogz, всегда рад помочь. – MaxU

+0

Как я могу выбрать только один ответ, я бы хотел выбрать @Dot_py, поскольку он ответил первым, а также у него меньше точек стека :) Еще раз спасибо за ответ. –

Смежные вопросы