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