Excel是一种常用的数据储存形式,应用非常广泛。Pandas可以通过以下代码实现Excel读取: pd . read_excel (“path_to_file.xlsx”, sheet_name=“Sheet1”,index_col=None)。其中,path_to_file.xlsx为Excel文件路径(注意在Windows下,路径需要使用“\\”,如c:\\windows\\temp\\readme.xlsx,或者在路径前加字母r,如r“C:\Windows\temp\readme.xlsx”),扩展名为“.xlsx”或“.xls”,sheet_name为读取的Sheet名,index_col=None表示不指定index。主要参数详见表3-6。
表3-6 read_excel()函数主要参数说明
使用read_excel()函数读取eye.xlsx,如代码清单3-20所示。
代码清单3-20中,parse_dates=[ 10 , 12 ]表示对第10列和12列(对应“reported”和“诊断日期”两列)的数据进行日期格式解析;date_parser是具体的格式化方法,采用lambda函数对日期格式进行规范化,errors= 'coerce' 表示跳过异常或非法数据。另外,Excel文件中的“出生日期”列采用了13位时间戳格式,若采用to_datetime(),需要对其进行转换,单位是毫秒(ms)。代码运行结果如下:
CSV(Comma-Separated Values)是使用逗号分隔的一系列纯文本格式文件,文件扩展名为“.csv”。与Excel比较,CSV文件不包含格式、公式、宏等,仅是一个文本文件。但也因为它是一种纯文本格式,编程更易读取,而且不容易出错,所以将数据储存为.csv文件较常用。
Pandas读取CSV格式数据的常用代码为: pd . read_csv (''path_to_file.csv'', index_col= 0 )。其中,path_to_file.csv为CSV文件路径,index_col=0为指定第一列为index。
使用read_csv()读取health.csv文件,如代码清单3-21所示。
在代码清单3-21中,第一个参数是文件路径,encoding='GBK'表示读取文件使用GBK编码处理中文;header=0表示将CSV文件中的第一行数据作为标题;index_col=['序号']表示将“序号”列作为索引;parse_dates=['检查时间']表示将“检查时间”这一列转换为标准的日期格式;converters={'BMI':float}表示将“BMI”这一列转换为浮点数据类型,防止数值类型用科学计数法显示。
print(df.head(6))执行结果如下:
此外,to_string()用于返回DataFrame类型的全部数据,如果不使用该函数,则输出结果为数据的前面5行和末尾5行,中间部分以“…”代替。用df. head ( 6 )只显示前6条数据。read_csv()的参数比较多,可在实际使用过程中灵活运用。
Pandas除了读取CSV文件外还可以读取“txt”纯文本格式文件,常用代码为: pd .read_table('path_to_file.txt')。
read_table()函数的参数较多,主要说明见表3-7。
表3-7 read_table()函数常见参数说明
使用read_table()函数读取health.txt文件,如代码清单3-22所示。
代码运行结果如下:
在实际数据分析中,还会经常遇到SAS、Stata和SPSS等统计软件的数据集,Pandas也可以直接读取。
(1)读取SAS文件:Pandas提供read_sas()函数用于读取SAS文件,但是实际使用中遇到文件中包含中文等字符时,容易出错,此时可以使用第三方库(sas7bdat)完成读取。程序如下:首先使用代码“conda install sas7bdat”安装sas7bdat库,然后可以使用代码清单3-23读取SAS文件。
(2)读取SPSS文件:在读取前需要先执行“conda install pyreadstat”安装pyreadstat库,然后才能使用代码“pd.read_spss()”读取SPSS文件。
(3)读取Stata文件:Pandas可以通过“pd.read_stata()”直接读取Stata文件。
(4)读取大文件:当读取数据量较大时,如果计算机配置不够高,内存不足等,经常会遇到程序报错,这种情况下可以使用chunksize分块读取数据,再分别进行处理,如代码清单3-24所示。其中,每个chunk是包含10 000行的DataFame,即将原始数据分为多个chunk,进行分批处理。
与SAS、R等软件不同,Pandas没有特定数据储存格式,可以储存为Excel、CSV、HTML、Stata等数据格式,详见代码清单3-25。
以储存CSV文件为例,使用to_csv()将DataFrame存储为CSV文件,如代码清单3-26所示。