2.9:数据交换-csv、Excel、json、爬虫、Tushare获取数据
〇、任务
1、 使用Python基础文件读写函数完成CSV文件的处理;
2、 使用标准CSV库完成CSV文件的处理;
3、 使用Excel库完成Excel文件的处理;
4、 Python数据结构和Json格式的相互转换;
5、 使用第三方封装库直接获取格式化数据;
6、 使用Requests库获取Json格式数据和Html格式数据
一、CSV和Excel数据交换
1、读取CSV文件
注意:csvdemo.csv文件中内容如下:
id,name,age
1,Diego,12
2,Eugene,30
3,Sunny,24
结果输出:[ ['1', 'Diego', '12'], ['2', 'Eugene', '30'], ['3', 'Sunny', '24']]。通过调用strip方法,为每行去掉尾部的回车换行。通过split方法,按逗号切割成一个列表,然后存放在一个嵌套列表中。访问的时候,可以使用ls[1:]获取不包括表头的数据。
2、生成CSV文件
3、使用CSV库读取CSV文件
结果输出:nameDiegoEugeneSunny。通过csv的包装器reader,把文件对象包装为一个reader对象,这个对象为可迭代对象,因此可以直接用for in语句来获取其中的各行数据,并按索引获取每行中的对应元素。最后通过end=””,把print语句默认的回车换行换掉,从而让各行输出链接在一行中。
4、使用CSV库写入CSV文件
结果输出:输出一个data.csv文件,内容为四列数据。当然也可以用writer.writerows(data) ,一次写入多行。我们对比上面的例子可以看出,使用python的write时,要求输入str类型而不能直接输入int,而csv库则方便多了,也不需要处理逗号和每行的回车换行符。
5、从CSV文件读取数据并转换为字典类型
import csv
data=[]
结果输出:[{'id': '1', 'name': 'Diego', 'age': '12'}, {'id': '2', 'name': 'Eugene', 'age': '30'}, {'id': '3', 'name': 'Sunny', 'age': '24'}]。csv库中还有一个DictReader,这个包装器可以直接给用户提供fieldname,获取csv的表头;每行数据通过dict()方法强制转换之后,可以直接输出字典类型的数据(默认row是OrderedDict)。用户就不需要手工拼接成字典类型的对象了,提高了处理速度。
6、从CSV中提取特定行数据
import csv
data=[]
结果输出:12。通过if语句,来找到数据中符合姓名是“Diego”的记录,然后获取其年龄信息。
7、读取Excel文件
结果输出:a,b,c1.0,2.0,3.04.0,5.0,6.0
导入读取Excel库:import xlrd; 打开文件:data = xlrd.open_workbook('excel.xls’)
获取工作表有3种方法:分别是:如table = data.sheets()[0] ,通过索引顺序获取;如table = data.sheet_by_index(0) ,通过索引顺序获取;如table = data.sheet_by_name(u'Sheet1’) ,通过名称获取。获取行列数据使用 table.row_values(i)或table.col_values(i);获取行数和列数,使用table.nrows和table.ncols;获取单元格:使用able.cell(2,3).value。
8、写入Excel文件
结果输出:为一个info.xls的文件。
顺序是:加载模块:import xlwt,创建workbook:workbook = xlwt.Workbook(encoding = “utf-8”),创建表:worksheet = workbook.add_sheet('My Worksheet’);在单元格写入数据:worksheet.write(0, 0,’53.6’);保存数据:workbook.save('Excel_Workbook.xls’)。一般处理数据时不建议直接操作excel,可以通过pandas的excel读取写入函数进行处理。
二、Json数据交换
1、将Python数据结构转换为Json串
import json
结果输出:'{"name": "David", "age": 5}'。注意,输出是一个字符串。在Python中,可以通过单引号和双引号交叉的方式表达字符串中的字符串。这里,最外层是单引号,内层是双引号。最后的输出结果是一个Json格式的字符串。方法dumps()的作用就是把一个对象(字典对象或列表对象、元组对象等)转换为Json格式的字符串。如s=json.dumps(list("hello"))的输出结果是:'["h", "e", "l", "l", "o"]'。可以直观的理解为dumps方法把对象加上引号,和eval()相反。s=json.dumps(56+36)的结果是字符串“92”。
2、将Json串转换为Python数据结构
结果输出:{'employees': [{'firstName': 'Bill', 'lastName': 'Gates'}, {'firstName': 'George', 'lastName': 'Bush'}, {'firstName': 'Thomas', 'lastName': 'Carter'}]}。这个输出是一个标准的Python字典结构,最外层是大括号,不是引号。字典的第一个key是“Employees”,它的值是一个列表list,里面有3个嵌套字典。每个字典里有两个keys:firstName和lastName,分别有对应的值。
3、读取Json格式文件
结果输出:George。json库的load方法直接将一个json格式的文件直接转换为python字典对象。然后可以按照字典的方式进行访问。如通过data["employees"]返回对应的value值,是一个列表,然后通过索引访问列表的第二个元素,还是一个字典。获取该字典元素的“firstName”键值对应的value值。
4、写入Json格式文件
结果输出:当前目录下生成一个json文件,内容为:{"name": "David", "age": 5}。dump方法通过两个参数完成数据的写入,第一个是要写入的字典格式(或其他格式的对象),第二个参数为要写入的文件对象(已经打开)。
三、Web数据交换
1、使用Tushare获取数据
结果输出:当前目录下输出一个tsout.csv文件,里面包含了得到的所有数据,同时屏幕打印出前5行数据。tushare 是一个提供免费的财经数据三方库。通过良好的封装,它提供了方便快捷的接入方式。可以通过导入之后,通过dir函数查看这个库所支持的查询功能。通过type函数,可以查看data的类型是:<class 'pandas.core.frame.DataFrame'>,是一个pandas的DataFrame类型。这个类型对象提供了很多中保持数据的方法,如to_csv,to_excel等等,用户可以根据需要自由选择。
2、去百词斩查单词
结果输出:b’c. \xe7\x8b\x97’b’c. \xe7\x8c\xab’
Requests库是一个优秀的第三方网络爬虫库。Requests库的json()方法可以直接生成一个字典,而text方法返回的是一个字符串。通过json方法返回的字典,可以直接访问其对应键值获取对应的value值。
3、爬取普通静态页面数据
结果输出:<title>The Dormouse’s story</title> titleThe Dormouse’s storyheadBS4 库是一个解析和处理HTML 和XML 的第三方库。它的作用是能够快速方便简单的提取网页中指定的内容,给我一个网页字符串,然后使用它的接口将网页字符串生成一个对象,然后通过这个对象的方法来提取数据。本次使用模拟的网页来提取数据。
2.9:数据交换-csv、Excel、json、爬虫、Tushare获取数据的更多相关文章
- python#读csv,excel,json数据
#读csv,excel,json数据 with open('E:\\test\\xdd.csv','r') as f: for line in f.readlines(): print(line) i ...
- MySQL数据导出为Excel, json,sql等格式
MySQL数据经常要导出为Excel, json,sql等格式,通过步骤都很多,麻烦,现在通过Treesoft可以方便的导出你要的数据格式. 1.在线执行SQL,在数据列表中有相应按钮,方便的将数据导 ...
- 数据交换格式之 - Json
Json简介: JSON是JavaScript对象表示法,是一种与语言无关的数据交换的格式,是一种完全独立于语言的文本格式. 使用ajax进行前后台数据交换,移动端与服务端的数据交换. web客户端和 ...
- Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)
1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...
- 第三章——供机器读取的数据(CSV与JSON)
本书使用的文件.代码:https://github.com/huangtao36/data_wrangling 机器可读(machine readable)文件格式: 1.逗号分隔值(Comma-Se ...
- [数据科学] 从text, json文件中提取数据
文本文件是基本的文件类型,不管是csv, xls, json, 还是xml等等都可以按照文本文件的形式读取. #-*- coding: utf-8 -*- fpath = "data/tex ...
- 轻量级的数据交换语言(JSON)
游戏开发过程中,很多用到JSON的地方:客户端与服务端的网络通信,程序读取客户端的数值表之类的. JSON用于描述数据结构,有以下形式存在. 对象(object):一个对象以“{”开始,并以“}”结束 ...
- Qt编写数据导出到Excel及Pdf和打印数据
一.前言 用Qt开发已经九年了,期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询 ...
- c#导出数据到csv文本文档中,数据前面的0不见了解决方法
((char)(9)).ToString() + dataRow["FUserName"].ToString().Trim() + "\t",
- [转]jquery getJSON 数据联动(采用序列化和反序列化获取数据) .
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...
随机推荐
- Kubernetes 监控--Alertmanager
前面我们学习 Prometheus 的时候了解到 Prometheus 包含一个报警模块,就是我们的 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警 ...
- SQL通用语法和SQL分类
SQL通用语法 1.SQL 语句可以单行或多行书写,以分号结尾 2.可使用空格和缩进来增强语句的可读性 3.MySQL 数据库的SQL语句不区分大小写,关键字建议使用大写 4.3种注释 单行注释: - ...
- PAT (Basic Level) Practice 1010 一元多项式求导 分数 25
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. 输出格式: ...
- [笔记] 兰道定理 Landau's Theorem
兰道定理的内容: 一个竞赛图强连通的充要条件是:把它的所有顶点按照入度d从小到大排序,对于任意\(k\in [0,n-1]\)都不满足\(\sum_{i=0}^k d_i=\binom{k+1}{2} ...
- centos7系统资源限制整理
概述 在linux系统使用过程中,默认的系统设置足够使用,但是对于一些高并发高性能的程序会有瓶颈存在,这些限制主要通过ulimit查看和修改. 环境 centos:CentOS release 7. ...
- 关于 LOCATE vs LIKE vs INSTR 性能分析
网上很多流传关于Mysql字符串对比的函数性能说法是 INSTR >> LOCATE >> LIKE 字符串,所以今天我自己测一下看看真假. 这是在字符串较长的情况下测试的结 ...
- you-get安装及使用
you-get安装及使用 1.安装python 下载地址:https://www.python.org/downloads/ 配置环境变量:我的电脑 --> 属性 --> 高级系统设置 - ...
- day03-2-拓展
满汉楼03 5.拓展_多表查询 前面都是对单表进行操作 思考一个问题:如果多表查询怎么处理?例如,查看账单时,希望现实菜品名称 查询的结果从上图变为下图: 方案一 由多张表组合查询的的结果,我们仍然可 ...
- python基础之数据类型总结
一.列表 1.作用:列表主要用于存储多个数据. 2.空列表表示:li=[]或者li=list() 3.列表的索引和切片:同字符串的索引和切片,索引超出范围报错,切片超出范围不报错. list3 = [ ...
- 如何规范App广告的隐私获取,让用户拥有更多知情权?
随着互联网的不断普及,越来越多老百姓使用智能设备触达互联网.但用户经常发现自己无意间提到的东西,打开App就收到相关产品的广告推送,甚至有人怀疑手机App是通过麦克风来窃取自己平时聊天信息中的关键词进 ...