把numpy数组导入excel,把excel的数据导出成numpy格式

目录

用到的几个库

把numpy数组导入excel

把numpy输出到excel某一行

把numpy输出到excel某一列

导入excel,转成numpy

首先转成dataFrame格式

读取某一行数据,存为numpy

读取某一列数据,存为numpy


2023.12.5更新:

如果需要把很多数据导入excel,直接调用函数,每一行都要打开文件,写入excel文件,关闭文件,会导致运行非常缓慢,建议不要调用这个函数,而是把里边的代码拆出来,改成自己需要的格式。读取同理。

excel的速度不如to_pickle。 

如果需要在excel中,对数据进行分析和处理,这种情况下,把数据存进去是合适的。

而且,如果excel还没有close,就终止运行代码,会导致这个excel的内容全部没掉,如果运行着运行着,发现不对劲,可以直接打开对应的excel文件。

-

以下是原文:

做机器学习,为了防止每一次从头开始跑,时间非常久,可以把中间的重要的数据先存下来,下次可以直接在这些数据的基础上跑,而不需要从头开始跑。

以下是几个方便转换的函数,可以直接用~

用到的几个库

import pandas as pd
from openpyxl import load_workbook
import numpy as np

把numpy数组导入excel

把numpy输出到excel某一行

注意:行序号、列序号都是从1开始

#  把numpy输出到excel某一行
# 注意:行序号、列序号都是从1开始
def numpy_to_excel_row(array,row,start_col,path):
    book=load_workbook(path)
    writer=pd.ExcelWriter(path,engine="openpyxl")
    writer.book=book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    worksheet = writer.sheets['Sheet1']
    for i in range(0,len(array)):
        worksheet.cell(row=row, column=start_col+i, value=array[i])
    writer.save()

把numpy输出到excel某一列

注意:行序号、列序号都是从1开始

#  把numpy输出到excel某一列
# 注意:行序号、列序号都是从1开始
def numpy_to_excel_col(array,start_row,col,path):
    book = load_workbook(path)
    writer = pd.ExcelWriter(path, engine="openpyxl")
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    worksheet = writer.sheets['Sheet1']
    for i in range(0, len(array)):
        worksheet.cell(row=start_row+i, column=col, value=array[i])
    writer.save()

导入excel,转成numpy

首先转成dataFrame格式

file_path="test.xlsx"
df=pd.read_excel(file_path)

读取某一行数据,存为numpy

注意:

  1. 行序号、列序号都是从0开始
  2. 如果数据中的nan全部集中在后几列,而且不需要把他们存进numpy,可以将reduce_nan置为True
  3. 如果要将nan也存入numpy,可以将reduce_nan置为False
#  读取某一行数据,存为numpy
# 注意:行序号、列序号都是从0开始
def excel_row_to_numpy(df,row,start_col,reduce_nan):
    result=[]
    shape=df.shape
    largest_length=shape[1]
    if reduce_nan:
        nan_length = df.iloc[row, start_col: largest_length].isna().sum()
        length=largest_length-nan_length-start_col
    else:
        length=largest_length
    for i in range(start_col,start_col+length):
        result.append(df.iloc[row,i])
    result=np.array(result)
    return result

读取某一列数据,存为numpy

注意:

  1. 行序号、列序号都是从0开始
  2. 如果数据中的nan全部集中在后几行,而且不需要把他们存进numpy,可以将reduce_nan置为True
  3. 如果要将nan也存入numpy,可以将reduce_nan置为False
#  读取某一列数据,存为numpy
# 注意:行序号、列序号都是从0开始
def excel_col_to_numpy(df,start_row,col,reduce_nan):
    result=[]
    shape=df.shape
    largest_length=shape[0]
    if reduce_nan:
        nan_length=df.iloc[start_row:largest_length,col].isna().sum()
        length=largest_length-nan_length-start_row
    else:
        length=largest_length
    for i in range(start_row,start_row+length):
        result.append(df.iloc[i,col])
    result=np.array(result)
    return result

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值