我正在嘗試從 csv 檔案中插入資料。前兩列的大小相同。我之前在 txt 檔案中使用相同的資料取得了成功,這是我第一次嘗試使用 csv 檔案。任何幫助,將不勝感激。示例 csv 檔案
wave,transmittance
406.06,0.384
420.06,0.398
440.85,0.416
....,.....
import numpy as np
import csv
from scipy import interpolate
# column 0 wavelength
# column 1 transmittance
# .....
with open('CCD.csv','r') as csv_file:
next(csv_file)
data = list(csv.reader(csv_file))
x=[column[0] for column in data]
y=[column[1] for column in data]
I = interpolate.InterpolatedUnivariateSpline(x, y)
print(x)
Output:
UFuncTypeError
<ipython-input-9-fa767336938e> in <module>
12 y=[column[1] for column in data]
13
---> 14 I = interpolate.InterpolatedUnivariateSpline(x, y)
UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
編輯:
with open('CCD.csv','r') as csv_file:
reader = csv.reader(csv_file)
next(csv_file) # discard header
data = list(reader)
x1=[column[0] for column in data]
y1=[column[1] for column in data]
I2 = interpolate.InterpolatedUnivariateSpline(x1, y1)
z2 = I2(550)
print(z2)
UFuncTypeError Traceback (most recent call last)
<ipython-input-4-a8127aad6fce> in <module>
6 y1=[column[1] for column in data]
7
----> 8 I2 = interpolate.InterpolatedUnivariateSpline(x1, y1)
9 z2 = I2(550)
10 print(z2)
UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U11'), dtype('<U11')) -> dtype('<U11')
uj5u.com熱心網友回復:
你很接近。您需要在第一次打開檔案時創建 reader 物件,然后使用 reader 迭代您的行:
import csv
data = None
with open('CCD.csv', newline='') as csv_file:
reader = csv.reader(csv_file)
next(csv_file) # discard header
data = list(reader)
x1 = [float(row[0]) for row in data]
y1 = [float(row[1]) for row in data]
print(x1)
print(y1)
我得到:
[406.06, 420.06, 440.85]
[0.384, 0.398, 0.416]
不過,我可以看到你是如何得到的,只是來自逐行迭代文本檔案。很好的嘗試!:)
此外,您不需要指定 read-mode 'r',這是默認設定;但是對于 CSV 檔案,建議在大多數情況下newline='',根據 CSV 規范,您希望Python 保留所有換行符(NL、LF、CRLF),以便 CSV 閱讀器處理。
或者,您可以在閱讀 CSV 時構建x和y:
x, y = [], []
with open('CCD.csv', newline='') as csv_file:
reader = csv.reader(csv_file)
next(csv_file) # discard header
for row in reader:
x.append(float(row[0]))
y.append(float(row[1]))
print(x)
print(y)
上面列印的結果相同。
uj5u.com熱心網友回復:
這就是我用熊貓管理它的方式,但我仍然對沒有熊貓的替代方式感到好奇
import pandas as pd
df = pd.read_csv('CCD.csv')
x = df['KAF16200wave'].to_numpy()
y = df['KAF16200transmitence'].to_numpy()
I = interpolate.InterpolatedUnivariateSpline(x, y)
z = I(550)
print("QE:",z)
QE: 0.589681398010309
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/401939.html
上一篇:從JSON生成csv檔案
下一篇:如何將所有字典保存到CSV檔案?
