Pandas处理excel数据

pandas处理Excel

读取数据

xlsx or xls

import pandas as pd
xlsx_data = pd.read_excel("文件路径.xlsx")
# nan值替换''
xlsx_data.fillna('')
# 去重
xlsx_data.drop_duplicates()
# 数据转成[{},{}...]
xlsx_data.to_dict(orient='records')

csv

csv_data = pd.read_csv("文件路径.csv")
# nan值替换''
csv_data .fillna('')
# 去重
csv_data .drop_duplicates()
# 数据转成[{},{}...]
csv_data .to_dict(orient='records')

保存数据

xlsx or xls

pd.DataFrame.from_records(数据).to_excel('文件路径.xlsx')

csv

pd.DataFrame.from_records(数据).to_csv('文件路径.csv')

封装

class ExcelHandle:
    def __init__(self):
        self.now_datetime = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")

    def read_excel_data(self, excel_path, enter_type='xlsx', sheet_name=0, encodeing='utf8', header=0, orient='records', deduplication=False):
        """
        读取excel数据
        :param excel_path:      文件路径 		【xxx/xxx.csv or xxx/xxx.xlsx】
        :param enter_type:      输入类型			【csv or xlsx or xls】 默认 xlsx
        :param sheet_name:      工作簿名称		【0 or Sheet1  0 — first,Sheet1 — 工作名称】 , csv 无sheet_name
        :param encodeing:       编码 			【csv — need, xlsx or xls — not need】 默认 utf8 
        :param header:          标头			【0 — first row start】 默认 0 
        :param orient:          读取数据类型		【records — [{},{}...], list — {'num1':[],'num2':[]...}】 默认 records  
        :param deduplication:   去重			【False - 不去重 or True — 去重】 默认 False 
        :return:
        """
        if enter_type == 'csv':
            return pd.read_csv(excel_path, encoding=encodeing, header=header).fillna('').to_dict(orient=orient) if deduplication == False else pd.read_csv(excel_path, encoding=encodeing, header=header).fillna('').drop_duplicates().to_dict(orient=orient)
        else:
            return pd.read_excel(excel_path, header=header, sheet_name=sheet_name).fillna('').to_dict(orient=orient) if deduplication == False else pd.read_excel(excel_path, header=header,sheet_name=sheet_name).fillna('').drop_duplicates().to_dict(orient=orient)

    def save_excel_data(self, excel_path, item_data, enter_type='xlsx', sheet_name='sheet', encoding='utf8',startrow=0):
        """
        保存excel数据
        :param excel_path:      保存路径	   	【xxx/xxx.csv or xxx/xxx.xlsx】
        :param item_data:       数据       	【[{},{}...]】
        :param enter_type:      输入类型	   	【csv or xlsx or xls】
        :param sheet_name:      工作簿名称	【xlsx — sheet or xls — sheet】   默认 sheet【只有xlsx和xls可以】
        :param encoding:        编码      	【暂无使用】
        :param startrow:        开始行 		【xlsx or xls —— 从第几行开始写入,csv除外】
        :return:
        """
        try:
	        pd.DataFrame.from_records(item_data).to_csv(excel_path, index=False) if enter_type == 'csv' else pd.DataFrame.from_records(item_data).to_excel(excel_path, index=False, startrow=startrow, sheet_name=sheet_name)
        	return {'code': 200, 'data': 'success', 'msg': '保存成功'}
        except Exception as e:
        	return {'code': 201, 'data': f'fail:{e}', 'msg': '保存失败'}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值