pandas:DataFrname(三)

pandas:从文件读取

读取文件;从文件名。url,文件对象中加载数据
read_csv 默认分隔符为逗号
read_table  默认分隔符为\t

读取文件函数主要参数
sep 指定分隔符,可用正则表达式
header=None  指定文件无列名
names  指定列名
index_col  指定某列作为索引
na_values  指定某些字符串表示缺失值
parse_dates  指定某些列是否被解析为日期,布尔值或列表

df = pd.read_csv('filename.csv',sep=',',header=None,names=['列名1','列名2',...],parse_dates=
     ...: True,index_col='id',na_values=['none','None','nan','NaN','null'])

pandas:写入到文件

to_csv

写入文件函数的主要参数

 1 sep
 2 na_rep  指定缺失值转换的字符串,默认为空字符串
 3 header=False 不输出列名一行
 4 index=False  不输输行索引一列
 5 cols  指定输出的列,传入列表
 6 
 7 其他文件类型:json  XML HTML 数据库
 8 pandas转换为二进制文件格式(pickle)
 9 save
10 load

pandas:时间对象处理

时间序列类型:
时间戳:特定时刻
 固定时期:如2010年1月
时间间隔:起始时间-结束时间
python标准库:datetime
date time datetime timedalta
strftime()
strptime()

第三方包
pip install python-dateutil
dateutil.parser.parse()
成组处理日期:pandas
pd.to_datetime(['起始时间','结束时间'])

In [163]: import dateutil

In [164]: dateutil.parser.parse('2010-01-01')
Out[164]: datetime.datetime(2010, 1, 1, 0, 0)

In [165]: dateutil.parser.parse('2010/01/01')
Out[165]: datetime.datetime(2010, 1, 1, 0, 0)

In [166]: dateutil.parser.parse('2010 JAN 1')
Out[166]: datetime.datetime(2010, 1, 1, 0, 0)

In [167]: dateutil.parser.parse('2010/2/3 9:19:10')
Out[167]: datetime.datetime(2010, 2, 3, 9, 19, 10)

In [168]: pd.to_datetime(['2018-01-01','2018-07-08'])
Out[168]: DatetimeIndex(['2018-01-01', '2018-07-08'], dtype='datetime64[ns]', freq=None)

In [169]: pd.date_range('2018-01-01','2018-07-08')
Out[169]: 
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08',
               '2018-01-09', '2018-01-10',
               ...
               '2018-06-29', '2018-06-30', '2018-07-01', '2018-07-02',
               '2018-07-03', '2018-07-04', '2018-07-05', '2018-07-06',
               '2018-07-07', '2018-07-08'],
              dtype='datetime64[ns]', length=189, freq='D')

pandas:时间对象处理

产生时间对象数组:date_range
start 开始时间
end  结束时间
periods  时间长度(如果不知道结束时间,可以使用periods知道时间长度,多少天)
freq  时间频率,默认为D,可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es),
S(econd),A(year)...

 pd.date_range('2018-01-01','2018-07-08',freq='W-MON')
Out[175]: 
DatetimeIndex(['2018-01-01', '2018-01-08', '2018-01-15', '2018-01-22',
               '2018-01-29', '2018-02-05', '2018-02-12', '2018-02-19',
               '2018-02-26', '2018-03-05', '2018-03-12', '2018-03-19',
               '2018-03-26', '2018-04-02', '2018-04-09', '2018-04-16',
               '2018-04-23', '2018-04-30', '2018-05-07', '2018-05-14',
               '2018-05-21', '2018-05-28', '2018-06-04', '2018-06-11',
               '2018-06-18', '2018-06-25', '2018-07-02'],
              dtype='datetime64[ns]', freq='W-MON')

pandas:时间序列

时间序列就是以时间对象为索引的Series或DataFrame

datetime对象作为索引时是存储在DatatimeIndex对象中

时间序列特殊功能

传入'年'或者'年月'作为切片方式

传入日期范围作为切片方式

In [176]: df = pd.read_csv('601318.csv',index_col='date',parse_dates=['date'])
In [178]: type(df.index[0])
Out[178]: pandas._libs.tslibs.timestamps.Timestamp

In [179]: df['2007-03-01':'2007-03-05']
Out[179]: 
            id    open   close    high     low      volume    code
date                                                              
2007-03-01   0  22.074  20.657  22.503  20.220  1977633.51  601318
2007-03-02   1  20.750  20.489  20.944  20.256   425048.32  601318
2007-03-05   2  20.300  19.593  20.384  19.218   419196.74  601318

 

posted @ 2018-07-13 01:12  LaniLai  阅读(515)  评论(0编辑  收藏  举报