【工程实践】使用pandas的记录

news2024/9/28 5:33:41

前言

        工作中处理数据时,经常需要使用pandas,记录一些工作中使用pandas的习惯。

1. 合并数据

#读取原始数据
data1 = pd.read_excel('/home/zhenhengdong/WORk/Classfier/Dates/Original/1.xlsx')
data2 = pd.read_excel('/home/zhenhengdong/WORk/Classfier/Dates/Original/2.xlsx')
data3 = pd.read_excel('/home/zhenhengdong/WORk/Classfier/Dates/Original/3.xlsx')
data4 = pd.read_excel('/home/zhenhengdong/WORk/Classfier/Dates/Original/20230712.xlsx')
#新建data
data  = pd.DataFrame()
#有选择的将原始数据进行合并
data['序号'] = pd.concat([data4['序号'],data3['序号'],data1['序号'],data2['序号']], ignore_index=False)
data['内容'] = pd.concat([data4['内容'],data3['内容'],data1['内容'],data2['内容']], ignore_index=False)
data['一级分类'] = pd.concat([data4['一级分类'],data3['一级分类'],data1['一级分类'],data2['一级分类']], ignore_index=False)
data['二级分类'] = pd.concat([data4['二级分类'],data3['二级分类'],data1['二级分类'],data2['二级分类']], ignore_index=False)
data['反馈类型'] = pd.concat([data4['反馈类型'],data3['反馈类型'],data1['反馈类型'],data2['反馈类型']], ignore_index=False)

2.删除数据

2.1 删除行

        index 参数指定了要删除的行,inplace 参数表示是否在原数据集上进行操作。

#根据行索引删除行
data.drop(index=[0, 4], inplace=True)

2.2 删除列

        columns 参数指定了要删除的列,inplace 参数表示是否在原数据集上进行操作。

#根据列名称删除列
data.drop(columns=['class'], inplace=True)

         也可以使用del做删除。

 del data['class']

2.3 删除重复行

        subset 参数指定需要检查重复的列,默认值为所有列。inplace 参数表示是否在原数据集上进行操作。keep=last表示保留最后一个重复行,keep=first表示保留第一个重复行。

data.drop_duplicates(subset="gender", inplace=True,keep='last')

2.4 删除缺失行

        axis:轴。0或'index',表示按行删除;1或'columns',表示按列删除。

        how:筛选方式。‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;‘all’,表示该行/列全部都为空值,就删除该行/列。

        thresh:非空元素最低数量。int型,默认为None。如果该行/列中,非空元素数量小于这个值,就删除该行/列。

        subset:子集。列表,元素为行或者列的索引。如果axis=0或者‘index’,subset中元素为列的索引;如果axis=1或者‘column’,subset中元素为行的索引。由subset限制的子区域,是判断是否删除该行/列的条件判断区域。

        inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。

dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
# 删除包含缺失值的行
data.dropna()
# 删除全部为缺失值的行
data.dropna(how='all')
# 删除至少有2个缺失值的行
data.dropna(thresh=2)
# 根据指定的列删除包含缺失的行
data.dropna(subset=['列名'])

2.5 按条件删除行

2.5.1 符合条件的随机删除

        删除反馈类型为BUG问题的行,随机删除掉44个。

from random import sample
drop_index_1 =  data[(data.反馈类型 == 'BUG问题')].index.tolist()
drop_index_2 = sample(drop_index_1, k = 44)
data =  data.drop(index = drop_index_2)
#重新设置索引
data.reset_index(drop=True, inplace=True)

2.5.2 符合条件的全部删除

data =  data.drop(index = data[(data.反馈类型 == '其他')].index.tolist())

3.重新设置索引

data.reset_index(drop=True, inplace=True)

4.查看类别个数

for index,key_values in enumerate(data.联合分类.value_counts().items()):
    print(index,key_values)

data['标注类型'].value_counts()

 5.遍历data

        通过data.iloc[index]取出指定行的数据。

content_list = []
label_list = []
for index in range(len(data)):
    content = data.iloc[index]['内容']
    label = data.iloc[index]['标注类型']
    content_list.append(content)
    label_list.append(label)

6.新建data

new_data = pd.DataFrame()
new_data['content'] = content_list
new_data['label'] = label_list

7.统计并设置标签

Feedback_type = {}
for index,item in enumerate(list(new_data['label'].value_counts().keys())):
    Feedback_type[item]  = index
def add_Feedback_type_index(Feed_type):
    index = Feedback_type.get(Feed_type)
    return index
new_data['feedback_type_label'] = new_data['label'].apply(add_Feedback_type_index)

8.保存映射文件 

with open("Feedback_type.json", "w") as outfile:
    json.dump(Feedback_type, outfile,ensure_ascii=False)

9.统计数据生成excel

def Statistics(data):
    keys = []
    values = []
    for key_values in (data):
        keys.append(key_values[0])
        values.append(key_values[1])
    pkg_name_index_xlsx=pd.DataFrame()
    pkg_name_index_xlsx['类目'] = keys
    pkg_name_index_xlsx['数量'] = values
    pkg_name_index_xlsx.to_excel(excel_writer= r"联合分类.xlsx")
Statistics(data.联合分类.value_counts().items())

10.存储data

#将合并的data存储
data.to_csv('./Total_data.csv',index = False,encoding='utf8')

11.数据负采样

#统计联合分类中数量大于4000的类目
drop_element_list = []
for index,key_values in enumerate(data.联合分类.value_counts().items()):
    if key_values[1] > 4000:
        drop_element_list.append(key_values[0])

#对其删除1200条
from random import sample
def drop_element(data,drop_element_list):
    for index in range(len(drop_element_list)):
        element = drop_element_list[index]
        result = 1200
        drop_index_1 =  data[(data.联合分类 == element)].index.tolist()
        drop_index_2 = sample(drop_index_1, k=result)
        data =  data.drop(index = drop_index_2)
        data.reset_index(drop=True, inplace=True)
    return data
data = drop_element(data,drop_element_list)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/906921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

石油化工钻井消防vr虚拟教学实训增加学员参与感

随着石油化工企业的生产规模和数量不断扩大,石油化工火灾事故常有发生,给企业及当地居民造成难以挽回的严重损失,为了避免石油化工火灾安全事故发生,VR安全培训公司深圳华锐视点制作的石油化工火灾vr模拟应急救援系统,…

java+springboot+mysql小区自来水实时监控管理系统

项目介绍: 使用javaspringbootmysql开发的小区自来水实时监控管理系统,系统包含超级管理员,系统管理员、用户角色,功能如下: 超级管理员:管理员管理;楼栋管理;租户管理、用水管理&…

远程真机测试为什么需要应用性能指标监控?

我们在使用app、小程序等手机应用的时候,经常会发生“卡死“等现象。”卡死“会让用户认为你的app不可信,从而引发删除等情况。我们辛辛苦苦、花费大量精力和费用推广的app就失败了。 因此,我们就需要知道,app在使用时候&#…

ROS_LINUX入门学习笔记=2=

B站ros机器人工匠阿杰入门教程 rqt_robot_steering 控制小乌龟 在index ros .rog中查找相关的包:rosindex 下图是rqt_robot_steering的简介 其中可以查看github源码地址 website可以查看效果图 下载相关的包 sudo apt install ros-kinetic-rqt-robot-steering r…

项目实战笔记2:硬技能(上)

序: 本节串讲了项目管理硬技能,有些术语可以结合书或者网上资料来理解。没有想书上讲的那样一一列举。 做计划 首先强调为什么做计划? 计划就是各个角色协同工作的基准(后面做风险监控、进度的监控),贯穿于…

【华为认证】HCIA真题20道(看看HCIA的技术你掌握了多少)

正在备考华为认证的小伙伴应该知道,除了理论知识外,刷题也相当重要,周工这里有一份HCIAHCIP-Datacom带解析的最新题库 点赞留言 即可领取。 下图所示,主机A和主机B使用哪种网络设备可以实现通信?( &…

设计模式-工厂设计模式

核心思想 在简单工厂模式的基础上进一步的抽象化具备更多的可扩展和复用性,增强代码的可读性使添加产品不需要修改原来的代码,满足开闭原则 优缺点 优点 符合单一职责,每个工厂只负责生产对应的产品符合开闭原则,添加产品只需添…

骨传导耳机品牌推荐,精选十大骨传导耳机品牌推荐

随着手机作为大众日常生活不可分割的一部分,使用耳机也成为了许多人的日常。相较于有线耳机,有越来越多的人愿意去选择无线耳机,骨传导耳机的受众也进一步提高了,那么面对市面上眼花缭乱的品牌,该如何选择呢&#xff1…

怎样清理电脑内存?分享4个快速清理方法!

“求救求救!电脑总是没内存怎么办啊?明明没有存很多东西啊,电脑容量也很大,总是没内存真的很影响心情哎!有什么方法可以解决这个问题吗?” 电脑内存的清理是维护系统性能的重要步骤之一。如果电脑内存不足&…

Powered by Paraverse | 平行云助力彼真科技打造演出“新物种”

01 怎么看待虚拟演出 彼真科技 我们怎么看待虚拟演出? 虚拟演出给音乐人或者音乐行业带来了哪些新的机会?通过呈现一场高标准的虚拟演出,我们的能力延伸点在哪里? 先说一下我们认知里的虚拟演出的本质: 音乐演出是一…

一天赚四五十的副业,可以试试这几种

大家都希望能够有额外的零花钱,尤其是对于学生和不收入稳定的人来说。今天,我将分享一些简单实用的赚钱技巧,帮助你每天赚取四五十的零花钱,让你的钱包更丰盈。 第一种:蚂蚁路客和友活来了 支付宝旗下两款接任务拍门…

消息队列——RabbitMQ(一)

MQ的相关概念 什么事mq MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中&#xff…

智汇云舟携三大系列产品亮相第68届中国安防工程商集成商大会

8月18日,由中国安全防范产品行业协会指导,永泰传媒主办的中国安防工程商(系统集成商)大会暨第68届中国安防新产品、新技术成果展示在广州盛大开幕。 来自华南各省、市安防协(学)会及全国安防工程商、系统集…

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…

C++系列-浅拷贝和深拷贝

浅拷贝和深拷贝 浅拷贝深拷贝 如果属性有在堆区开辟内存的,一定要自己提供拷贝构造函数,进行深拷贝,以免堆区内存重复释放。 浅拷贝 浅拷贝会带来的问题是堆区空间重复释放 因为是浅拷贝,在调用第二个对象的析构函数时&#xff0…

React前端开发架构:构建现代响应式用户界面

在当今的Web应用开发中,React已经成为最受欢迎的前端框架之一。它的出色性能、灵活性和组件化开发模式,使得它成为构建现代响应式用户界面的理想选择。在这篇文章中,我们将探讨React前端开发架构的核心概念和最佳实践,以帮助您构建…

Googel Earth Engine 配置Python 环境

1. 安装并配置python环境 此处不再赘述 2. 安装 earthengine-api pip install earthengine-api C:\Users\xixi>pip install earthengine-api Collecting earthengine-apiUsing cached earthengine_api-0.1.363-py3-none-any.whl Requirement already satisfied: google-c…

验证评估守护关基安全 赛宁数字孪生靶场创新实践

​​近日,由赛宁网安主办,ISC互联网安全大会组委会协办的第十一届互联网安全大会(ISC 2023)安全运营实践论坛圆满结束。赛宁网安产品总监史崯出席并作出主题演讲:《基于数字孪生靶场如何开展验证评估》,同时…

Tinderbox 8 for mac介绍安装

Tinderbox 8是一款适用于Mac系统的可视化个人笔记工具,可以帮助您以地图形式存储笔记,生成时间轴,并在完成后将它们作为HTML文件共享。现在Tinderbox可以编写脚本,让Tinderbox与您的所有其他工具更紧密地协作 笔记工具 Tinderbox存…

Centos7卸载|安装JDK1.8|Xshell7批量控制多个终端

一: 使用yum安装的好处是较为方便|环境变量自动配置完成。 1.1: 执行下面的命令,检查是否已安装了jdk # 查看当前是否安装了JDK, [rootwww ~]# rpm -qa |grep java [rootwww ~]# rpm -qa |grep jdk [rootwww ~]# rpm -qa |grep gcj [rootwww ~]# rpm -qa | grep -…