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

# 读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. 总结iOS9中的新的方法

    iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...

  2. 05、Windows Store app 的图片裁切(更新)

    在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...

  3. vue知识点2018.6.3

    文件夹和文件名称 简介 build 构建脚本目录 config 应用程序的配置文件 index.html 入口页面 node_modules 存放 NPM 依赖模块 package-lock.json ...

  4. C++重载IO操作符

    操作符的重载有一定的规则,而IO操作符必须重载为普通函数,且应该声明为类的友元函数.我试了,非友元也可以,但是必须提供访问成员变量的函数,所以,出于效率的考虑还是应该定义为友元. 规则如下: 1.  ...

  5. Debian7/8安装最新的nginx稳定版本

    我们知道,通过 apt-get install nginx 就可以安装上nginx,可惜这样安装的nginx版本都有些旧,就连最新的Debian 8.0 默认安装的仍然是1.6.2,更别说 Debia ...

  6. 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 ...

  7. SpringBoot DataSource 配置说明

    DataSource 配置说明 属性 说明 spring.dao.exceptiontranslation.enabled 是否开启PersistenceExceptionTranslationPos ...

  8. hdu6121 Build a tree 模拟

    /** 题目:hdu6121 Build a tree 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6121 题意:n个点标号为0~n-1:节点i的父节点 ...

  9. php扩展安装

    [root@129-2-10-2 src]# cat kuozhan.sh #!/bin/bash###install redis extend #########cd /usr/local/srct ...

  10. 模板题 + KMP + 求最小循环节 --- HDU 3746 Cyclic Nacklace

    Cyclic Nacklace Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3746 Mean: 给你一个字符串,让你在后面加尽 ...