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

# 读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. atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结

    atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流 ...

  2. 以byte方式讀取SPD的數據(SMBus Controller在PCH中)

    Reading A Byte of SMBus EEPROM DataThe following steps have to be followed for the System BIOS to re ...

  3. docker 不同机器上容器互相通信

    环境说明: 1.系统:centos7 2.docker:Docker version 1.3.2 3.docker启动参数:OPTIONS=--selinux-enabled=false -H fd: ...

  4. 移动touch事件之一

    触摸事件分类: touchstart:当手指触摸屏幕时触发:即使已经有一个手指放在了屏幕上也会触发. touchmove:当手指在屏幕上滑动时连续的触发.在这个事件发生期间,调用preventDefa ...

  5. filter函数和map函数

    filter filter()函数接收一个函数 f 和一个可迭代对象,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返 ...

  6. centos 搭建nginx

    yum install wget yum install gcc-c++ yum -y install pcre prec-devel yum -y install zlib zlib-devel y ...

  7. libcpmt.lib (xxx.obj) LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in XXX.obj

    问题描述: 这样的,我写了个NString类,然后用的VS2013的命令行编译的(NMAKE.exe),并用LNK.exe打包成了NString.lib 然后后来我在VS2013里面建了一个proje ...

  8. js to json字符串

    var last=obj.toJSONString(); //将JSON对象转化为JSON字符 或者 var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

  9. cocosbuilder的一些坑

    主要是大小写问题 在扁平发布模式下,如果存在大小写不同的文件,文件会被替换掉.而模拟上运行没问题,在真机上运行 有问题.找了半天才发现,坑啊!

  10. seajs中引用jquery插件

    步骤一:使用define封装成seajs模块,返回匿名函数,包含插件的源码 define(function(require,exports,moudles){ return function(jque ...