Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 读取CSV文件中的行并附加列表将为每个值创建列表列表_Python_List_Csv - Fatal编程技术网

Python 读取CSV文件中的行并附加列表将为每个值创建列表列表

Python 读取CSV文件中的行并附加列表将为每个值创建列表列表,python,list,csv,Python,List,Csv,我正在复制数据营课程中的列表输出数据,以便在Visual Studio代码或Jupyter笔记本中重新创建练习。在DataCamp Python交互窗口中,我键入列表的名称,突出显示输出并将其粘贴到VSCode中的新文件中。我使用find和replace删除所有逗号和空格,现在有142个数值,并保存为life_exp.csv。看起来像这样: 43.828 76.423 72.301 42.731 75.32 81.235 79.829

我正在复制数据营课程中的列表输出数据,以便在Visual Studio代码或Jupyter笔记本中重新创建练习。在DataCamp Python交互窗口中,我键入列表的名称,突出显示输出并将其粘贴到VSCode中的新文件中。我使用find和replace删除所有逗号和空格,现在有142个数值,并保存为life_exp.csv。看起来像这样:

    43.828
    76.423
    72.301
    42.731
    75.32
    81.235
    79.829
    75.635
    64.062
    79.441
当我使用Pandas read_csv或csv.reader将文件读入VSCode,并将values.tolist()与Pandas或for循环一起使用以附加现有的空白列表时,这两种情况都为我提供了一个列表列表,当我尝试创建matplotlib直方图时,该列表无法正确显示数据

我使用记事本和.csv保存数据,两种保存数据的方法都会产生相同的问题

import matplotlib.pyplot as plt 
import csv
life_exp = []

with open ('C:\data\life_exp.csv', 'rt') as life_expcsv:
    exp_read = csv.reader(life_expcsv, delimiter = '\n')
    for row in exp_read:
      life_exp.append(row)

使用csv导入后打印life_exp时,您会得到:

[['43.828'],
 ['76.423'],
 ['72.301'],
 ['42.731'],
 ['75.32'],
 ['81.235'],
 ['79.829'],
 ['75.635'],
 ['64.062'],
 ['79.441'],
 ['56.728'],
….
当您使用pandas read_csv导入后打印life_exp时,您会得到相同的结果,但至少现在它不是字符串:

[[43.828],
 [76.423],
 [72.301],
 [42.731],
 [75.32],
 [81.235],
 [79.829],
 [75.635],
 [64.062],
 [79.441],
 [56.728],
…
当在列表的任何一个版本上调用plt.hist(life_exp)时,每个值都是1的bin

我只想读取csv文件中的每个值,并将每个值放入一个简单的Python列表中


我花了好几天的时间思考有人做了这件事,但我似乎找不到答案。我是Python新手,非常感谢您的帮助。

使用csv reader,它将使用您提供的分隔符将行解析为列表。在本例中,您提供了
\n
作为分隔符,但它仍将接受单个项并将其作为列表返回

当您追加每一行时,实际上是将该列表追加到另一个列表。最简单的解决方法是索引到行中以提取该值

打开('C:\data\life\u exp.csv','rt')作为life\u expcsv:
exp\u read=csv.reader(life\u expcsv,分隔符='\n')
对于exp_中的行,请阅读:
生活经验附加(第[0]行)
但是,如果您的数据不能保证按照您提供的方式进行格式化,则需要以稍微不同的方式进行处理:

打开('C:\data\life\u exp.csv','rt')作为life\u expcsv:
exp\u read=csv.reader(life\u expcsv,分隔符='\n')
对于exp_中的行,请阅读:
对于行中的数字:
生活经验附加(数字)
列表理解更清晰:

打开('C:\data\life\u exp.csv','rt')作为life\u expcsv:
exp\u read=csv.reader(life\u expcsv,分隔符='\n')
[life_exp.为exp中的行追加(数字)为exp中的数字读取]
试试:

而不是:

life_exp = life_exp_df.values.tolist()

原始副本粘贴列表的格式是什么?也许有一种简单的方法可以重新格式化数据,使其更易于作为csv使用。非常感谢Adrian,做到了!现在它是一个值列表。在我成为蟒蛇学者的路上。祝我好运!所以,M-M,我想我已经试过了,但我回头看了看我以前的工作,我一直在做的是使用iloc从原始数据的df导入中首先创建一个经过消毒的df。所以它是
raw_df=pd.read…
然后创建一个
clean_df=raw.df.iloc[:,0]
。然后
clean\u df values.tolist()
这会给我同样的错误,但您的解决方案也可以。非常感谢您的专业知识。
import pandas as pd 
life_exp_df = pd.read_csv('c:\\data\\life_exp.csv', header = None)

# Select the values of your first column as a list
life_exp = life_exp_df.iloc[:, 0].tolist()
life_exp = life_exp_df.values.tolist()