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,例如:
无需行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

  • 21
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值