Python 读取csv时转换为字符串的所有值

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)

我有一个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)
    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实例是哑的,不知道哪些单元格是浮动的。”