[数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据。
点击下载数据文件http://seanlahman.com/files/database/lahman-csv_2015-01-24.zip
这个一个美国棒球比赛的统计数据
解压文件夹,我们选取AwardsManagers.csv来练习
#-*- coding:utf-8 -*-
import csv
DIR = 'data/'
fname = 'AwardsManagers.csv'
fpath = DIR+fname ## 用 with open() as filename 的结构非常优美, 而且不需要写代码来关文件
## 省去了fileobj.close(), 省去写try-finally的麻烦来出来exception with open(fpath, 'rb') as csvfile:
## delimiter是csv文件每行中数据间隔开的符号,常用是comma逗号,
## quotechar之间包括特殊字符
mreader = csv.reader(csvfile, delimiter=',', quotechar='|') ## 读出每一行都是一个list
first_row = mreader.next()
print first_row
print type(first_row)
## 目前的行数
print mreader.line_num
for row in mreader:
print ', '.join(row) ## 另外一个读取数据的方法是用DictReader
names = ['playerID','awardID','yearID','lgID','tie','notes']
with open(fpath) as csvfile:
## fieldnames指明了csv文件的列名称
reader = csv.DictReader(csvfile, fieldnames=names,
delimiter=',', quotechar='|')
for row in reader:
## 每一行都是一个dict对象
print(row[names[0]], row[names[1], row[names[2])
从专业机构中获取的数据也常常是XLS文件,用python提取XLS文件中的函数是xlrd
在xlrd中最重要的函数是:
xlrd.open_workbook
workbook.sheet_by_name
workbook.sheet_by_index
sheet.cell(row_index, col_index)
cell.value
sheet.col_values(col_index, start_row_index, end_row_index)
sheet.row_values(row_index, start_col_index, end_col_index)
sheet.col_slice(col_index, start_row_index, end_row_index)
sheet.row_slice(row_index, start_col_index, end_col_index)
点击下载数据源文件http://www.abs.gov.au/AUSSTATS/subscriber.nsf/log?openagent&33010do001_2009.xls&3301.0&Data%20Cubes&861A1F351DF2D978CA2577CF000DF18E&0&2009&03.11.2010&Latest
文件是关于澳大利亚人口出生情况的统计数据
#-*- coding:utf-8 -*-
import xlrd DIR = 'C:/Users/Lucas/Downloads/'
fname = '33010do001_2009.xls' # 首先建立workbook
mworkbook = xlrd.open_workbook(DIR+fname) # 打印出所有sheetnames
sheet_names = mworkbook.sheet_names()
print('Sheet Names', sheet_names) # 选取第二个sheet
msheet = mworkbook.sheet_by_name(sheet_names[1]) # 或者通过index得到sheet
nsheet = mworkbook.sheet_by_index(1)
print ('Sheet name: %s' % nsheet.name) # Pull the first row by index
row = msheet.row(0) # Pull the first row by index
row = msheet.row(4)
# Print 1st row values and types
for cell in row:
print cell.value # Print all values, iterating through rows and columns
#
num_cols = msheet.ncols # Number of columns
num_rows = msheet.nrows # Number of rows
for row_idx in range(0, num_rows): # Iterate through rows
row_values = []
for col_idx in range(0, num_cols): # Iterate through columns
row_values.append([msheet.cell(row_idx, col_idx).value]) ## 输出每行数据
print row_values ## 用col_slice得到某一列的数据
col_cells = msheet.col_slice(2, 4, num_rows)
for cell in col_cells:
print("-"*6)
print cell.value ## 用col_valeus得到某一列的数据
col_values = msheet.col_values(2, 4, num_rows)
print col_values
[数据科学] 从csv, xls文件中提取数据的更多相关文章
- [数据科学] 从text, json文件中提取数据
文本文件是基本的文件类型,不管是csv, xls, json, 还是xml等等都可以按照文本文件的形式读取. #-*- coding: utf-8 -*- fpath = "data/tex ...
- 使用Python从PDF文件中提取数据
前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...
- 如何使用JMeter从文件中提取数据
在性能测试方面,重用响应数据至关重要.几乎(如果不是全部!)负载测试场景假设您: 从先前的响应中提取有趣的方面,并在下一个请求中重用它们(也称为相关) 确保实际响应符合预期(又称断言) 因此,如果您是 ...
- matlab从fig文件中提取数据
如果你的fig文件中图像是由多条曲线绘制而成,比如说plot命令生成的,通过以下方式输出横坐标,纵坐标的取值 open('figname.fig'); lh = findall(gca, 'type' ...
- 用python脚本 从xls文件中读取数据
导入 xlrd 第三方模块 import xlrd data = xlrd.open_workbook('test.xlsx') # 打开xls文件 table = data.sheets()[0] ...
- 利用Ajax实现数据的同步传输,从mysql中提取数据,通过echarts可视化
如何将mysql数据库中的方式通过echarts可视化呢,以下面这个简单的例子向大家进行演示: 步骤一:mysql的创表和插入数据,当然这些数据也可以是你通过爬虫抓取的. 步骤二: 创 ...
- 利用ROS工具从bag文件中提取图片
bag文件是ROS常用的数据存储格式,因此要从bag文件中提取数据就需要了解一点ROS的背景知识. 1. 什么是ROS及其优势 ROS全称Robot Operating System,是BSD-lic ...
- 将CSV文件中的数据导入到SQL Server 数据库中
导入数据时,需要注意 CSV 文件中的数据是否包含逗号以及双引号,存在时,导入会失败 选择数据库 -> 右键 -> 任务 -> 导入数据 ,然后根据弹出的导入导出向导(如下图)中的提 ...
- MySQL添加CSV文件中的数据
一.MySQL添加csv数据 此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA ...
随机推荐
- ABP框架 - 工作单元
文档目录 本节内容: 简介 在ABP中管理连接和事务 约定的工作单元 UnitOfWork 特性 IUnitOfWorkManager 工作单元详情 禁用工作单元 非事务性工作单元 工作单元方法调用另 ...
- [译]ZOOKEEPER RECIPES-Queues
队列 分布式队列是一种常见的数据结构.为了在ZooKepeer中实现分布式队列,第一步是要使用一个znode代表队列本身.分布式客户端通过create()方法将内容放入一个名叫"queue- ...
- TSQL 分组集(Grouping Sets)
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...
- json数据格式及json校验格式化工具简单实现
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, ...
- 填坑系列:通过ESXi来配置IPMI
近日西安的天气很不错,可是看到从其他地方迁移来的主机在新环境下无法远程调试怪郁闷的,这就需要填坑,要不就会给后来者挖更大的坑. 今天遇到的坑是在IPMI的网络设置里面启用了VLAN标签之后,在新环境下 ...
- CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- URI编码解码和base64
概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...
- 用Crontab打造简易工作流引擎
1. 引言 众所周知,Oozie(1, 2)是基于时间条件与数据生成来做工作流调度的,但是Oozie的数据触发条件只支持HDFS路径,故而面临着这样的问题: 无法判断Hive partition是否已 ...
- 怎样把win7系统下的屏幕设置成护眼的非常柔和的豆沙绿色?
经常面对电脑会导致眼睛过度疲劳,白色对眼睛的刺激是最大的,所以,最好不要用白色做电脑背景色 设置方法如下: 在桌面点右键选"个性化",接着点主窗口底部的"窗口颜色&quo ...
- css预处理器sass使用教程(多图预警)
css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...