参考:padas 官方文档
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html#pandas.read_csv
pandas是如何识别或区分数据和表头名称的 ?
参考:https://blog.csdn.net/sinat_32872729/article/details/93025161
index_col 设置索引:
对于index_col来说,若数据都是相同类型,比如数值型,则表示无index,输出默认index为0,1,2,…;若数据第一列为字符,其他列为数值,则会将第一列视为index;若设置index_col=False, 则表示无index(默认将0, 1, 2,…作为数据的index)
header:设置表头
对header,当第一行为字符,则第一行(第一行第一列)数据 默认为表头;当第一行与其他数据类型相同时,也会把第一行当作表头,所以无表头时应设置header=None
parse_dates参数:
将csv中的时间字符串转换成日期格式
【注】:read_csv()方法指定parse_dates会使得读取csv文件的时间大大增加
parse_dates=[0] 对第1列的数据进行解析
squeeze:
bool,默认为False。如果解析的数据只包含一列,则返回一个Series。
date_parser=parser
结合代码
def parser(x):
return datetime.strptime('190'+x, '%Y-%m') # time.strptime(date_string, format) #code 1
.....
date_parser=parser #引用code 1 返回的 parser;
代码:
def parser(x):
return datetime.strptime('190'+x, '%Y-%m') # time.strptime(date_string, format)[0:])) 把data_string 按照format[]的形式格式化
series = read_csv('shampoo-sales.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)
print(series.head()) # head( )函数只能读取前五行数据
csv 文件: 显然,数据是有表头 “Month”,“Sales”
"Month","Sales"
"1-01",266.0
"1-02",145.9
"1-03",183.1
"1-04",119.3
"1-05",180.3
"1-06",168.5
"1-07",231.8
"1-08",224.5
"1-09",192.8
"1-10",122.9
执行后文件输出为:
Month
1901-01-01 266.0
1901-02-01 145.9
1901-03-01 183.1
1901-04-01 119.3
1901-05-01 180.3
Name: Sales, dtype: float64
分析,输出的第一行Month 与header=0设置有关。
若把header=1,则第2行(第二行第一列)数据默认为表头, 1-01
输出如下:
1-01 # 表头
1901-02-01 145.9
1901-03-01 183.1
1901-04-01 119.3
1901-05-01 180.3
1901-06-01 168.5
Name: 266.0, dtype: float64