首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Python自动复制Excel数据:将各行分别重复指定次数

编程知识
2024年09月01日 14:11

  本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求那一行加以复制指定的次数,而不符合要求那一行则不复制;并将所得结果保存为新的Excel表格文件的方法。

  这里需要说明,在我们之前的文章多次复制Excel符合要求的数据行:Python批量实现中,也介绍过实现类似需求的另一种Python代码,大家如果有需要可以查看上述文章;而上述文章中的代码,由于用到了DataFrame.append()这一个在最新版本pandas库中取消的方法,因此有的时候可能会出现报错的情况;且本文中的需求较之上述文章有进一步的提升,因此大家主要参考本文即可。

  首先,我们来明确一下本文的具体需求。现有一个Excel表格文件,在本文中我们就以.csv格式的文件为例;其中,如下图所示,这一文件中有一列(也就是inf_dif这一列)数据比较关键,我们希望对这一列数据加以处理——对于每一行,如果这一行的这一列数据的值在指定的范围内,那么就将这一行复制指定的次数(复制的意思相当于就是,新生成一个和当前行一摸一样数据的新行);而对于符合我们要求的行,其具体要复制的次数也不是固定的,也要根据这一行的这一列数据的值来判断——比如如果这个数据在某一个值域内,那么这一行就复制10次;而如果在另一个值域内,这一行就复制50次等。

image

  知道了需求,我们就可以开始代码的书写。其中,本文用到的具体代码如下所示。

# -*- 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 plt

original_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 = 2

num = [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)

  其中,上述代码的具体含义如下。

  首先,我们需要导入所需的库,包括numpypandasmatplotlib.pyplot等,用于后续的数据处理和绘图操作。接下来,即可开始读取原始数据,我们使用pd.read_csv()函数读取文件,并将其存储在一个DataFrame对象df中;这里的原始文件路径由original_file_path变量指定。

  随后,我们开始设置重复次数。在这里,我们根据特定的条件,为每个值设定重复的次数。根据inf_dif列的值,将相应的重复次数存储在num列表中。根据不同的条件,使用条件表达式(if-else语句)分别设定了不同的重复次数。

  接下来,我们使用loc函数和np.repeat()函数,将数据按照重复次数复制,并将结果存储在duplicated_df中。

  最后,为了对比我们数据重复的效果,可以绘制直方图。在这里,我们使用matplotlib.pyplot库中的hist()函数绘制了两个直方图;其中,第一个直方图是原始数据集dfinf_dif列的直方图,第二个直方图是复制后的数据集duplicated_dfinf_dif列的直方图。通过指定bins参数,将数据分成50个区间。

  完成上述操作后,我们即可保存数据。将复制后的数据集duplicated_df保存为.csv格式文件,路径由result_file_path变量指定。

  执行上述代码,我们将获得如下所示的两个直方图;其中,第一个直方图是原始数据集dfinf_dif列的直方图,也就是还未进行数据复制的直方图。

  其次,第二个直方图是复制后的数据集duplicated_dfinf_dif列的直方图。

  可以看到,经过前述代码的处理,我们原始的数据分布情况已经有了很明显的改变。

  至此,大功告成。

From:https://www.cnblogs.com/fkxxgis/p/18391303
本文地址: http://shuzixingkong.net/article/1631
0评论
提交 加载更多评论
其他文章 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析
这篇文章将用三个版本的归并排序,为大家分析使用协程排序的时间开销(被排序的切片长度由128到1000w)
使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析
如何实现一个通用的接口限流、防重、防抖机制
介绍 最近上了一个新项目,考虑到一个问题,在高并发场景下,我们无法控制前端的请求频率和次数,这就可能导致服务器压力过大,响应速度变慢,甚至引发系统崩溃等严重问题。为了解决这些问题,我们需要在后端实现一些机制,如接口限流、防重复提交和接口防抖,而这些是保证接口安全、稳定提供服务,以及防止错误数据 和
一种优雅的方式整合限流、幂等、防盗刷
大家在工作中肯定遇到过接口被人狂刷的经历,就算没有经历过,在接口开发的过程中,我们也需要对那些容易被刷的接口或者和会消耗公司金钱相关的接口增加防盗刷功能。例如,发送短信接口以及发送邮件等接口,我看了国内很多产品的短信登录接口,基本上都是做了防盗刷,如果不做的话,一夜之间,也许公司都赔完了┭┮﹏┭┮。
一种优雅的方式整合限流、幂等、防盗刷 一种优雅的方式整合限流、幂等、防盗刷 一种优雅的方式整合限流、幂等、防盗刷
gcc/g++编译
编译工具链 我们写程序的时候用的都是集成开发环境 (IDE: Integrated Development Environment),集成开发环境可以极大地方便我们程序员编写程序,但是配置起来也相对麻烦。在 Linux 环境下,我们用的是编译工具链,又叫软件开发工具包(SDK:Software De
gcc/g++编译 gcc/g++编译 gcc/g++编译
iptables 工作过程整理
转载注明出处: 1.概念和工作原理 iptables是Linux系统中用来配置防火墙的命令。iptables是工作在TCP/IP的二、三、四层,当主机收到一个数据包后,数据包先在内核空间处理,若发现目标地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目标不是自身,则会将包丢弃或进行转发。
iptables 工作过程整理 iptables 工作过程整理
Go plan9 汇编:手写汇编
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go plan9 汇编: 打通应用到底层的任督二脉 一文中介绍了从应用程序到汇编指令的转换。本文将结合汇编和 Go 程序实现手写基本的汇编指令,以加深对 Go plan9 汇编的了解。 1. 手写汇编 1.1 全局变量 首先写一个打印整型变
Go plan9 汇编:手写汇编 Go plan9 汇编:手写汇编 Go plan9 汇编:手写汇编
Gluon 编译 JavaFx -> android apk
Gluon 编译 JavaFx -&gt; android apk 本文的内容属 在linux服务器上 搭建 Gluon 编译 android-apk 环境 这一篇文章直接跟着官网操作一次性成功 虚拟机版本 centos8 Architecture: x86-64 开始安装相关前置工具 gcc ve
Gluon 编译 JavaFx -> android apk
Kubernetes利用Volume挂载ConfigMap与Secret
1、概述 在Kubernetes集群中,应用的配置管理是一个关键且复杂的任务。随着应用的扩展和微服务架构的普及,传统的配置文件管理方式已经难以满足动态、灵活的配置需求。幸运的是,Kubernetes提供了强大的配置管理能力,其中ConfigMap和Secret结合Volume挂载的方式是实现这一目标
Kubernetes利用Volume挂载ConfigMap与Secret Kubernetes利用Volume挂载ConfigMap与Secret Kubernetes利用Volume挂载ConfigMap与Secret