python教程分享Python实现从文件中加载数据的方法详解 | 您所在的位置:网站首页 › python打开数据集 › python教程分享Python实现从文件中加载数据的方法详解 |
前几篇都是手动录入或随机函数产生的数据。实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数据来源。下面,将展示几种方法。 我们将使用内置的 csv 模块加载csv文件 csv文件是一种特殊的文python教程分享Python实现从文件中加载数据的方法详解件,文件中的数据以逗号作为分隔符,很适合进行数据的解析。先用excle建立如下表格和数据,另存为csv格式文件,放到代码目录下。 ![]() 包含在python标准库中自带csv 模块,我们只需要import进来就能使用。比如我们需要将上面的csv文件都打印出来,代码 如下: import csv #import csv 用来导入csv模块 filename = 'e:workspacepythoncodingscore.csv' #文件保存的绝对路径 with open(filename) as file_csv: #是不是忘记了如何打开文件?打开文件,并将结果文件对象存储在file_csv中 reader = csv.reader(file_csv) #直接调读取 用csv.read()读取文件内容 for row in reader: # 用for循环打印每一行 print(row)运行结果如下: ['name', 'grade', 'class', 'age', 'mathscore', 'englishscore']['lucy', '7', '2', '14', '95', '86']['bush', '8', '1', '15', '80', '75']['lily', '7', '3', '14', '93', '95']['jack', '8', '2', '14', '87', '84']['mary', '9', '1', '15', '85', '86']['philip', '7', '3', '14', '90', '92']['liming', '9', '2', '16', '99', '87'] 打印文件头及其位置 读入文件,是为了获取其中的数据,需要将相关信息进行分离,先看看如何读出头即文件的第一行, next()返回文件中的下一行。 import csv #import csv 用来导入csv模块 filename = 'e:workspacepythoncodingscore.csv' #文件保存的绝对路径 with open(filename) as file_csv: #是不是忘记了如何打开文件?打开文件,并将结果文件对象存储在file_csv中 reader = csv.reader(file_csv) #直接调读取 用csv.read()读取文件内容 header_row = next(reader) #模块csv包含函数 next() ,调用它并将阅读器对象传递给它时,它将返回文件中的下一行。 #调用了next()一次,因此得到的是文件的第一行,其中包含文件头 #for row in reader: # 用for循环打印每一行 # print(row) for index, column_header in enumerate(header_row): #对列表调用了enumerate()来获取每个元素的索引及其值 print(index, column_header)运行后的结果如下所示: 0 name1 grade2 class3 age4 mathscore5 englishscore 提取其中索引,即name的索引为0,grade的索引为1,知道了索引便可以读取其中的任何数据,比如我们要打印出mathscore,索引为4,于是代码如下: scores =[] 定义一个空的list for row in reader: scores.append(int(row[4])) #读取的文件,默认为字符串,用int()转换为数字。 print(scores)运行结果: [95, 80, 93, 87, 85, 90, 99] 接下来,制作图表展示一下,先把mathscore和englishscore分数做个柱状对比。代码如下: import matplotlib.pyplot as plt import csv #import csv 用来导入csv模块 filename = 'e:workspacepythoncodingscore.csv' #文件保存的绝对路径 with open(filename) as file_csv: #是不是忘记了如何打开文件?打开文件,并将结果文件对象存储在file_csv中 reader = csv.reader(file_csv) #直接调读取 用csv.read()读取文件内容 header_row = next(reader) #模块csv包含函数 next() ,调用它并将阅读器对象传递给它时,它将返回文件中的下一行。 #调用了 next() 一次,因此得到的是文件的第一行,其中包含文件头 mathscores =[] #定义两个列表 englishscores=[] for row in reader: mathscores.append(int(row[4])) #读取索引为4的数据,默认为字符串,用int()转换为数字。 englishscores.append(int(row[5])) #读取索引为5的数据,用int()转换为数字。 plt.bar([1,3,5,7,9,11,13],mathscores,label='math',color='#ff2204') plt.bar([2,4,6,8,10,12,14],englishscores, label='englis', color='g') plt.legend() plt.title('scores') plt.show()已将那些打印相关代码删除。看运行结果: ![]() 接下来,我们读取文件 ,并根据文件中的时间来绘制图表 新建一个年份的数据(真的是胡编乱造的数据),第一列是年份,第二列每年毕业的人数,第三列是每年申请人数,如图所示: ![]() 要求: 1,按年份分别显示出每年两者的人数,并用不同的颜色表示; 2、两者间也用其他颜色进行填充。 完成代码如下: import matplotlib.pyplot as plt import csv #import csv 用来导入csv模块 from datetime import datetime #引入时间相关模块 filename = 'e:workspacepythoncodinggraduatesnumbers.csv' #文件保存的绝对路径 with open(filename) as file_csv: #是不是忘记了如何打开文件?打开文件,并将结果文件对象存储在file_csv中 reader = csv.reader(file_csv) #直接调读取 用csv.read()读取文件内容 header_row = next(reader) dates=[] numbers=[] application_numbers=[] for row in reader: current_date = datetime.strptime(row[0], "%y/%m/%d") #年份,strptime()日期格式转化为字符串格式的函数 dates.append(current_date) numbers.append(int(row[1])) #读取索引为1的数据,默认为字符串,用int()转换为数字,即numbers of graduates 。 application_numbers.append(int(row[2])) #读取索引为2的数据,即number of applicants plt.plot(dates,numbers,label='numbers of graduate', c='red') #显示第一条线 plt.plot(dates,application_numbers,label='number of applicant', c='green') #显示第二条线application_numbers折线 plt.fill_between(dates,numbers, application_numbers, facecolor='blue', alpha=0.5) #在两线之间填充颜色 alpha透明度 plt.title("the numbers of graduate",fontsize=24) plt.xlabel('years', fontsize=16) plt.ylabel("the numbers", fontsize=16) plt.legend() plt.show()实际运行结果如下: ![]() 以上就是python实现从文件中加载数据的方法详解的详细内容,更多关于python 加载数据的资料请关注其它相关文章! 需要了解更多python教程分享Python实现从文件中加载数据的方法详解,都可以关注python教程分享栏目—猴子技术宅(www.ssfiction.com) 本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。 如若转载,请注明出处:https://www.ssfiction.com/pythons/1085357.html |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |