脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python实现从文件中加载数据的方法详解

Python实现从文件中加载数据的方法详解

2022-12-12 10:46codingchen Python

日常工作中有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。本文将利用Python实现从文件中加载数据,感兴趣的可以了解一下

前几篇都是手动录入或随机函数产生的数据。实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。

比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的数据,扩大了我们的数据来源。下面,将展示几种方法。

我们将使用内置的 csv 模块加载CSV文件

CSV文件是一种特殊的文本文件,文件中的数据以逗号作为分隔符,很适合进行数据的解析。先用excle建立如下表格和数据,另存为csv格式文件,放到代码目录下。

Python实现从文件中加载数据的方法详解

包含在Python标准库中自带CSV 模块,我们只需要import进来就能使用。比如我们需要将上面的CSV文件都打印出来,代码 如下:

import csv  #import csv 用来导入csv模块

filename = 'E:\WorkSpace\python\coding\score.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:\WorkSpace\python\coding\score.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 Name
1 Grade
2 Class
3 Age
4 mathscore
5 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:\WorkSpace\python\coding\score.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()

已将那些打印相关代码删除。看运行结果:

Python实现从文件中加载数据的方法详解

接下来,我们读取文件 ,并根据文件中的时间来绘制图表

新建一个年份的数据(真的是胡编乱造的数据),第一列是年份,第二列每年毕业的人数,第三列是每年申请人数,如图所示:

Python实现从文件中加载数据的方法详解

要求:

1,按年份分别显示出每年两者的人数,并用不同的颜色表示;

2、两者间也用其他颜色进行填充。

完成代码如下:

import matplotlib.pyplot as plt
import csv  #import csv 用来导入csv模块
from datetime import datetime #引入时间相关模块

filename = 'E:\WorkSpace\python\coding\graduatesNumbers.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 加载数据的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/codingchen/p/16203699.html

延伸 · 阅读

精彩推荐
  • Pythonpython实现数据分析与建模

    python实现数据分析与建模

    这篇文章主要介绍了python实现数据分析与建模功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    uml5802021-08-07
  • PythonPython内置的HTTP协议服务器SimpleHTTPServer使用指南

    Python内置的HTTP协议服务器SimpleHTTPServer使用指南

    这篇文章主要介绍了Python内置的HTTP协议服务器SimpleHTTPServer使用指南,SimpleHTTPServer本身的功能十分简单,文中介绍了需要的朋友可以参考下 ...

    Easily30052020-08-18
  • PythonPython退火算法在高次方程的应用

    Python退火算法在高次方程的应用

    退火算法就是钢铁在淬炼过程中失温而成稳定态时的过程,热力学上温度(内能)越高原子态越不稳定。这篇文章主要介绍了Python退火算法在高次方程的应...

    puppet洛洛11712021-03-22
  • PythonPython编程实战之Oracle数据库操作示例

    Python编程实战之Oracle数据库操作示例

    这篇文章主要介绍了Python编程实战之Oracle数据库操作,结合具体实例形式分析了Python的Oracle数据库模块cx_Oracle包安装、Oracle连接及操作技巧,需要的朋友可以...

    kongxx21122020-11-19
  • PythonPython爬取股票交易数据并可视化展示

    Python爬取股票交易数据并可视化展示

    抛开炒股技术不说, 那么多股票数据是不是非常难找,找到之后是不是看着密密麻麻的数据是不是头都大了?今天带大家爬取雪球平台的股票数据并将其可视化...

    松鼠爱吃饼干11202022-03-11
  • Pythonpython学习实操案例(二)

    python学习实操案例(二)

    这篇文章主要介绍了python学习实操案例,主要实操内容有二进制转换、为自己手机充值、、计算能量的消耗等,需要的小伙伴可以参考一下...

    是数学系的小孩儿5372022-09-08
  • Pythonpython numpy格式化打印的实例

    python numpy格式化打印的实例

    今天小编就为大家分享一篇python numpy格式化打印的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yj_isee10242021-02-21
  • Pythonpython中利用Future对象异步返回结果示例代码

    python中利用Future对象异步返回结果示例代码

    future是一种对象,表示异步执行的操作。下面这篇文章主要给大家介绍了关于python中利用Future对象异步返回结果的相关资料,文中通过示例代码介绍的非常...

    caimouse7292020-12-06