Как предотвратить TypeError: только массивы размера 1 могут быть преобразованы в скаляры Python - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь визуализировать набор данных с помощью matplotlib.

Код:

import time as ti
import pandas as pd 
import numpy as np
from matplotlib import pyplot as plt 
import csv
from sklearn import preprocessing, svm
from sklearn.model_selection import train_test_split
from scipy.interpolate import * 


data = pd.read_csv("includes\\csv.csv")         
#x = array(data["day"])             
#y = np.array(data["balance"])  
x = float(np.array(data["day"]))
y = float(np.array(data["balance"]))

p1 = np.polyfit(x, y, 1)
print(p1)
plt.plot(x, y, "o")
plt.plot(x, polyval(p1, x), "-r")
plt.show()

Ошибка, которая возникает:

Traceback (most recent call last):
  File "mittel.py", line 19, in <module>
    x = float(np.array(data["day"]))
TypeError: only size-1 arrays can be converted to Python scalars

Мне интереснопочему это так, потому что файл CSV, который я использую, так прост:

balance,day

242537,28-5
246362,29-5
246659,30-5
246844,31-5

Я работал над этим часами.Любые ответы приветствуются.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Я решил это, отформатировав его в формате н / м / у.

0 голосов
/ 19 июня 2019

Столбец дня в вашем CSV-файле имеет значение '28 -5', '29-5' .... и np.array (data ['day']) приведёт к массиву, так что вы не можете привести массив к плавающему, получая TypeError.

изменить строку 14-15 на эту

x = [float(day_str.split('-')[0]) for day_str in np.array(data["day"])] y = np.array(data["balance"], dtype=float)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...