python pandas IO tools 之read_csv文件读写参数详解

来源:互联网 发布:网络多媒体箱 编辑:程序博客网 时间:2024/06/06 03:55

python pandas IO tools 之csv文件读写

英文原文:pandas IO tools

读取csv文件:pd.read_csv(),写入csv文件:pd.to_csv()
pandas还可以读取一下文件:
read_csv,
read_excel,
read_hdf,
read_sql,
read_json,
read_msgpack (experimental),
read_html,
read_gbq (experimental),
read_stata,
read_sas,
read_clipboard,
read_pickle;
相应的写入:
to_csv,
to_excel,
to_hdf,
to_sql,
to_json,
to_msgpack (experimental),
to_html,
to_gbq (experimental),
to_stata,
to_clipboard,
to_pickle.

常用参数的读取csv文件

import pandas as pdobj=pd.read_csv('f:/ceshi.csv')print objprint type(obj)print obj.dtypes
  Unnamed: 0  c1  c2  c30          a   0   5  101          b   1   6  112          c   2   7  123          d   3   8  134          e   4   9  14<class 'pandas.core.frame.DataFrame'>Unnamed: 0    objectc1             int64c2             int64c3             int64dtype: object

ceshi.csv为有列索引没有行索引的数据,read_csv会自动加上行索引,即使原数据集有行索引。
read_csv读取的数据类型为Dataframe,obj.dtypes可以查看每列的数据类型

obj_2=pd.read_csv('f:/ceshi.csv',header=None,names=range(2,5))print obj_2
    2   3   40  c1  c2  c31   0   5  102   1   6  113   2   7  124   3   8  135   4   9  14

header=None时,即指明原始文件数据没有列索引,这样read_csv为自动加上列索引,除非你给定列索引的名字。

obj_2=pd.read_csv('f:/ceshi.csv',header=0,names=range(2,5))print obj_2
   2  3   40  0  5  101  1  6  112  2  7  123  3  8  134  4  9  14

header=0,表示文件第0行(即第一行,python,索引从0开始)为列索引,这样加names会替换原来的列索引。

obj_2=pd.read_csv('f:/ceshi.csv',index_col=0)print obj_2
   c1  c2  c3a   0   5  10b   1   6  11c   2   7  12d   3   8  13e   4   9  14
obj_2=pd.read_csv('f:/ceshi.csv',index_col=[0,2])print obj_2
      c1  c3  c2        a 5    0  10b 6    1  11c 7    2  12d 8    3  13e 9    4  14

index_col为指定数据中那一列作为Dataframe的行索引,也可以可指定多列,形成层次索引,默认为None,即不指定行索引,这样系统会自动加上行索引(0-)

obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,usecols=[0,1,2,3])print obj_2
   c1  c2  c3a   0   5  10b   1   6  11c   2   7  12d   3   8  13e   4   9  14
obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,usecols=[1,2,3])print obj_2
    c2  c3c1        0    5  101    6  112    7  123    8  134    9  14

usecols:可以指定原数据集中,所使用的列。在本例中,共有4列,当usecols=[0,1,2,3]时,即选中所有列,之后令第一列为行索引,当usecols=[1,2,3]时,即从第二列开始,之后令原始数据集的第二列为行索引。

obj_2=pd.read_csv('f:/ceshi.csv',index_col=0,nrows=3)print obj_2
   c1  c2  c3a   0   5  10b   1   6  11c   2   7  12

nrows:可以给出从原始数据集中的所读取的行数,目前只能从第一行开始到nrows行。

datetime handing 数据中日期处理

obj_3=pd.read_csv('f:/ceshi_date.csv',index_col=0,)print obj_3print type(obj_3.index)
                   A  B  Cdate                      20090101           a  2  320090102           b  3  420090103           c  4  5<class 'pandas.indexes.numeric.Int64Index'>
obj_3=pd.read_csv('f:/ceshi_date.csv',index_col=0,parse_dates=True)print obj_3print type(obj_3.index)
                   A  B  Cdate                      2009-01-01         a  2  32009-01-02         b  3  42009-01-03         c  4  5<class 'pandas.tseries.index.DatetimeIndex'>

parse_dates=True:可令字符串解析成时间格式。

data='date,value,cat\n1/6/2000,5,a\n2/6/2000,10,b\n3/6/2000,15,c'print data
date,value,cat1/6/2000,5,a2/6/2000,10,b3/6/2000,15,c
from StringIO import StringIOprint pd.read_csv(StringIO(data),parse_dates=[0],index_col=0)
            value catdate                 2000-01-06      5   a2000-02-06     10   b2000-03-06     15   c
print pd.read_csv(StringIO(data),parse_dates=[0],index_col=0,dayfirst=True)
            value catdate                 2000-06-01      5   a2000-06-02     10   b2000-06-03     15   c

US常用时间格式:MM/DD/YYYY,dayfirst=True:可将其改为DD/MM/YYYY

分隔符和阈值

tem='id|level|category\npatient1|123,000|x\npatient2|23,000|y\npatient3|1,234,018|z'print tem
id|level|categorypatient1|123,000|xpatient2|23,000|ypatient3|1,234,018|z
print pd.read_csv(StringIO(tem),sep='|')
         id      level category0  patient1    123,000        x1  patient2     23,000        y2  patient3  1,234,018        z
print pd.read_csv(StringIO(tem),sep='|',thousands=',')
         id    level category0  patient1   123000        x1  patient2    23000        y2  patient3  1234018        z
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 晚上睡觉时双腿酸胀怎么办 腿擦破皮了怎么办 快速好 宝宝腿擦破皮了怎么办 新生儿睡觉腿喜欢弯曲怎么办 孩子八个月交叉走路怎么办 胫椎引起双腿发热怎么办 婴儿头型睡扁了怎么办 膝盖抻筋了疼怎么办 小腿肚子抻筋了怎么办 后背抻筋了 很疼怎么办 运动膝盖抻着了怎么办 大腿内侧抻着了怎么办 大腿抻筋了 很疼怎么办 小腿肚子聚筋了怎么办 6个月婴儿腿弯怎么办 胳膊抻筋拉伤了怎么办 宝宝抻着了怎么办妙招 拎东西胳膊抻了怎么办 小臂一用力筋疼怎么办 摔破胳膊很痛怎么办 胳膊的筋扭伤了怎么办 小孩胳膊抻筋了怎么办 肩膀抻着了怎么办妙招 右边肩膀抻着了怎么办 胳膊因劳累很痛怎么办 宝宝胳膊摔了疼怎么办 宝宝胳膊抻筋了怎么办 孕妇胳膊筋伤了怎么办 刚进公司就怀孕怎么办 撞到胳膊麻筋了怎么办 腰抻了怎么办多久能好 腰突然抻了一下怎么办 干活抻筋了 很疼怎么办 胳膊抻筋一动就疼怎么办 肩膀受风了很疼怎么办 开空调受风了怎么办 胳膊受风了疼怎么办 孩子胳膊抻筋了怎么办 胳膊被风吹了疼怎么办 月子里胳膊受风怎么办 受风了胳膊酸痛怎么办