读/写文本文件
- 背景
数据读取是进行数据预处理,建模与分析的前提。不同的数据源,需要使用不同的函数读取。pandas内置了十余种数据源读取函数和对应的数据写入函数。常见的数据源格式有以下几种,分别是文本文件(包括一般文本文件和csv文件)和Excel文件。掌握这两种数据源读取方法,便能够完成日常的一些数据分析数据读取工作。
- 前置步骤
准备meal_order_info.csv,users.xlsx,放在tmp文件夹
3文本文件读取
- 以餐饮订单信息表为例,使用read_table和read_csv函数读取数据,如代码 42所示。
代码 42 使用read_table和read_csv函数读取菜品订单详情表
In[1]: | import pandas as pd import os os.chdir('/course/DataAnalyze/data') ## 使用read_table读取订单信息表 order = pd.read_table('./meal_order_info.csv',sep = ',',encoding = 'gbk' , engine = 'python') print('使用read_table读取的订单信息表的长度为:',len(order)) |
Out[1]: | 使用read_table读取的订单信息表的长度为: 945 |
In[2]: | ## 使用read_csv读取订单信息表 order1 = pd.read_csv('./meal_order_info.csv',encoding = 'gbk', engine = 'python') print('使用read_csv读取的订单信息表的长度为:',len(order1)) |
Out[2]: | 使用read_csv读取的订单信息表的长度为: 945 |
- 使用read_table和read_csv读取数据时sep、header、encoding三参数设置,如代码 43所示。
In[3]: | ## 使用read_table读取菜品订单信息表,sep = ';' order2 = pd.read_table('./meal_order_info.csv',sep = ';;',encoding = 'gbk', engine = 'python') print('分隔符为;;时订单信息表为:\n',order2) |
Out[3]: | 分隔符为;;时订单信息表为: "info_id","emp_id","number_consumers","mode","dining_table_id","dining_table_name","expenditure","dishes_count","accounts_payable","use_start_time","check_closed","lock_time","cashier_id","pc_id","order_number","org_id","print_doc_bill_num","lock_table_info","order_status","phone","name" 0 417,1442,4,NA,1501,1022,165,5,165,"2016/8/1 11... 1 301,1095,3,NA,1430,1031,321,6,321,"2016/8/1 11... 2 413,1147,6,NA,1488,1009,854,15,854,"2016/8/1 1... ... [945 rows x 1 columns] |
In[4]: | ## 使用read_csv读取菜品订单信息表,header=None order3 = pd.read_csv('./meal_order_info.csv',sep = ',',header = None,encoding = 'gbk', engine = 'python') print('查看订单信息表内容为:','\n',order3) |
Out[4]: | 查看订单信息表内容为: 0 1 2 3 4 \ 0 info_id emp_id number_consumers mode dining_table_id 1 417 1442 4 NaN 1501 2 301 1095 3 NaN 1430 3 413 1147 6 NaN 1488 ... [946 rows x 21 columns] |
In[5]: | ## 使用gbk解析菜品订单信息表,使用utf-8则会报以下编码错误 order4 = pd.read_csv('./meal_order_info.csv',sep = ',',encoding = 'utf-8', engine = 'python') |
Out[5]: | UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte |
- 代码 43中列举的数据分析中常用的read_table、read_csv函数的参数,能够满足多数情况对读取文本文件或者csv文件的需求。如果对全部的50余个参数感兴趣,可以阅读pandas官方的API文档。
- 文本文件存储
将餐饮菜品订单信息表写入csv文件,如代码 44所示。
In[6]: | import os os.chdir('/course/DataAnalyze/data') print('订单信息表写入文本文件前目录内文件列表为:\n',os.listdir()) ## 将order以csv格式存储 order.to_csv('orderInfo.csv',sep = ';',index = False) print('订单信息表写入文本文件后目录内文件列表为:\n',os.listdir()) |
Out[6]: | 订单信息表写入文本文件前目录内文件列表为: ['meal_order_info.csv', 'users.xlsx'] 订单信息表写入文本文件后目录内文件列表为: ['meal_order_info.csv', 'users.xlsx', 'orderInfo.csv'] |