• 使用pandas将表格中的数据进行处理


    任务描述:当前有一份excel表格数据,里面存在缺失值,需要对缺失的数据到es数据库中进行查找并对其进行把缺失的数据进行补全。excel表格数据如下所示:

    一、构建es库中的数据

    1.1 创建索引:

    1. # 创建physical_examination索引
    2. PUT /physical_examination
    3. {
    4. "settings": {
    5. "index": {
    6. "number_of_shards": "1",
    7. "number_of_replicas": "1"
    8. }
    9. },
    10. "mappings": {
    11. "properties": {
    12. "nums": {
    13. "type": "integer"
    14. },
    15. "name": {
    16. "type": "text"
    17. },
    18. "sex": {
    19. "type": "text"
    20. },
    21. "phone": {
    22. "type": "integer"
    23. },
    24. "result": {
    25. "type": "text"
    26. }
    27. }
    28. }
    29. }

    1.2 插入数据:   

    注意:json数据不能格式化换行,否则报错】

    1. # 向physical_examination索引中添加数据
    2. POST physical_examination/_bulk
    3. {"index":{"_id":"1"}}
    4. {"nums":1,"name":"刘一","sex":"男","phone":1234567891,"result":"优秀"}
    5. {"index":{"_id":"2"}}
    6. {"nums":2,"name":"陈二","sex":"男","phone":1234567892,"result":"优秀"}
    7. {"index":{"_id":"3"}}
    8. {"nums":3,"name":"张三","sex":"男","phone":1234567893,"result":"优秀"}
    9. {"index":{"_id":"4"}}
    10. {"nums":4,"name":"李四","sex":"男","phone":1234567894,"result":"优秀"}
    11. {"index":{"_id":"5"}}
    12. {"nums":5,"name":"王五","sex":"男","phone":1234567895,"result":"优秀"}

    1.3 查询数据:

    注意:默认查询索引下的所有数据】

    1. # 查询索引中的所有数据
    2. GET physical_examination/_search
    3. {
    4. "query": {
    5. "match_all": {}
    6. }
    7. }

    二、对excel表格中的数据处理操作

    2.1 导出es查询的数据

    方法一:直接在kibana或postman查询的结果中进行复制粘贴到一个文档。

    方法二:使用kibana导出数据。

    方法三:使用postman导出数据保存到本地。

    使用python处理数据,获取需要的数据。

    示例代码:

    1. # 读取json中体检信息
    2. with open('./data/physical_examination.json', 'r', encoding='utf-8') as f:
    3. data_json = f.read()
    4. print(data_json)
    5. # 处理json数据中的异常数据
    6. if 'false' in data_json:
    7. data_json = data_json.replace('false', "False")
    8. data_json = eval(data_json)
    9. print(data_json)
    10. print(data_json['hits']['hits'])
    11. print('*' * 100)
    12. valid_data = data_json['hits']['hits']
    13. need_data = []
    14. for data in valid_data:
    15. print(data['_source'])
    16. need_data.append(data['_source'])
    17. print(need_data)

    读取缺失数据的excel表格,把缺失的数据填补进去。

    1. # 读取需要填补数据的表格
    2. data_xlsx = pd.read_excel('./data/体检表.xlsx', sheet_name='Sheet1')
    3. # print(data_xlsx)
    4. # 获取excel表格的行列
    5. row, col = data_xlsx.shape
    6. print(row, col)
    7. # 修改表格中的数据
    8. for i in range(row):
    9. bb = data_xlsx.iloc[i]
    10. print(bb['姓名'], bb['手机号'])
    11. if pd.isnull(bb['手机号']):
    12. bb['手机号'] = '666'
    13. for cc in need_data:
    14. if cc['name'] == bb['姓名']:
    15. bb['手机号'] = cc['phone']
    16. data_xlsx.iloc[i, 3] = bb['手机号']
    17. print(bb['姓名'], bb['手机号'])
    18. print("-" * 100)
    19. print(data_xlsx)

    将最终处理好的数据保存在新建的文件中。

    1. # 保存数据到新文件中
    2. data_xlsx.to_excel('./data/new_data.xlsx', sheet_name='Sheet1', index=False, header=True)

    完整代码如下:

    1. import pandas as pd
    2. # 读取json中体检信息
    3. with open('./data/physical_examination.json', 'r', encoding='utf-8') as f:
    4. data_json = f.read()
    5. print(data_json)
    6. # 处理json数据中的异常数据
    7. if 'false' in data_json:
    8. data_json = data_json.replace('false', "False")
    9. data_json = eval(data_json)
    10. print(data_json)
    11. print(data_json['hits']['hits'])
    12. print('*' * 100)
    13. valid_data = data_json['hits']['hits']
    14. need_data = []
    15. for data in valid_data:
    16. print(data['_source'])
    17. need_data.append(data['_source'])
    18. print(need_data)
    19. # 读取需要填补数据的表格
    20. data_xlsx = pd.read_excel('./data/体检表.xlsx', sheet_name='Sheet1')
    21. # print(data_xlsx)
    22. # 获取excel表格的行列
    23. row, col = data_xlsx.shape
    24. print(row, col)
    25. # 修改表格中的数据
    26. for i in range(row):
    27. bb = data_xlsx.iloc[i]
    28. print(bb['姓名'], bb['手机号'])
    29. if pd.isnull(bb['手机号']):
    30. bb['手机号'] = '666'
    31. for cc in need_data:
    32. if cc['name'] == bb['姓名']:
    33. bb['手机号'] = cc['phone']
    34. data_xlsx.iloc[i, 3] = bb['手机号']
    35. print(bb['姓名'], bb['手机号'])
    36. print("-" * 100)
    37. print(data_xlsx)
    38. # 保存数据到新文件中
    39. data_xlsx.to_excel('./data/new_data.xlsx', sheet_name='Sheet1', index=False, header=True)

    运行效果,最终处理好的数据如下所示:

  • 相关阅读:
    极端气候肆虐催化,碳中和带出了一个“再生时代”
    python_requests笔记
    Stacked Hourglass Networks for Human Pose Estimation(ECCV2016)
    VSCode使用SSH免密登录远程主机
    java毕业设计儿童教育系统Mybatis+系统+数据库+调试部署
    丢失d3dx11_43.dll如何修复,d3dx11_43.dll丢失的5种解决方法
    Idean中的Maven
    Win11缺少dll文件怎么办?Win11系统找不到dll文件修复方法
    从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(七) 开发环境使用轻量级在线文档解决知识分享问题
    shell 拒绝恶意连接脚本 centos7.x拒绝恶意连接脚本
  • 原文地址:https://blog.csdn.net/weixin_44799217/article/details/126559956