从python中的嵌套结构中构建带有pandas的数据框

贾维斯

我想用一个有点过于复杂的数据集来实现机器学习。我想使用 Pandas,然后使用 skit-learn 中的一些内置模型。

JSON 文件中给出了数据外观,示例如下所示:

{
  "demo_Profile": {
    "sex": "male",
    "age": 98,
    "height": 160,
    "weight": 139,
    "bmi": 5,
    "someinfo1": [
      "some_more_info1"
    ],
    "someinfo2": [
      "some_more_inf2"
    ],
    "someinfo3": [
      "some_more_info3"
    ],
  },
  "event": {
    "info_personal": {
      "info1": 219.59,
      "info2": 129.18,
      "info3": 41.15,
      "info4": 94.19,
    },
    "symptoms": [
      {
        "name": "name1",
        "socrates": {
          "associations": [
            "associations1"
          ],
          "onsetType": "onsetType1",
          "timeCourse": "timeCourse1"
        }
      },
      {
        "name": "name2",
        "socrates": {
          "timeCourse": "timeCourse2"
        }
      },
      {
        "name": "name3",
        "socrates": {
          "onsetType": "onsetType2"
        }
      },
      {
        "name": "name4",
        "socrates": {
          "onsetType": "onsetType3"
        }
      },
      {
        "name": "name5",
        "socrates": {
          "associations": [
            "associations2"
          ]
        }
      }
    ],
    "labs": [
      {
        "name": "name1 ",
        "value": "valuelab"
      }
    ]
  }
}

我想创建一个考虑这种“嵌套数据”的熊猫数据框,但我不知道如何构建一个除了“单个参数”之外还考虑“嵌套参数”的数据框

例如,我不知道如何将包含“单个参数”的“demo_Profile”与症状合并,症状是字典列表,在相同情况下为单个值,在其他情况下为列表。

有人知道处理这个问题的任何方法吗?

编辑*********

上面显示的 JSON 只是一个示例,在其他情况下,列表中的值数量以及症状数量会有所不同。因此,上面显示的示例并非适用于所有情况。

phngs

扁平化 json 数据的一种快速简便的方法是使用 flatten_json 包,该包可以通过 pip 安装

pip install flatten_json

我希望您有一个包含许多条目的列表,这些条目看起来像您提供的条目。因此,以下代码将为您提供所需的结果:

import pandas as pd
from flatten_json import flatten

json_data = [{...patient1...}, {patient2...}, ...]

flattened = (flatten(entry) for entry in json_data)
df = pd.DataFrame(flattened)

在扁平化的数据中,列表条目以数字为后缀(我在“实验室”列表中添加了另一名患者,并添加了一个附加条目):

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| index   demo_Profile_age  demo_Profile_bmi  demo_Profile_height demo_Profile_sex demo_Profile_someinfo1_0 demo_Profile_someinfo2_0 demo_Profile_someinfo3_0  demo_Profile_weight  event_info_personal_info1  event_info_personal_info2  event_info_personal_info3  event_info_personal_info4 event_labs_0_name event_labs_0_value event_labs_1_name event_labs_1_value event_symptoms_0_name event_symptoms_0_socrates_associations_0 event_symptoms_0_socrates_onsetType event_symptoms_0_socrates_timeCourse event_symptoms_1_name event_symptoms_1_socrates_timeCourse event_symptoms_2_name event_symptoms_2_socrates_onsetType event_symptoms_3_name event_symptoms_3_socrates_onsetType event_symptoms_4_name event_symptoms_4_socrates_associations_0 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 0                98                 5                  160             male          some_more_info1           some_more_inf2          some_more_info3                  139                     219.59                     129.18                      41.15                      94.19            name1            valuelab               NaN                NaN                 name1                            associations1                          onsetType1                          timeCourse1                 name2                          timeCourse2                 name3                          onsetType2                 name4                          onsetType3                 name5                            associations2      |
| 1                98                 5                  160             male          some_more_info1           some_more_inf2          some_more_info3                  139                     219.59                     129.18                      41.15                      94.19            name1            valuelab            name2          valuelabr2                 name1                            associations1                          onsetType1                          timeCourse1                 name2                          timeCourse2                 name3                          onsetType2                 name4                          onsetType3                 name5                            associations2      |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

flatten 方法包含附加参数以删除不需要的列或前缀。

注意:虽然此方法可以根据需要为您提供扁平化的 DataFrame,但我希望您在将数据集输入机器学习算法时会遇到其他问题,具体取决于您的预测目标是什么以及您希望如何将数据编码为特征.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中带有指针的嵌套结构

来自分类Dev

C中带有指针的嵌套结构

来自分类Dev

从具有嵌套结构的数据框中创建随机样本

来自分类Dev

在python中展平嵌套结构

来自分类Dev

在python中访问嵌套结构

来自分类Dev

带有列表的嵌套JSON中的pandas数据框

来自分类Dev

使用scala从spark中的嵌套结构数据框中获取值

来自分类Dev

c中的嵌套结构

来自分类Dev

Pandas 中嵌套结构化 json 的解析

来自分类Dev

使用指针访问嵌套结构中的数据

来自分类Dev

使用指针访问嵌套结构中的数据

来自分类Dev

在KSQLDB中插入具有嵌套结构的数组

来自分类Dev

C++中具有动态大小的嵌套结构

来自分类Dev

从VBA访问C ++中的嵌套结构

来自分类Dev

TensorFlow中的嵌套结构是什么?

来自分类Dev

在BigQuery中取消嵌套结构

来自分类Dev

pyparsing中嵌套结构的技巧

来自分类Dev

在C ++中嵌套结构JSON样式

来自分类Dev

更新Clojure中的深层嵌套结构

来自分类Dev

c中的嵌套结构/链接列表

来自分类Dev

访问嵌套结构中的成员

来自分类Dev

在 C++ 中打包嵌套结构

来自分类Dev

如何访问嵌套结构中的值

来自分类Dev

如何正确构建和嵌套结构以在Go中解组SOAP响应?

来自分类Dev

python和ctypes访问带有嵌套结构的c++类

来自分类Dev

带有负载库Matlab的嵌套结构

来自分类Dev

带有负载库Matlab的嵌套结构

来自分类Dev

带有嵌套结构(集合)条件的 Mongo 查询

来自分类Dev

Spark Dataframe - 如何操作带有嵌套结构的行?