Python使用pandas将表格数据进行处理
作者:IT之一小佬 发布时间:2023-10-08 06:23:55
标签:Python,pandas,表格,数据,处理
前言
任务描述:
当前有一份excel表格数据,里面存在缺失值,需要对缺失的数据到es数据库中进行查找并对其进行把缺失的数据进行补全。
excel表格数据如下所示:
一、构建es库中的数据
1.1 创建索引
# 创建physical_examination索引
PUT /physical_examination
{
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
},
"mappings": {
"properties": {
"nums": {
"type": "integer"
},
"name": {
"type": "text"
},
"sex": {
"type": "text"
},
"phone": {
"type": "integer"
},
"result": {
"type": "text"
}
}
}
}
1.2 插入数据
【注意:json数据不能格式化换行,否则报错】
# 向physical_examination索引中添加数据
POST physical_examination/_bulk
{"index":{"_id":"1"}}
{"nums":1,"name":"刘一","sex":"男","phone":1234567891,"result":"优秀"}
{"index":{"_id":"2"}}
{"nums":2,"name":"陈二","sex":"男","phone":1234567892,"result":"优秀"}
{"index":{"_id":"3"}}
{"nums":3,"name":"张三","sex":"男","phone":1234567893,"result":"优秀"}
{"index":{"_id":"4"}}
{"nums":4,"name":"李四","sex":"男","phone":1234567894,"result":"优秀"}
{"index":{"_id":"5"}}
{"nums":5,"name":"王五","sex":"男","phone":1234567895,"result":"优秀"}
1.3 查询数据
【注意:默认查询索引下的所有数据】
# 查询索引中的所有数据
GET physical_examination/_search
{
"query": {
"match_all": {}
}
}
二、对excel表格中的数据处理操作
2.1 导出es查询的数据
方法一:直接在kibana或postman查询的结果中进行复制粘贴到一个文档。
方法二:使用kibana导出数据。
方法三:使用postman导出数据保存到本地。
使用python处理数据,获取需要的数据。
示例代码:
# 读取json中体检信息
with open('./data/physical_examination.json', 'r', encoding='utf-8') as f:
data_json = f.read()
print(data_json)
# 处理json数据中的异常数据
if 'false' in data_json:
data_json = data_json.replace('false', "False")
data_json = eval(data_json)
print(data_json)
print(data_json['hits']['hits'])
print('*' * 100)
valid_data = data_json['hits']['hits']
need_data = []
for data in valid_data:
print(data['_source'])
need_data.append(data['_source'])
print(need_data)
读取缺失数据的excel表格,把缺失的数据填补进去。
# 读取需要填补数据的表格
data_xlsx = pd.read_excel('./data/体检表.xlsx', sheet_name='Sheet1')
# print(data_xlsx)
# 获取excel表格的行列
row, col = data_xlsx.shape
print(row, col)
# 修改表格中的数据
for i in range(row):
bb = data_xlsx.iloc[i]
print(bb['姓名'], bb['手机号'])
if pd.isnull(bb['手机号']):
bb['手机号'] = '666'
for cc in need_data:
if cc['name'] == bb['姓名']:
bb['手机号'] = cc['phone']
data_xlsx.iloc[i, 3] = bb['手机号']
print(bb['姓名'], bb['手机号'])
print("-" * 100)
print(data_xlsx)
将最终处理好的数据保存在新建的文件中。
# 保存数据到新文件中
data_xlsx.to_excel('./data/new_data.xlsx', sheet_name='Sheet1', index=False, header=True)
完整代码如下:
import pandas as pd
# 读取json中体检信息
with open('./data/physical_examination.json', 'r', encoding='utf-8') as f:
data_json = f.read()
print(data_json)
# 处理json数据中的异常数据
if 'false' in data_json:
data_json = data_json.replace('false', "False")
data_json = eval(data_json)
print(data_json)
print(data_json['hits']['hits'])
print('*' * 100)
valid_data = data_json['hits']['hits']
need_data = []
for data in valid_data:
print(data['_source'])
need_data.append(data['_source'])
print(need_data)
# 读取需要填补数据的表格
data_xlsx = pd.read_excel('./data/体检表.xlsx', sheet_name='Sheet1')
# print(data_xlsx)
# 获取excel表格的行列
row, col = data_xlsx.shape
print(row, col)
# 修改表格中的数据
for i in range(row):
bb = data_xlsx.iloc[i]
print(bb['姓名'], bb['手机号'])
if pd.isnull(bb['手机号']):
bb['手机号'] = '666'
for cc in need_data:
if cc['name'] == bb['姓名']:
bb['手机号'] = cc['phone']
data_xlsx.iloc[i, 3] = bb['手机号']
print(bb['姓名'], bb['手机号'])
print("-" * 100)
print(data_xlsx)
# 保存数据到新文件中
data_xlsx.to_excel('./data/new_data.xlsx', sheet_name='Sheet1', index=False, header=True)
运行效果,最终处理好的数据如下所示:
来源:https://blog.csdn.net/weixin_44799217/article/details/126559956


猜你喜欢
- 在输入框里面预设一段提示文字,当焦点在输入框的时候清空这段文字,这在目前来说已经不是什么新鲜事了。淘宝的搜索框就用到了这样一种设计:这种设计
- 很久以前写过如何成为优秀的设计师,近半年来经常做设计评审,有很多感触,顺便写一点下来,我们的Blog也应该有更高的更新频率。言归正传,我认为
- 本文实例讲述了MySQL 表数据的导入导出操作。分享给大家供大家参考,具体如下:数据导出1. 使用 SELECT ..
- 在本篇的开始之前,我必须阐明,我们对数组无论是索引还是切片,我是通过编号(或称为序列号)来进行操作,请记住:无论是 0轴(行)还是 1轴(列
- 迄今为止,导出/导入工具集仍是跨多个平台转移数据所需劳动强度最小的首选实用工具,尽管人们常常抱怨它速度太慢。导入只是将每条记录从导出转储文件
- 一、前言MYSQL中MDL锁一直是一个比较让人比较头疼的问题,我们谈起锁一般更加倾向于INNODB下层的gap lock、next key
- 一、安装相关的模块首先第一步的话我们需要安装相关的模块,通过pip命令来安装pip install gif另外由于gif模块之后会被当做是装
- 临时表可能是非常有用的,在某些情况下,保持临时数据。最重要的是应该知道的临时表是,他们将当前的客户端会话终止时被删除。临时表中添加MySQL
- 先看一道GIL面试题:描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序
- 部署网站前查看一下系统是否已经安装CGI1、启动iis服务器,打开IIS服务器打开IIS服务器,点击网站,右击“添加网站”2、创建网站点击“
- 一、下载MySql,安装MySql官网下载MySql数据库官网下载链接地址:https://dev.mysql.com/downloads/
- 栅格就是你对页面版式的规划你日常所见的许多页面都有栅格存在。你可能注意不到,但它确实存在,并且支撑着设计内容,建立整体的架构,引导着页面的元
- 本文采用拉普拉斯算子计算影像的模糊程度,小于阈值的影像被认为是模糊的,从而被移动到专门存放模糊影像的文件夹。本文只使用cv2和shutil库
- 本文实例讲述了Python基于time模块求程序运行时间的方法。分享给大家供大家参考,具体如下:要记录程序的运行时间可以利用Unix系统中,
- Python3标准库操作系统接口os模块提供了不少与操作系统相关联的函数。>>> import os>>>
- 起因之前写了一篇《 vue2.0+vue-video-player实现hls播放》,里边有提到在用vue-video-player之前,我尝
- 本文研究的主要是Python面向对象之继承的相关内容,具体如下。Python 继承即一个派生类(derived class)继承基类(bas
- 比如可以定义开学时间为2009年2月8日,然后程序可以算出,今天距开学那天已经是第几周,非常急需这个程序,忘高手们能提供一个,先谢谢了!自己
- 世界疫情数据下载请点击》》:疫情数据下载注:此数据是2022年3月12号的结果,其中透明的地方代表确诊人数小于10万人,白色的地方代表无该国
- SQL,数据分析岗的必备技能,你可以不懂Python,R,不懂可视化,不懂机器学习。但SQL,你必须懂。要不然领导让你跑个数据来汇.....