我無法從 csv 檔案中選擇某些列。有什么建議么?
這是我的代碼。
import numpy
import csv
def load_metrics(filename):
"""A function to analyse and extract csv files"""
data_list = []
final_data = []
with open(filename) as csvfile:
file = csv.reader(csvfile)
for row in file:
data_list.append(row)
for data in data_list:
data_a = data[0:1]
data_b = data[7:13]
data_a.append(data_b)
final_data.append(data_a)
data = numpy.array(final_data)
return data
uj5u.com熱心網友回復:
您的代碼有幾個問題。在這一行:
data_a.append(data_b)
您可能期望data[0:1]和data[7:13]被放在一個串列中,而不是實際發生的事情,即創建[data[0], [data[7], data[8], .., data[12]]. 你想要的是:
data_a.extend(data_b)
您一次執行此操作,將結果收集到串列串列中,然后將其轉換為 numpy 陣列。
這并非不可能,但過于復雜。您還可以:
import numpy
def load_metrics(filename):
with open(filename) as csvfile:
file = csv.reader(csvfile)
data = [[data[0], *data[7:13]] for data in file]
return numpy.array(data)
result = load_metrics('data.csv')
print(result)
或僅numpy單獨使用:
import numpy
data = numpy.genfromtxt('data.csv', delimiter=',')
result = numpy.delete(data, range(1, 7), 1)
print(result)
(所有這些都假設您的檔案沒有列標題)
正如用戶@hpaulj 正確指出的那樣,甚至更簡單(盡管可能有點難以理解):
import numpy
result = numpy.genfromtxt('data.csv', delimiter=',', usecols=[0, *range(7, 13)])
print(result)
uj5u.com熱心網友回復:
我建議使用熊貓:
import pandas as pd
df = pd.read_csv('yourfile.csv')
data = df.iloc[:, [0,1] list(range(7,13))]
date_numpy = data.to_numpy() #convert to numpy
您也可以按列名選擇;例子:
df.loc[:, ['name', 'age']]
uj5u.com熱心網友回復:
Firstl:讀取所有行會更短
data_list = list(file)
但是,如果您只想使用選定的列,那么您可以保留for-loop 并在讀取行時進行選擇
data_list.append( row[0:1] row[7:13] )
import csv
import numpy
def load_metrics(filename):
data = []
with open(filename) as csv_file:
csv_reader = csv.reader(csv_file)
for row in csv_reader:
data.append( row[0:1] row[7:13] )
return numpy.array(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479485.html
上一篇:繪制Z取決于X和Y向量的曲面
下一篇:列印多個隨機排列
