python 将excel、csv文件中的数据读取为矩阵
分享记录一些自己在数据处理过程中的小东西
利用 pandas 读取Excel 形成数据矩阵
import pandas as pd
data = pd.read_excel(path)
data = data.values
其中data.values 代表将DataFrame转换,可参考:
https://blog.csdn.net/HaruStone/article/details/88868331?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param
注意
在利用pandas读取时excel中的第一行默认不会读取(相当于列标题),所以如果第一行为数据时,最好在前插入一列,序号什么的
利用 xlrd 读取 Excel 形成数据矩阵
import xlrd
def matrix(path):
table = xlrd.open_workbook(path).sheets()[0] # 获取第一个sheet表
row = table.nrows # 行数
col = table.ncols # 列数
datamatrix = np.zeros((row, col)) # 生成一个nrows行ncols列,且元素均为0的初始矩阵
for x in range(col):
try:
cols = np.matrix(table.col_values(x)) # 把list转换为矩阵进行矩阵操作
datamatrix[:, x] = cols # 按列把数据存进矩阵中
except:
print(x)
# print(datamatrix.shape)
return datamatrix
path = "dda\\aaa"
datamatrix = matrix(path)
注意
利用 xlrd 读取时应当注意np.matrix这个函数,我自己在写的时候这一步老是出错,数据会出现字符串,不能转换为浮点型,就很难受
但是这种方式行列不需要 id 就直接文件中全是数据就可以了。
这一段代码是我在网上搜的,改了一小点,具体哪一位的我找不到了,如果有人看到可以提醒我,谢谢
利用 pandas 读取 CSV 文件
def load_csv(path):
data_read = pd.read_csv(path)
list = data_read.values.tolist()
data = np.array(list)
print(data.shape)
# print(data)
return data
注意
在利用 pandas 读取 CSV 时CSV文件应该有列的 id,例如:
参考:
https://blog.csdn.net/weixin_41888503/article/details/79671717?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
给 CSV 文件 添加表头
def write(path):
df = pd.read_csv(path, header=None, names=['name1', 'name4', 'name3', 'name2'])
df.to_csv('new-file.csv', index=False)
print(" Finished!")
return
其中 path 代表文件路径与名称,names 的数量应当与已有的文件列数相同,负责会强制转换为names长度的列数
参考:
https://blog.csdn.net/weixin_44346972/article/details/104415553?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param