《利用python进行数据分析》读书笔记--数据加载、存储与文件格式

输入输出一般分为下面几类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据。利用Web API操作网络资源。

1、读写文本格式的数据

自己感觉读写文件有时候“需要运气”,经常需要手工调整。因为其简单的文件交互语法、直观的数据结构,以及诸如元组打包解包之类的便利功能,Python在文本和文件处理方面已经成为一门招人喜欢的语言。pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。见下表:

下面大致介绍一下这些函数在文本数据转换为DataFrame时的一些技术。可以分为一下几类:

  • 索引:将一个或者多个列当作返回的DataFrame处理,以及是否从文件、用户获取列名。
  • 类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等。
  • 日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列。
  • 迭代:支持对大文件进行逐块迭代。
  • 不规整数据问题:跳过一些行、页脚、注释或者其他不要的东西

pandas读取文件会自动推断数据类型,不用指定。

read_csv为例

用names重新规定列名,用index_col指定索引,也可以将多个列组合作为层次化索引。可以编写正则表达式规定分隔符。用skiprows跳过某些行。pandas会用NA、-1.#IND、NULL等进行标记。用na_values用来不同的NA标记值。下面是read_csv/read_table参数:

逐块读取文本文件

处理很大的文件时,或找出大文件中的参数集以便于后续处理时,可能只想读取一部分或者逐块对文件进行迭代。nrows指定读取多少行。要逐块读取文件,需要设置chunksize(行数)。

将数据写出到文本格式

用to_csv方法写出到csv文件中。参数sep标明分隔符。na_rep标明空白字符串的代替值。index header标明是否写出行列标签,默认是写出。用cols限制并以指定顺序写出某些列。

Series也有to_csv方法。用一些整理工作(无header行,第一列作索引)就能用read_csv读取为Series,当然还有一个更方便的from_csv,Series.from_csv。

手工处理分隔符格式

有些奇葩文件需要进行处理以后再读。Python内置的csv模块可以读取任何单字符分隔符文件。将打开的文件传递给csv.reader。csv文件的形式有很多,只需定义csv.Dialect的一个子类即可定义新格式(如专门的分隔符、字符串引用约定、行结束符等):

#-*- encoding:utf-8 -*-
import numpy as np
import os
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import pandas.io.data  as web
import csv

f = open(‘ex6.csv‘)
reader = csv.reader(f)
for line in reader:
    print line
lines = list(csv.reader(open(‘ex7.csv‘)))
header,values = lines[0],lines[1:]
print header
print values
#下面的 * 应该是取出值的意思
data_dict = {h:v for h,v in zip(header,zip(*values))}
print data_dict
class my_dialect(csv.Dialect):
    lineterminator = ‘\n‘
    delimiter = ‘;‘
    quotechar = ‘"‘

reader = csv.reader(f,dialect=my_dialect)
#csv语支的参数也可以用参数的形式给出
reader = csv.reader(f,delimiter = ‘|‘)

对于那些使用复杂分隔符或多字符分隔符的文件,csv文件就无能为力了。这种情况下用split或者re.split进行拆分合整理工作。要手工输出分隔符文件,可以使用csv.writer。它接受一个已打开且可写的文件对象以及跟cav.reader相同的那些语支和格式化选项。

#-*- encoding:utf-8 -*-
import numpy as np
import os
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import pandas.io.data  as web
import csv

with open(‘mydata.csv‘,‘w‘) as f:
    writer = csv.writer(f,lineterminator = ‘\n‘)
    writer.writerow((‘one‘,‘two‘,‘three‘))
    writer.writerow((‘1‘,‘2‘,‘3‘))

JSON数据

除空值null和一些其他的细微差别(如列表末尾不允许存在多余的逗号)之外,JSON非常接近有效Python代码。基本数据类型有对象(字典)、数组(列表)、字符串、数值、布尔值以及NULL。对象中所有的键都必须是字符串(非常重要)。用json模块,json.loads可以将字符串转换成Python形式,即可以将对象读取为python字典。

相反的,json.dumps可以将python对象转换为json格式。

XML和HTML:Web信息收集

lxml可以读取xml和html格式数据并处理。这部分用到的时候再研究。

2、二进制数据文件

实现数据的二进制格式最简单的方法之一是使用Python内置的pickle序列化。为了使用方便,pandas对象都有一个用于将数据以pickle形式保存到磁盘上的save方法。

时间: 2024-10-20 20:45:09

《利用python进行数据分析》读书笔记--数据加载、存储与文件格式的相关文章

数据加载存储和文件格式

原文地址: https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E5%AD%98%E5%82%A8%E5%92%8C%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F.md 1.读取文本格式数据 import pandas as pd import numpy as np

python数据分析笔记——数据加载与整理]

[ python数据分析笔记--数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&idx=4&sn=bf74cbf3cd26f434b73a581b6b96d9ac&chksm=bdbd1b388aca922ee87842d4444e8b6364de4f5e173cb805195a54f9ee073c6f5cb17724c363&mpshare=1&scene=

python数据分析之:数据加载,存储与文件格式

前面介绍了numpy和pandas的数据计算功能.但是这些数据都是我们自己手动输入构造的.如果不能将数据自动导入到python中,那么这些计算也没有什么意义.这一章将介绍数据如何加载以及存储. 首先来看读写文本格式的数据 pandas提供了一些用于将表格型数据读取为DataFrame对象的函数.如下表: csv文件是默认以,为分割符.可以通过命令行cat来读取文件内容. In [4]: cat /home/zhf/1.csv 1,2,3,4 5,6,7,8 9,10,11,12 同样的我们也可以

《利用Python 进行数据分析》 - 笔记(3)

问题导读: 1.pandas的数据结构介绍 2.利用pandas对数据的基本操作 3.汇总和计算描述统计方法 4.处理缺失数据 5.层次化索引 解决方案: pandas的数据结构介绍: (1)Series Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及与之相关的数据标签(索引)组成 In [6]: obj = pd.Series([1,2,3,4]) In [7]: obj Out[7]: 0 1 1 2 2 3 3 4 dtype: int64 Serie

《利用Python 进行数据分析》 - 笔记(5)

问题导读: 1.合并数据集 2.重塑和轴向旋转 3.数据转换(待续) 解决方案: 合并数据集 (1)数据库风格的DataFrame合并 pandas的merge 函数 将通过一个或多个键将行连接起来 如果没有指定列,merge 就会直接依据相同列名的那一列进行连接 In [3]: df1 = pd.DataFrame( ...: {'key':['b','b','a','c','a','a','b'], ...: 'data1':range(7)} ...: ) In [4]: df1 Out[

【汇编指令】arm指令集之但寄存器数据load/store (加载存储)

数据的传送: LDR              STR                   .WORD LDRB            STRB              .BYTE LDRH             STRH            .HALFWORD LDR 和STR 加载/存储字和无符号字节指令.使用单一数据传送指令(STR 和LDR)来装载和存储单一字节或字的数据从/到内存.LDR指令用于从内存中读取数据放入寄存器中:STR 指令用于将寄存器中的数据保存到内存.指令格式如下

《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装,EPDFree包括了Numpy,Scipy,matplotlib,Chaco,IPython.这里的pandas需要自己安装,对应版本为pandas-0.

数据分析学习资料《利用Python进行数据分析第2版》+《Python数据分析与挖掘实战》+《从零开始学Python数据分析与挖掘》

数据分析涉及统计学.线性代数.图形分析绘制.数据挖掘等知识,推荐系统学习电子资料<利用Python进行数据分析第2版>.<Python数据分析与挖掘实战>.<从零开始学Python数据分析与挖掘>电子书和代码测试. <利用Python进行数据分析第2版>电子书代码,每一章之间有递进关系,适合在Python入门<Python编程从入门到实践>电子书之后阅读,本专门针对数据分析领域的.我细致地读了一遍,敲了一遍代码,一开始没有头绪,进展缓慢,后来逐渐

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行