J'espère que ce n'est pas une question stupide, mais je rencontre des problèmes en essayant d'utiliser une boucle range() pour faire des calculs à partir d'un modèle d'apprentissage automatique enregistré, puis de totaliser toutes les valeurs calculées à la fin. Chaque fois que la boucle range(): s'exécute, cela retournera un tableau numpy de estimatedKwh. J'essaie de stocker les valeurs dans total_estKwh et si je commence à zéro pour total_estKwh comment ajouter total_estKwh ... Et puis le totaliser après la fin de la boucle range() ?

total_rows = len(data.index)
row_num = 0
total_estKwh = 0

for i in range(total_rows):
    params = np.array(data.iloc[row_num])

    if (params.ndim == 1):
        params = np.array([params])

    estimatedKwh = load_trained_model(weights_path).predict(params)
    print("Estimated kWH:", int(estimatedKwh))

    estimatedKwh = pd.DataFrame(estimatedKwh)
    estimatedKwh.append(total_estKwh)


    row_num += 1

#total_estKwh = pd.DataFrame(total_estKwh)

#print("FINISHED, total Estimated kWH:", total_estKwh)
print(total_estKwh)

Le code ne fonctionne pas ... Ceci est la trace de ce que j'essaie ... Des conseils vous aident merci

Using TensorFlow backend.
Estimated kWH: 1083
Traceback (most recent call last):
  File "C:\Users\bbartling\Desktop\EC\ecPredic2.py", line 70, in <module>
    estimatedKwh.append(total_estKwh)
  File "C:\Users\bbartling\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\core\frame.py", line 6211, in append
    sort=sort)
  File "C:\Users\bbartling\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\core\reshape\concat.py", line 225, in concat
    copy=copy, sort=sort)
  File "C:\Users\bbartling\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\core\reshape\concat.py", line 286, in __init__
    raise TypeError(msg)
TypeError: cannot concatenate object of type "<class 'int'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
>>> 
0
HenryHub 14 mars 2019 à 16:56

2 réponses

Meilleure réponse

Selon ce que vous essayez réellement d'atteindre, cela pourrait être une façon.

data = pd.DataFrame(np.arange(100))

all_estimates =[]

for i, row in data.iterrows():
    params = row.values

    if (params.ndim == 1):
        params = np.array([params])

    #estimatedKwh = load_trained_model(weights_path).predict(params)
    estimatedKwh = np.array([1.2]) # A dummy value for this example 
    all_estimates.append(estimatedKwh)

df = pd.DataFrame(all_estimates)
total_estKwh = df.sum() # Total for all_estimates
1
John Sloper 14 mars 2019 à 14:17

(puisque la discussion dans les commentaires ne semble aller nulle part ...)

Vous ne pouvez pas ajouter des entiers, mais vous pouvez ajouter des listes ; alors, oubliez les cadres de données pandas et travaillez avec des listes:

1) Initialisez total_estKwh comme

total_estKwh = []

2) Supprimer estimatedKwh = pd.DataFrame(estimatedKwh)

3) Remplacez estimatedKwh.append(total_estKwh) par

total_estKwh.append(estimatedKwh)

Si vous voulez vraiment vous retrouver avec une trame de données pandas, vous pouvez toujours convertir la liste après la boucle for ...

1
desertnaut 14 mars 2019 à 14:34