Python 读取csv时转换为字符串的所有值
我有一个CSV文件(),我必须用python分析它。 为了处理数据,我将其转换为列表列表:Python 读取csv时转换为字符串的所有值,python,python-3.x,csv,Python,Python 3.x,Csv,我有一个CSV文件(),我必须用python分析它。 为了处理数据,我将其转换为列表列表: import csv def read_dataset(file): rows = [] with open(file, 'r') as csvfile: csvreader = csv.reader(csvfile, delimiter=',') for row in csvreader: rows.append(row)
import csv
def read_dataset(file):
rows = []
with open(file, 'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
for row in csvreader:
rows.append(row)
return rows
CSV文件完全由浮动组成,我通过在文本编辑器中打开该文件进行了双重检查。
但是,每当我从read\u dataset
的输出调用一个值时,它总是float类型
e、 g。
我假设问题出在我的
read\u数据集中的某个地方。非常感谢任何帮助 CSV文件中的数字数据存储为字符串。这里没有“转换为字符串”操作,因为数据已经是字符串csv.reader()
无法知道哪些单元格是数字,因此它不会将任何内容转换为浮点。您需要自己完成此操作。您可以使用pandas方法,然后将标题的数据类型指定为float,然后转换数据帧
import pandas as pd
import numpy as np
def read_dataset(file):
dtype_data = {'col1': np.float64, 'col2': np.float64}
df = pd.read_csv(file, delimiter=",", dtype=dtype_data)
return df
从:
csv.引用非数字的
指示writer
对象引用所有非数字字段
指示读取器将所有不带引号的字段转换为float类型
由于您的示例数据都是不带引号的浮点:
导入csv
以open('downloads/stackoverflow_data.csv')作为csvfile:
csvreader=csv.reader(csvfile,quoting=csv.QUOTE非数字)
行=列表(csvreader)
打印(行[0][:10])
输出:
[693.366692.038、690.964、690.964、689.796、687.634、686.228、685.072、685.072、683.856]
我建议您使用比嵌套列表更集中的方法进行分析。熊猫可能是一个不错的选择。旁注:1)分隔符默认为,“
,因此不需要指定它。2) 您可以简化为返回列表(csvreader)
而不是使用行
。您甚至不需要指定数据类型。如果这些值看起来像浮点数,它们将自动转换。另外,分隔符
默认为,”
,因此您不需要指定它。实际上,csv.reader()
确实有办法知道哪些单元格是数字。有一个quoting
标志可以指示非引号字段是浮动的。因为OP的数据都是浮点数,所以可以用。@MarkTolonen我不熟悉这个参数。谢谢你指出!也许更准确的说法是“您在这里创建的reader实例是哑的,不知道哪些单元格是浮动的。”