# =================第六章:数据编码和处理======================

# 读CSV文件
# 数据读取为一个元组的序列
import csv
# with open('E:/stocks.csv') as f:
# f_csv = csv.reader(f)
# headers = next(f_csv)
# for row in f_csv:
# print(row[0], row[4])
# # 数据读取到一个字典序列中去
# with open('E:/stocks.csv') as f:
# f_csv = csv.DictReader(f)
# for row in f_csv:
# print(row['Symbol'], row['Time']) # 写CSV文件
headers = ['Symbol','Price','Date','Time','Change','Volume']
# rows = [
# ('AA', 39.48, '6/11/2007', '9:36am', -0.18, 181800),
# ('AIG', 71.38, '6/11/2007', '9:36am', -0.15, 195500),
# ('AXP', 62.58, '6/11/2007', '9:36am', -0.46, 935000)
# ]
# with open('E:/stocks.csv', 'w', newline='') as f:
# f_csv = csv.writer(f)
# f_csv.writerow(headers)
# f_csv.writerows(rows) rows = [
{'Symbol':'AA', 'Price':39.48, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.18, 'Volume':181800},
{'Symbol':'AIG', 'Price': 71.38, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.15, 'Volume': 195500},
{'Symbol':'AXP', 'Price': 62.58, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.46, 'Volume': 935000}
]
# with open('E:/1.csv', 'w', newline='') as f:
# f_csv = csv.DictWriter(f, headers)
# f_csv.writeheader()
# f_csv.writerows(rows) # 读写json数据
import json data = {
'name':'qf',
'shares':100,
'price':542.23
} # 将一个Python 数据结构转换为JSON
json_str = json.dumps(data)
print(json_str)
# 将一个JSON 编码的字符串转换回一个Python 数据结构
data_dict = json.loads(json_str)
print(data_dict)
# 如果要处理的是文件而不是字符串,你可以使用json.dump() 和json.load()来编码和解码JSON 数据
with open('data.json', 'w') as f:
json.dump(data, f)
with open('data.json', 'r') as f:
data = json.load(f) # pprint 模块的pprint() 函数
# 按照key 的字母顺序并以一种更加美观的方式输出
print(data)
from pprint import pprint
pprint(data) # 将一个JSON 字典转换为一个Python 对象例子
s = '{"name": "ACME", "shares": 50, "price": 490.1}'
class JSONObject:
def __init__(self, d):
self.__dict__ = d data1 = json.loads(s, object_hook=JSONObject)
print(data1.name, data1.price)
print(json.dumps(data, indent=4)) # 从一个简单的XML 文档中提取数据
# 可以使用xml.etree.ElementTree 模块从简单的XML 文档中提取数据
from xml.etree.ElementTree import parse # doc = parse('somefile.xml')
# for item in doc.iterfind('channel/item'):
# title = item.findtext('title')
# print(title) # ElementTree 模块中的每个元素有一些重要的属性和方法,在解析的时候非常有用。
# tag 属性包含了标签的名字,text 属性包含了内部的文本,而get() 方法能获取属性值 # e = doc.find('channel/item')
# print(e.tag)
# print(e.text)
# print(e.get('some_attribute')) # 使用尽可能少的内存从一个超大的XML 文档中提取数据
# 任何时候只要遇到增量式的数据处理时,第一时间就应该想到迭代器和生成器
from xml.etree.ElementTree import iterparse
# 使用一个Python 字典存储数据,并将它转换成XML 格式
from xml.etree.ElementTree import Element, tostring def dict_to_xml(tag, d):
elem = Element(tag)
for key, val in d.items():
child = Element(key)
child.text = str(val)
elem.append(child)
return elem
s = {'name':'qf', 'shares':99, 'price':680.8}
e = dict_to_xml('stock', s)
# xml.etree.ElementTree 中的tostring() 函数很容易就能将它转换成一个字节字符串
print(tostring(e))
# 如果想给某个元素添加属性值,可以使用set() 方法
e.set('_id', '123') # 与关系型数据库的交互
# 1.连接到数据库
# 2.创建一个游标
# 3.执行sql
# 类似SQLAlchemy 这样的库允许你使用Python 类来表示一个数据库表 # 编码和解码十六进制数
# 只是简单的解码或编码一个十六进制的原始字符串,可以使用 binascii 模块
import binascii
s = b'hello'
h = binascii.b2a_hex(s)
print(h)
hh = binascii.a2b_hex(h)
print(hh) # 编码和解码base64数据
# 使用base64 模块中的两个函数 b64encode() 和 b64decode()
# Base64 编码仅仅用于面向字节的数据
import base64
a = base64.b64encode(s)
aa = base64.b64decode(a)
print(a, aa) # 对于需要编码和解码二进制数据的程序而言,通常会使用struct 模块 # -----------------------------pandas 库------------------------------
# 数据的累加与统计操作
# 对于任何涉及到统计、时间序列以及其他相关技术的数据分析问题,都可以考虑使用Pandas 库
# Pandas 是一个拥有很多特性的大型函数库,我在这里不可能介绍完。但是只要你
#需要去分析大型数据集合、对数据分组、计算各种统计量或其他类似任务的话,这个
#函数库真的值得你去看一看

Python--进阶处理6的更多相关文章

  1. Python进阶:函数式编程实例(附代码)

    Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...

  2. Python进阶 - 对象,名字以及绑定

    Python进阶 - 对象,名字以及绑定 1.一切皆对象 Python哲学: Python中一切皆对象 1.1 数据模型-对象,值以及类型 对象是Python对数据的抽象.Python程序中所有的数据 ...

  3. Python进阶-继承中的MRO与super

    Python进阶-继承中的MRO与super 写在前面 如非特别说明,下文均基于Python3 摘要 本文讲述Python继承关系中如何通过super()调用"父类"方法,supe ...

  4. Python进阶 - 命名空间与作用域

    Python进阶 - 命名空间与作用域 写在前面 如非特别说明,下文均基于Python3 命名空间与作用于跟名字的绑定相关性很大,可以结合另一篇介绍Python名字.对象及其绑定的文章. 1. 命名空 ...

  5. python进阶学习笔记(一)

    python进阶部分要学习的内容: 学习目标: 1.函数式编程 1.1,什么是函数式编程 函数式编程是一种抽象计算的编程模式 不同语言的抽象层次不同: 函数式编程的特点: python支持的函数式编程 ...

  6. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  7. 【python进阶】Garbage collection垃圾回收2

    前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...

  8. Python进阶 函数式编程和面向对象编程等

    函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数: ...

  9. 【python进阶】深入理解系统进程2

    前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...

  10. Python进阶:如何将字符串常量转化为变量?

    前几天,我们Python猫交流学习群 里的 M 同学提了个问题.这个问题挺有意思,经初次讨论,我们认为它无解. 然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知识星球上记录了下来. 万万 ...

随机推荐

  1. IOS基于XMPP协议开发--XMPPFramewok框架(二):服务器连接

    连接服务器前需准备事项: 1.搭建好XMPP服务器 2.设置服务器地址和端口 [_xmppStream setHostName:@"127.0.0.1"]; [_xmppStrea ...

  2. Lattice 开发工具Diamond 相关版本下载地址

    百度网盘: https://wenku.baidu.com/view/21b98975192e45361066f5f3.html 官网下载: http://www.latticesemi.com/Su ...

  3. Machine Learning—The k-means clustering algorithm

    印象笔记同步分享:Machine Learning-The k-means clustering algorithm

  4. CSS3边框圆角知识

    <div class="item" data-brief="整圆"> <div class="border-radius" ...

  5. 【转】Linux中多线程wait使用注意

    使用管道生成的while,是无法进行并发管理的 在处理日志的时候,采用管道多线程,怎么都实现不了wait功能,经上篇文章才知道,使用管道生成的while,无法进行并发管理. while read qu ...

  6. 使用Cookie报错Control character in cookie value, consider BASE64 encoding your value

    参考资料: http://www.blogjava.net/persister/archive/2009/10/02/297103.html http://blog.csdn.net/xiaozhen ...

  7. rsync 精确同步文件用法 (转载)

    -- include-from 指定目录下的部分目录的方法: include.txt: aa bb ss Command: rsync -aSz  --include-from=/home/inclu ...

  8. Delphi之Raise抛出异常

    相关资料: http://blog.csdn.net/a20071426/article/details/10160171 实例代码: unit Unit1; interface uses Windo ...

  9. 超赞的lua开发工具zerobrane

    zerobrane是用lua和wxWidgets编写的ide,而且是跨平台的,支持多种lua解释器,包括love2d. 而且最赞的是支持即时编程,可以在运行时直接修改变量,直接看到结果,不用重新运行, ...

  10. IE9 BUG overflow :auto 底部空白解决方案

    今天去升级了到IE9,运行项目的时候发现,我的div显示滚动条时候,用js动态加载进去的内容在光标移动的时候,底部自动被撑大留着空白, IE8 Chrome这些以前都试过 没发现这个问题 研究了好久 ...