Python 读取CSV文件中的行并附加列表将为每个值创建列表列表
我正在复制数据营课程中的列表输出数据,以便在Visual Studio代码或Jupyter笔记本中重新创建练习。在DataCamp Python交互窗口中,我键入列表的名称,突出显示输出并将其粘贴到VSCode中的新文件中。我使用find和replace删除所有逗号和空格,现在有142个数值,并保存为life_exp.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
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()