zoukankan      html  css  js  c++  java
  • pandas之数据IO笔记

    pandas在进行数据存储与输出时会做一些相应的操作

    1.*索引:将一个列或多个列读取出来构成DataFrame,其中涉及是否从文件中读取索引以及列名

    2 *类型推断和数据转换:包括用户自定义的转换以及缺失值标记

    3 *日期解析

    4*迭代:针对大文件进行逐块迭代。这个是Pandas和Python原生的csv库的最大区别

    5 *不规整数据问题:跳过一些行,或注释等等
     
     1 import pandas as pd
     2 import numpy as np
     3 
     4 pd.read_csv('ch04/ex1.csv')   # 它输出的是DataFrame
     5 pd.read_table('ch04/ex1.csv',sep=',')  # 它的效果和上一行一样
     6 
     7 pd.read_csv('ch04/ex2.csv',header=None,names=['a','b','c','d','msg'])
     8 #  它为读取的文件添加列索引
     9 
    10 pd.read_csv('ch04/ex2.csv',header=None,
    11                    names=['a','b','c','d','msg'],index_col=['msg','b'])
    12 #  为文件添加列索引后,又将'msg','b'两列变为行索引
    13 
    14 pd.read_table('ch04/ex3.csv',sep='s+')
    15 #  文件中的分隔符用到正则表达式sep='s+'
    16 
    17 pd.read_csv('ch04/ex5.csv',
    18                     na_values={'message':['NA','NULL','foo'],'something':['two']})
    19 #  读出的文件没有值的默认为NaN值,
    20 #  na_values通过字典形式表示message与something中需要变为NaN值的一些位置
    21 
    22 pd.read_csv('ch04/ex6.csv',nrows=10)
    23 #  表示只读取10行
    24 
    25 #  如果要取出每个索引出现的次数,可以利用chunksize
    26 tr = pd.read_csv('ch04/ex6.csv',chunksize=1000)
    27 #  先取出1000行
    28 #  它返回<pandas.io.parsers.TextFileReader at 0x1b116b02780>支持迭代
    29 result = pd.Series([])
    30 for chunk in tr:
    31     result = result.add(chunk['key'].value_counts(),fill_value=0)
    32 #  add方法会为索引对应的数据不存在添加默认值,可以采用fill_value=0填充默认值
    33 
    34 result = result.sort_values(ascending=False)
    35 result[:10]  # 取出前十大的数

    往磁盘读入数据

     1 import pandas as pd
     2 import numpy as np
     3 
     4 df = pd.read_csv('ch04/ex5.csv')
     5 df.to_csv('ch04/ex5_out.csv',index=False)  
     6 # 如果没有index=False,读取的文件与源文件有差异,给源文件加了索引
     7 # index=False指定不写索引值
     8 
     9 df.to_csv('ch04/ex5_out.csv',index=False,
    10               header=None,columns=['b','c','message'],sep='|')
    11 # header=None,不写列标签,只写'b','c','message'三列,每个数字或字符串用'|'分隔开
  • 相关阅读:
    Pika的设计及实现
    高性能网络编程
    C语言的结构体
    消息队列库——ZeroMQ
    Diffie-Hellman密钥交换算法
    mysql-proxy 读写分离
    位运算
    分布式学习之一:事务
    Redis Cluster
    SpringBoot整合ActiveMQ,看这篇就够了
  • 原文地址:https://www.cnblogs.com/yang901112/p/11425934.html
Copyright © 2011-2022 走看看