【python】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

`------------------------22应届生第一份工作的工作总结day1-----------------

今日任务:需要把n个excel文件里的不连续的n列数据的最后一行合计值提取出来进行汇总。
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、解决问题思路

我们目前已知的:excel文件,特定的行列。
解决问题的办法就是把问题拆解成一个个小问题,一步步解决问题。
猜想步骤:
1.我们要能读取到我们那n个excel文件,
2.然后找到文件里的特定行列,
3.将读取到的数据进行存储。
详细步骤:
1.如何能够读取excel文件?,如果不知道就去搜索。
在这里插入图片描述pandas库比较强大,这次就奔着学习pandas库的想法,解决问题。
针对处理文件,python里的os模块也少不了。

import pandas as pd
import os

读取文件:pd.read_excel
n个文件的读取,利用for循环。
我们可以把n个excel文件放在一个文件夹里,比较容易整理。

path= r"D:文件夹" #双引号的是文件夹的路径
files = os.listdir(path) #返回的是以列表形式---文件夹下的n个文件名。

文件夹包含哪些文件?运行程序,返回结果:
在这里插入图片描述要读取各个文件,就要知道各个文件的路径组成,其路径组成就是:文件夹路径+文件名。一对多关系。

文件夹路径 文件名1/2/3/4/…/n

首先利用for循环读取文件夹里的每个文件名

for file in files:
    file_path = os.path.join(path, file)
    # 输出文件路径
    print("文件路径:{}".format(file_path))

已经有了各个文件的路径,接下来要做的是:读取Excel文件里的特定行和列.

total_data = pd.read_excel(file_path)
    # 读取特定的行列
    data = total_data.iloc[[-1], [0, 2, 4, 6]]
    values = np.array(data)
    #print(values[0])
    #print("values数组有{}行,".format(values.shape[0]), "{}列".format(values.shape[1]))
    keys = ['第一天', '第三天', '第五天', '第七天']
    for m in range(0, 4):
        key = keys[m]
        value = values[[0], [m]]
        n = {key: value[0]}
        list.append(n)
        print(list[-1])
    print("------------------")

全部代码:

mport os
import sys
import pandas as pd
import numpy as np
list = []
# 首先输入文件夹的路径,才可以进行接下来的操作。
path = r"D:文件夹"
# 利用for循环进行读取文件名,注意os.listdir(path)用于读取文件夹下所有的文件名。
files = os.listdir(path)
#print(files)
# 创建变量,用于统计文件夹下的文件个数。
i = 0
# 将多个文件名:files,依次赋值给变量file
for file in files:
    # 计算文件个数,循环一次。
    i += 1
    # 输出文件名,去除文件扩展名
    print("文件名:{}".format(file.split(".xls")[0]))
    # 路径连接,得出每个文件的路径,以便进行后续的读取文件:读取特定的行列及各种操作。
    file_path = os.path.join(path, file)
    # 输出文件路径
    #print("文件路径:{}".format(file_path))
    # 利用pandas读取excel文件
    total_data = pd.read_excel(file_path)
    # 读取特定的行列
    data = total_data.iloc[[-1], [0, 2, 4, 6]]
    values = np.array(data)
    #print(values[0])
    #print("values数组有{}行,".format(values.shape[0]), "{}列".format(values.shape[1]))
    keys = ['第一天', '第三天', '第五天', '第七天']
    for m in range(0, 6):
        key = keys[m]
        value = values[[0], [m]]
        n = {key: value[0]}
        list.append(n)
        print(list[-1])
    print("------------------")

# print("文件的总个数:{}".format(i))

总结

将本次任务的目的拆解,一步步解决。
另外关于存储数据,采用字典的形式。创建字典,字典 = {key:value}
将列名存储为key值,将对应的列值存储为value值。这样可以做到一一对应。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>