一、前期准备:
- Python版本:3.7.3
- 制作一个不包含头文件的csv文件,为了方便文件内容是纯数字,字符集为utf-8,并命名为test.csv,放到程序的根目录下。
- 使用PyCharm创建一个Python工程,并安装Numpy和Pandas类库。如下所示:
二、使用标准Python类库导入
Python提供了标准的类库CSV,用来处理csv文件。使用函数reader()读取csv文件,读取的数据可以生成一个Numpy的数组,用来训练算法模型。使用该函数所有数据的数据类型必须一致,且不能有头文件。操作方法如下:
- 创建一个Python文件,命名为load_data_by_std
- 代码如下:
################################################################# # load_data_by_std.py # 演示使用标准类库CSV,读取csv文件,并将数据写入numpy数组中 ################################################################# # 导入类库 import csv as csv import numpy as np # 文件名,注意需要带后缀 filename = 'test.csv' # 读取文件 with open(filename,'rt') as csvfile: # 读取数据,默认dialect='excel',delimiter=',',可以不写 # csv.reader(csvfile, dialect='excel', **fmtparams) # 参数说明参考:https://docs.python.org/3.7/library/csv.html reader = csv.reader(csvfile, dialect='excel', delimiter=',') # 打印每一行数据 #for row in reader: # print(row) # 将每一行转换为列表 x = list(reader) # 转换为numpy的数组,类型是int data = np.array(x,dtype='int') # 打印数据 print(data) |
三、使用Numpy导入
使用numpy的loadtext函数导入数据。使用该函数所有数据的数据类型必须一致,且不能有头文件。
- 创建python文件,命名:load_data_by_numpy.py
- 代码如下:
################################################################# # load_data_by_numpy.py # 演示使用numpy类库导入csv文件 ################################################################# # 导入类库 import numpy as np # 文件名,注意需要带后缀 # 文件中不能出现头文件且文件中字段的类型必须一致 filename = 'test.csv' # 读取文件 with open(filename,'rt') as csvfile: # 加载数据,dtype默认float类型,需要转换为int data = np.loadtxt(csvfile, dtype='int', delimiter=',') # 打印数据 print(data) |
四、使用Pandas导入
通过pandas.read_rcv()函数来导入csv文件,这个函数的返回值是DataFrame,可以方便地进行下一步的处理。在机器学习中,经常使用Pandas来做数据清洗和数据准备工作。数据中的数据类型可以不一致
- 创建python文件,命名:load_data_by_pandas.py
- 代码如下:
################################################################# # load_data_by_pandas.py # 演示使用pandas类库导入csv文件 ################################################################# # 导入类库 import pandas as pd # 文件名,注意需要带后缀 filename = 'test.csv' # 设置列标题 names = ['col1','col2','col3','col4'] # 导入数据,数据文件中的列的数据类型可以不一致 data = pd.read_csv(filename,names=names) # 输出数据维度,格式:(行数,列数) print(data.shape) # 矩阵方式输出数据 print(data) |