本文主要是介绍【Python自动化办公】复制Excel数据:将各行分别重复指定次数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制;并将所得结果保存为新的Excel表格文件的方法。
首先,我们来明确一下本文的具体需求。现有一个Excel表格文件,在本文中我们就以.csv
格式的文件为例;其中,如下图所示,这一文件中有一列(也就是inf_dif
这一列)数据比较关键,我们希望对这一列数据加以处理——对于每一行,如果这一行的这一列数据的值在指定的范围内,那么就将这一行复制指定的次数(复制的意思相当于就是,新生成一个和当前行一摸一样数据的新行);而对于符合我们要求的行,其具体要复制的次数也不是固定的,也要根据这一行的这一列数据的值来判断——比如如果这个数据在某一个值域内,那么这一行就复制10
次;而如果在另一个值域内,这一行就复制50
次等。
知道了需求,我们就可以开始代码的书写。其中,本文用到的具体代码如下所示。
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 6 22:04:48 2023@author: fkxxgis
"""import numpy as np
import pandas as pd
import matplotlib.pyplot as pltoriginal_file_path = "E:/01_Reflectivity/99_Model/02_Extract_Data/26_Train_Model_New/Train_Model_0715.csv"
result_file_path = "E:/01_Reflectivity/99_Model/02_Extract_Data/26_Train_Model_New/Train_Model_0715_Over_NIR_0717_2.csv"df = pd.read_csv(original_file_path)
duplicated_num_0 = 70
duplicated_num_1 = 35
duplicated_num_2 = 7
duplicated_num_3 = 2num = [duplicated_num_0 if (value <= -0.12 or value >= 0.12) else duplicated_num_1 if (value <= -0.1 or value >= 0.1) \
else duplicated_num_2 if (value <= -0.07 or value >= 0.07) else duplicated_num_3 if (value <= -0.03 or value >= 0.03) \
else 1 for value in df.inf_dif]
duplicated_df = df.loc[np.repeat(df.index.values, num)]plt.figure(0)
plt.hist(df["inf_dif"], bins = 50)
plt.figure(1)
plt.hist(duplicated_df["inf_dif"], bins = 50)duplicated_df.to_csv(result_file_path, index=False)
其中,上述代码的具体含义如下。
首先,我们需要导入所需的库,包括numpy
、pandas
和matplotlib.pyplot
等,用于后续的数据处理和绘图操作。接下来,即可开始读取原始数据,我们使用pd.read_csv()
函数读取文件,并将其存储在一个DataFrame对象df
中;这里的原始文件路径由original_file_path
变量指定。
随后,我们开始设置重复次数。在这里,我们根据特定的条件,为每个值设定重复的次数。根据inf_dif
列的值,将相应的重复次数存储在num
列表中。根据不同的条件,使用条件表达式(if-else语句)分别设定了不同的重复次数。
接下来,我们使用loc
函数和np.repeat()
函数,将数据按照重复次数复制,并将结果存储在duplicated_df
中。
最后,为了对比我们数据重复的效果,可以绘制直方图。在这里,我们使用matplotlib.pyplot
库中的hist()
函数绘制了两个直方图;其中,第一个直方图是原始数据集df
中inf_dif
列的直方图,第二个直方图是复制后的数据集duplicated_df
中inf_dif
列的直方图。通过指定bins
参数,将数据分成50
个区间。
完成上述操作后,我们即可保存数据。将复制后的数据集duplicated_df
保存为.csv
格式文件,路径由result_file_path
变量指定。
执行上述代码,我们将获得如下所示的两个直方图;其中,第一个直方图是原始数据集df
中inf_dif
列的直方图,也就是还未进行数据复制的直方图。
其次,第二个直方图是复制后的数据集duplicated_df
中inf_dif
列的直方图。
可以看到,经过前述代码的处理,我们原始的数据分布情况已经有了很明显的改变。
最后这里免费分享给大家一份Python全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包【点击这里】领取!
① Python所有方向的学习路线图
,清楚各个方向要学什么东西
② 100多节Python课程视频
,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例
,学习不再是只会理论
④ 华为出品独家Python漫画教程
,手机也能学习
⑤ 历年互联网企业Python面试真题
,复习时非常方便
这篇关于【Python自动化办公】复制Excel数据:将各行分别重复指定次数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!