Python库pandas读取和写入excel

pandas库简介

Pandas库是一个开源的数据分析工具,建立在NumPy之上,提供了用于数据操作和分析的数据结构和函数。Pandas库的主要作用包括:

  1. 提供了两种主要的数据结构:Series和DataFrame。Series是一维带标签的数组,类似于字典;DataFrame是二维的表格型数据结构,类似于电子表格或SQL表。

  2. 支持数据的读取和写入:Pandas可以读取和写入多种数据格式,如CSV、Excel、SQL数据库、JSON等,方便进行数据的导入和导出。

  3. 数据清洗和处理:Pandas提供了丰富的函数和方法,用于数据的清洗、处理、转换和筛选,帮助用户快速处理数据。

  4. 数据分析和统计:Pandas提供了各种统计函数和方法,可以进行数据的统计分析、聚合计算、数据透视表等操作,帮助用户进行数据分析。

  5. 数据可视化:Pandas结合Matplotlib库,可以进行数据的可视化展示,生成各种图表和图形,直观地展示数据分析结果。                    ----来自某智障AI

 DataFrame数据类型

        本次使用DataFrame将数据写入表格中。DataFrame数据结构可以从多种数据类型转化而来,包括但不限于:

  1. Python字典(Dictionary):可以将字典转换为DataFrame,其中字典的键将成为DataFrame的列标签,字典的值将成为DataFrame的数据。

  2. NumPy数组(Numpy Array):可以将NumPy数组转换为DataFrame,数组的行和列将成为DataFrame的行索引和列标签。

  3. 列表(List):可以将列表转换为DataFrame,列表中的元素将成为DataFrame的一列数据。

  4. CSV文件:可以从CSV文件中读取数据并转换为DataFrame。

  5. Excel文件:可以从Excel文件中读取数据并转换为DataFrame。

  6. SQL数据库:可以从SQL数据库中查询数据并转换为DataFrame

        转化数据类型很简单

df = pd.DataFrame([原数据], index=[1])

参数index 可有可无,当原数据是标量值(单个值)而不是数组或列表时,必须设置索引,用来标注该数据的行位置。

 读取excel数据

        使用pd.read_excel读取数据,同时读取数据的列名

def read_excel_data_to_dict(file_path, sheet_name, start_row=0, end_row=0):
    
    datalist = []
    # 读取Excel文件,并将值转换为字符串类型
    df = pd.read_excel(file_path, sheet_name=sheet_name, dtype=str)
    # 获取列名
    columns = df.columns
    # 获取行数
    num_rows = len(df.index
    # 遍历每一行
    for num, row in df.iloc[start_row:end_row].iterrows():
        data = {}
        # 遍历列名
        for column in columns.values:
            data[column] = row[column]
        datalist.append(data)
    return datalist

写入excel数据 

         写入excel的数据需要注意excel表是否存在,工作表是否存在,一般是续写数据,从excel表格中读取数据,将新的数据加入在原有数据之后,在从第一行开始写入。由于两处数据合并,输入的实际上是一个数据的总和体,为标量值,依然需要索引。

使用pd.ExcelWriter将DataFrame写入到Excel文件的指定工作表中,参数if_sheet_exists可以更改写入模式

def write_excel_data_from_dict(file_path, sheet_name, data_dict):
    """
    :param file_path: Excel文件路径
    :param sheet_name: sheet名
    :param data_dict: 要写入的数据,{'列名1':值1,'列名2':值2}
    :return:
    """

    data_list.append(data_dict)

    # 将字典转换为DataFrame
    df = pd.DataFrame(data_dict, index=[0])
    # 尝试读取现有的Excel文件
    existing_df = pd.read_excel(file_path, sheet_name=sheet_name)
    # 将新的数据追加到现有的DataFrame中
    # existing_df = existing_df._append(df, ignore_index=True)
    combined_df = pd.concat([existing_df, df], ignore_index=True)

    # 将DataFrame写入到Excel文件的指定工作表中
    with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
        combined_df.to_excel(writer, sheet_name=sheet_name, index=False)

在pycharm中查看 ExcelWriter的定义得知,参数if_sheet_exists存在几种取值

  1. 'error':如果工作表已经存在,则会引发ValueError错误。
  2. 'new':如果工作表已经存在,则会创建一个新的工作表。
  3. 'replace':如果工作表已经存在,则会覆盖原有工作表。
  4. 'overlay':如果工作表已经存在,则会在原有工作表上叠加数据。

根据具体的需求和情况,可以选择适合的if_sheet_exists参数取值来控制工作表的写入行为。

注:写入数据的方法需要在excel关闭时才能运行成功 

  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值