我想先閱讀我的 CSV 檔案。 https://github.com/hamzaal014/file/blob/main/file.csv
.csv 檔案包含兩列 X 和 Y 這是我的腳本:
import numpy as np
from pandas import DataFrame as df
import csv
origin_data = open("file.csv", "r")
dato = list(csv.reader(origin_data, delimiter=","))
print(dato)
rowcount = 0
#iterating through the whole file
for row in dato:
rowcount = 1
#printing the result
#_ print("Number of lines present:-", rowcount)
print(rowcount)
dati = df(dato, columns=['x', 'y'])
window = 6
roll_avg = dati.rolling(window).mean()
roll_avg_cumulative = dati['y'].cumsum()/np.arange(1, 25)
print(roll_avg_cumulative)
但我的腳本不作業???
錯誤 - - - - - - - - - - - - - - - - - - - - - - - - - ------------------
Traceback (most recent call last):
File "/home/haz/miniconda39/lib/python3.9/site-packages/pandas/core/ops/array_ops.py", line 163, in _na_arithmetic_op
result = func(left, right)
File "/home/haz/miniconda39/lib/python3.9/site-packages/pandas/core/computation/expressions.py", line 239, in evaluate
return _evaluate(op, op_str, a, b) # type: ignore[misc]
File "/home/haz/miniconda39/lib/python3.9/site-packages/pandas/core/computation/expressions.py", line 128, in _evaluate_numexpr
result = _evaluate_standard(op, op_str, a, b)
File "/home/haz/miniconda39/lib/python3.9/site-packages/pandas/core/computation/expressions.py", line 69, in _evaluate_standard
return op(a, b)
TypeError: unsupported operand type(s) for /: 'str' and 'int'
uj5u.com熱心網友回復:
從檔案中讀取時,您會回傳字串。這是您的問題的根源,因為字串永遠不會轉換為數字。您可以通過以下方式修復它:
dati = df(dato, columns=['x', 'y'], dtype_float)
如果對您有幫助,我還想指出一些可以改進您的代碼的事情:
- 您正在使用 pandas 作為資料容器,所以我建議使用 pandas 函式將 CSV 檔案轉換為 DataFrame 而不是手動執行(使用
pandas.read_csv) - 可以使用
len運算子輕松計算行數,而無需遍歷所有行 - 請堅持使用更廣泛使用的匯入別名 (
import pandas as pd) 而不是自己創建。這將有助于您的代碼對其他人更具可讀性
所以你的代碼可以變成:
import numpy as np
import pandas as pd
dati = pd.read_csv("file.csv", sep=",", dtype=float, names=["x", "y"])
rowcount = len(dati)
window = 6
roll_avg = dati.rolling(window).mean()
roll_avg_cumulative = dati["y"].cumsum() / np.arange(1, 25)
print(roll_avg_cumulative)
uj5u.com熱心網友回復:
您的代碼出了什么問題:
- 所有 val 都加載為
str.
簡單的方法
import numpy as np
import pandas as pd
import csv
dati = pd.read_csv('file.csv', header=None)
window = 6
roll_avg = dati.rolling(window).mean()
print(dati[1].cumsum())
roll_avg_cumulative = dati[1].cumsum()/np.arange(1, 25)
print(roll_avg_cumulative)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524031.html
標籤:Python熊猫麻木的
