我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python怎么实现Excel数据读取和写入

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python怎么实现Excel数据读取和写入

这篇“Python怎么实现Excel数据读取和写入”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现Excel数据读取和写入”文章吧。

1. 功能分析

加载文件夹内所有的Excel数据;

生产贡献度分析图表(以柱状图显示表格数据);

提起Excel表格中指定列数据;

定向筛选所需数据;

多表数据统计排行;

多表数据合并新excel文件。

2.系统开发环境

Anaconda3,在conda 中,window和ubuntu中的python功能一样 。

pycharm。

3.安装依赖库

Python怎么实现Excel数据读取和写入

这些依赖包   都要装好

import osimport xlrd2 #xlrd: 对Excel进行读相关操作import xlwt #xlwt: 对Excel进行写相关操作,且只能创建一个全新的Excel然后进行写入和保存。import numpyimport matplotlibfrom prettytable import PrettyTable  #PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格from matplotlib import pyplot as plt

4. 主函数设计

Excel数据分析师的主函数main(),主要用于实现系统的主界面。在主函数main()中,首先调用get_files_name()函数获取文件名。

get_files_name()函数代码如下:

#导入文件def get_files_name():    """    用于获取文件名    :return: 返回值为文件名组成的列表    """    file_list = os.listdir('./data')    return file_list

然后调用load_data()函数来读取excel文件并字典方式保存。

#保存生产excel表def load_data(file_list):    """    用于读取指定的文件并保存至字典数据结构中    :param file_list: 需要加载的文件列表    :return: 保存了文件内容的字典    """    dictory = {}    for file in file_list:        # 获取表格文件        book = xlrd2.open_workbook('./data/'+file)        # 获取表格中的所有sheet        names = book.sheet_names()        # 获取第一个sheet        sheet = book.sheet_by_index(0)        # 获取当前表格的行数        rows = sheet.nrows        # 获取当前表格的列数        cols = sheet.ncols        # 获取表头文件,即表格第一行        head = sheet.row_values(0)        for row in range(rows-1):            # 如果当前字典中没有该城市则创建一个            if not sheet.cell_value(row+1, 0) in dictory.keys():                dictory[sheet.cell_value(row+1, 0)] = {}            for col in range(cols-1):                dictory[sheet.cell_value(row+1, 0)][head[col+1]] = float(sheet.cell_value(row+1, col+1))    return dictory

接着调用menu()函数生成功能选择菜单。

menu()函数代码如下: 

# 打印菜单def menu():    print("  ----------Excel 数据分析师----------")    print("{:<30}".format("  ==============功能菜单============== "))    print("{:<30}".format("   1. 显示当前数据                     "))    print("{:<30}".format("   2. 以柱状图展示当前数据              "))    print("{:<30}".format("   3. 提起指定列                       "))    print("{:<30}".format("   4. 定向筛选指定元素                       "))    print("{:<30}".format("   5. 数据排行                         "))    print("{:<30}".format("   6. 重新加载数据                      "))    print("{:<30}".format("   7. 保存当前数据                      "))    print("{:<30}".format("   0. 退出程序                          "))    print("{:<30}".format(" ==================================== "))    print("{:<30}".format(" 说明:输入相应数字后按下回车选择指定功能 "))    print('\n')

并且应用if语句控制各个子函数的调用,从而实现对Excel文件的选择,Excel数据的加载,选择、筛选、合并、排序和统计等功能。

主函数完整代码如下:

if __name__ == "__main__":    # 导入文件    files = get_files_name()    data = {}    print("当前data文件夹下的文件如下:")    num = 1    for file in files:        print(num, file)        num += 1    while(1):        index_str = input("请选择需要导入的文件序号(多个文件导入时用空格分开, 输入0则导入所有文件,输入多文件则自动合并):")        index_list = index_str.split(' ')        try:            index_list.remove('')        except:            pass        choice_file_list = []        if index_list[0] == '0':            choice_file_list = files            break        else:            try:                for item in index_list:                    choice_file_list.append(files[int(item)-1])            except:                print("输入序号有误")                continue        if choice_file_list:            break        else:            print("输入序号有误")    data = load_data(choice_file_list)    print("导入数据成功\n")    # 调用函数,打印菜单    menu()    while 1:        choice = input("请选择指定功能:")        if choice == '0':            print("\n退出程序\n")            exit()        elif choice == '1':            print("当前功能:显示当前数据")            show_data(data)            input('\n按下回车返回菜单')            menu()        elif choice == '2':            print("当前功能:以柱状图显示数据")            draw_plot(data)            input('\n按下回车返回菜单')            menu()        elif choice == '3':            print("当前功能:筛选指定列")            keys = list(data[list(data.keys())[0]].keys())            print("当前表格中的列如下:")            num = 1            for key in keys:                print(num, key)                num += 1            choice_col_list = []            while (1):                index_str = input("请选择需要筛选出的列序号(多列之间用空格分开,0代表所有列):")                index_list = index_str.split(' ')                try:                    index_list.remove('')                except:                    pass                choice_file_list = []                if index_list[0] == '0':                    choice_col_list = keys                    break                else:                    try:                        for item in index_list:                            choice_col_list.append(keys[int(item) - 1])                    except:                        print("输入序号有误")                        continue                if choice_col_list:                    break                else:                    print("输入序号有误")            data = get_specified_cols(data, choice_col_list)            print("筛选成功")            input('\n按下回车返回菜单')            menu()        elif choice == '4':            print("当前功能:筛选指定行")            keys = list(data[list(data.keys())[0]].keys())            print("当前表格中的列如下:")            num = 1            print(num, "城市")            num += 1            for key in keys:                print(num, key)                num += 1            col = int(input("请输入需要进行筛选的数据所在的列:"))-2            if col == -1:                col = '城市'            else:                col = keys[col]            op_list = ['<', '<=', '=', '>=', '>']            print("比较操作符如下:")            num = 1            for op in op_list:                print(num, op)                num += 1            operation = int(input("请输入比较操作符前的序号:"))-1            operation = op_list[operation]            value = input("请输入需要筛选的值:")            data = get_specified_data(data, operation, col, value)            print("筛选成功")            input('\n按下回车返回菜单')            menu()        elif choice == '5':            print("当前功能:数据排序")            keys = list(data[list(data.keys())[0]].keys())            print("当前表格中的列如下:")            num = 1            for key in keys:                print(num, key) #显示当前表格中的所有的列                num += 1            col = int(input("请输入需要进行排序的数据所在的列:")) - 1            col = keys[col]            reverse = input("排序方式:\n1 从大到小排序\n2 从小到大排序\n")            if reverse == '1':                data = sort_data(data, col, True)            elif reverse == '2':                data = sort_data(data, col, False)            else:                print("输入有误")            input('\n按下回车返回菜单')            menu()        elif choice == '6':            # 导入文件            files = get_files_name()            data = {}            print("当前文件夹下的文件如下:")            num = 1            for file in files:                print(num, file)                num += 1            while (1):                index_str = input("请选择需要导入的文件序号(多个文件导入时用空格分开, 输入0则导入所有文件,输入多文件则自动合并):")                index_list = index_str.split(' ')                try:                    index_list.remove('')                except:                    pass                choice_file_list = []                if index_list[0] == '0':                    choice_file_list = files                    break                else:                    try:                        for item in index_list:                            choice_file_list.append(files[int(item) - 1])                    except:                        print("输入序号有误")                        continue                if choice_file_list:                    break                else:                    print("输入序号有误")            data = load_data(choice_file_list)            print("导入数据成功\n")            # 打印菜单            menu()        elif choice == '7':            print("当前功能:保存数据")            save(data)            input('\n按下回车返回菜单')            menu()        else:            print("请输入正确的数字")            input('\n按下回车返回菜单')            menu()

5.模块设计

加载文件夹内所有的Excel数据

show_data()函数通过PrettyTable 库(PrettyTable 库是python中的一个第三方库,可用来生成美观的ASCII格式的表格)将之前保存的字典数据生成表格。

#加载显示数据def show_data(dictory):    try:        keys = list(dictory[list(dictory.keys())[0]].keys())    except:        print("当前数据为空")        return    head = ['城市']    head.extend(keys)    table = PrettyTable(head)    for key in dictory.keys():        line = [key]        for key_2 in keys:            line.append(dictory[key][key_2])        table.add_row(line)    print(table)

效果图如下:

Python怎么实现Excel数据读取和写入

生产贡献度分析图表(以柱状图显示表格数据)

draw_plot( )函数使用了matplotlib库。通过atplotlib.rc( )来设置字体,通过plt.bar( )函数来绘制柱状图,通过plt.legend( )函数来给图添加图例。

#制作图表def draw_plot(dictory):    font = {'family': 'MicroSoft Yahei', 'weight': 'bold', 'size': 7}    matplotlib.rc('font', **font) #设置中文字体    # 定义三个颜色    index = numpy.arange(len(dictory.keys()))    color = [(256 / 256, 0 / 256, 0 / 256, 1),            (0 / 256, 0 / 256, 256 / 256, 1),            (0 / 256, 256 / 256, 0 / 256, 1),            (0 / 256, 0 / 256, 0 / 256, 1)]    first_key = list(dictory.keys())    first_key = first_key[0]    cols = list(dictory[first_key].keys())    data = []    for i in range(len(cols)):        data.append([])    for key in dictory.keys():        for col in range(len(cols)):            data[col].append(dictory[key][cols[col]])    offset = -1/4    for i in range(len(cols)):        plt.bar(index+offset, data[i], color=color[i], width=1 / 5) #通过bar函数可以用柱状图来表达一些变量的统计分布        offset += 1/4    plt.xticks(index, dictory.keys())#表示刻度    plt.legend(cols)#给图像加上图例    plt.show()

效果图 

Python怎么实现Excel数据读取和写入

提起Excel表格中指定列数据

get_specified_cols()函数根据用户在菜单输入的列名,通过字典的索引筛选出列名,加载指定列的所有数据。

#提起指定列def get_specified_cols(dictory, col_name_list):    """    筛选出指定的列    :param dictory:原始字典    :param col_name_list: 需要筛选出的列名,城市名默认出现    :return: 筛选之后的字典    """    new_dict = {}    for key in dictory.keys():        new_dict[key] = {}        for col_name in col_name_list:            new_dict[key][col_name] = dictory[key][col_name]    return new_dict

效果图如下:

Python怎么实现Excel数据读取和写入

以上就是关于“Python怎么实现Excel数据读取和写入”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python怎么实现Excel数据读取和写入

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python怎么实现Excel数据读取和写入

这篇“Python怎么实现Excel数据读取和写入”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么实现Exce
2023-06-30

Python如何读取和写入Excel数据

这篇文章主要介绍“Python如何读取和写入Excel数据”,在日常操作中,相信很多人在Python如何读取和写入Excel数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何读取和写入Exce
2023-06-02

python怎么读取pdf并写入excel

要读取PDF文件并将其内容写入Excel文件,可以使用PyPDF2库来读取PDF文件的内容,然后使用openpyxl库来创建和写入Excel文件。以下是一个示例代码来读取PDF文件并将其内容写入Excel文件:import PyPDF2
python怎么读取pdf并写入excel
2024-03-05

Python如何实现数据写入Excel

这篇文章主要讲解了“Python如何实现数据写入Excel”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现数据写入Excel”吧!写入后的格式如下图所示:以下为数据用例:i
2023-06-15

Python中怎么使用pdfplumber读取PDF写入Excel

本篇内容介绍了“Python中怎么使用pdfplumber读取PDF写入Excel”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Pyth
2023-07-02

Python实例详解pdfplumber读取PDF写入Excel

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于pdfplumber读取PDF写入Excel的相关问题,包括了pdfplumber模块的安装、加载PDF,以及一些实战操作等等,下面一起来看一下,希望对大家有帮助。PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档。PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Pyth
2022-06-20

python实现读取excel写入mysql的小工具详解

Python是数据分析的强大利器利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理。 这里向大家分享python如何读取excel,并使用Python将数据存入Mysql中,有需
2022-06-04

C++文件的数据写入和文件的数据读取怎么实现

这篇文章主要介绍了C++文件的数据写入和文件的数据读取怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++文件的数据写入和文件的数据读取怎么实现文章都会有所收获,下面我们一起来看看吧。一:没有数据,准备
2023-07-02

如何配置python连接oracle读取excel数据写入数据库

小编给大家分享一下如何配置python连接oracle读取excel数据写入数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、配置python连接oracl
2023-06-14

python文件怎么读取和写入

这篇文章主要介绍了python文件怎么读取和写入的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python文件怎么读取和写入文章都会有所收获,下面我们一起来看看吧。1、读取,read()方法返回文件中保存的字符
2023-06-30

怎么利用Python实现读取Word表格计算汇总并写入Excel

这篇文章将为大家详细讲解有关怎么利用Python实现读取Word表格计算汇总并写入Excel,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言快过年了,又到了公司年底评级的时候了。今年的评级
2023-06-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录