zoukankan      html  css  js  c++  java
  • 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

    同样的我们也可以用pandas的函数进行读取.

    In [6]: result=pd.read_csv('/home/zhf/1.csv')

    In [7]: result

    Out[7]: 

       1   2   3   4

    0  5   6   7   8

    1  9  10  11  12

    但是读入的文件没有列名,如果要添加列名,需要设置header参数

    In [11]: result=pd.read_csv('/home/zhf/1.csv',header=None)

    In [12]: result

    Out[12]: 

       0   1   2   3

    0  1   2   3   4

    1  5   6   7   8

    2  9  10  11  12

    也可以自己制定列的名称

    In [14]: result=pd.read_csv('/home/zhf/1.csv',names=['one','two','three','four']

        ...: )

    In [15]: result

    Out[15]: 

       one  two  three  four

    0    1    2      3     4

    1    5    6      7     8

    2    9   10     11    12

    In [16]: result['one']

    Out[16]: 

    0    1

    1    5

    2    9

    还可以明确将该列放到某个索引的位置上,通过制定index_col参数.

    In [18]: result=pd.read_csv('/home/zhf/1.csv',names=['one','two','three','four']

        ...: ,index_col='four')

    In [19]: result

    Out[19]: 

          one  two  three

    four                 

    4       1    2      3

    8       5    6      7

    12      9   10     11

    如果出现像下面的这种数据,#的这一行是我们不需要的.该如何省略掉呢

    In [22]: result=pd.read_csv('/home/zhf/1.csv')

    In [23]: result

    Out[23]: 

       1   2   3   4

    0  #   #   #   #

    1  5   6   7   8

    2  9  10  11  12

    可以通过skiprows将某一行的数据跳过.

    In [24]: result=pd.read_csv('/home/zhf/1.csv',skiprows=[1])

    In [25]: result

    Out[25]: 

       1   2   3   4

    0  5   6   7   8

    1  9  10  11  12

    同样的在读出的数据中,也可以判断是否为非空或者需要填充

    In [10]: result

    Out[10]: 

       1   2   3     4

    0  #   #   #   NaN

    1  5   6   7   8.0

    2  9  10  11  12.0

    In [11]: pd.isnull(result)

    Out[11]: 

           1      2      3      4

    0  False  False  False   True

    1  False  False  False  False

    2  False  False  False  False

    read_csvread_table的内置函数如下:

    逐块读取文本文件

    在处理很大的文件时,或找出大文件中的参数集便于后续处理的时候,只需要读取文件的一小部分或逐块对文件进行迭代.

    读取某几行需要设置nrows参数,这里的nrows下标是从0开始的.因此nrows=2代表前3行.

    In [19]: result=pd.read_csv('/home/zhf/1.csv',nrows=2)

    In [20]: result

    Out[20]: 

       1  2  3    4

    0  #  #  #  NaN

    1  5  6  7  8.0

    将数据写到文件上

    数据也可以被输出为分隔符格式的文本

    to_csv将数据写入到文件中,如果没有该文件,将会自动创建一个.

    data1=data.to_csv('/home/zhf/3.csv')

    在写入的时候也可以制定分隔符

    data1=data.to_csv('/home/zhf/3.csv',sep='|')

    JSON文件

    json文件是在HTTP上广泛用来传输数据的文件之一,下面来看下如何将json对象传入到DataFrame

    In [34]: import json

    In [35]: result=json.loads('/home/zhf/test.json')

    In [36]: data=json.dumps(result)  

    In [37]: ret=DataFrame(data['one'],columns=['name','age'])

    还有很多其他格式的文件,比如HTML,XML,数据库等文件.这些文件的读写和在python中是一样的.这里就不再一一介绍了.

  • 相关阅读:
    Android系统的Binder机制之一——Service Manager
    Android系统的Binder机制之二——服务代理对象(1)
    电子书
    [ 具体数学 ] 1:递归式与封闭式
    线段树封装
    实验1——顺序表的合并
    配置终端VIM 文件
    编译原理:实验二、集合与线性表操作
    括号匹配检验
    Problem B: KMP算法综合应用余庆
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/8450209.html
Copyright © 2011-2022 走看看