Заказ набора данных по материаловедению (названия свойств, скаляры свойств, формулы)

Вопрос или проблема

Я работаю с набором данных материаловедения и нахожусь в следующей ситуации,

У меня есть данные, организованные следующим образом:

Chemical_ Formula     Property_name            Property_Scalar

    He                Electrical conduc.          1
    NO_2              Resistance                  50
    CuO3              Hardness
    ...               ...                        ...
    CuO3              Fluorescence                300
    He                Toxicity                    39
    NO2               Hardness                    80
    ...               ...                         ...

Как вы можете понять, это действительно беспорядок, потому что одна и та же химическая формула появляется более одного раза во всем наборе данных, но относится к разным рассматриваемым свойствам. Мой вопрос, как я могу легко, возможно, разбить набор данных на более мелкие, соответствуя каждой формуле с ее дескрипторами в ПОРЯДКЕ? Мне действительно нужна помощь с этим… спасибо. (Я использовал вымышленные имена и значения, просто чтобы объяснить свою проблему.)

Я работаю в Jupyter Notebook и использую Pandas.

Я редактирую свой вопрос, пытаясь быть более понятным:

Моя цель – построить несколько гистограмм с (например) n° материалов против проводимости при различных температурах (100K, 200K, 300K). Поэтому мне необходимо иметь как проводимость, так и температуру для каждого материала для четкого сравнения. Например, я думаю, что более удобным было бы получить:

Chemical formula     Conductivity      Temperature

      He                 5                  10K
      NO_2               7                  59K
      CuO_3              10                 300K
      ...                ...                ...
      He                 14                 100K
      NO_2               5                  70K
      ...                ...                ...

Учитывая, что ваш DataFrame:

df2 = pd.DataFrame({
    "Chemical_Formula":["He", "NO_2", "CuO3", "CuO3", "He", "NO2"],
    "Property_name":["Electrical conduc.", "Resistance", "Hardness", "Fluorescence", "Toxicity", "Hardness"],
    "Property_Scalar":[1, 50, 10, 300, 39, 80]
})
Chemical_Formula Property_name Property_Scalar
0 He Electrical conduc. 1
1 NO_2 Resistance 50
2 CuO3 Hardness 10
3 CuO3 Fluorescence 300
4 He Toxicity 39
5 NO2 Hardness 80

Вы можете использовать pivot для “размораживания” этого в широком формате

df3 = df2.pivot(index="Chemical_Formula", columns="Property_name")
Chemical_Formula (‘Property_Scalar’, ‘Electrical conduc.’) (‘Property_Scalar’, ‘Fluorescence’) (‘Property_Scalar’, ‘Hardness’) (‘Property_Scalar’, ‘Resistance’) (‘Property_Scalar’, ‘Toxicity’)
CuO3 nan 300 10 nan nan
He 1 nan nan nan 39
NO2 nan nan 80 nan nan
NO_2 nan nan nan 50 nan

После этого вы можете отбросить столбцы, которые вам не нужны, и построить их.

.

Ответ или решение

Как упорядочить набор данных по материаловедению? Подробное руководство для специалистов

Вы описали ситуацию, в которой вам необходимо работать с неструктурированным набором данных в области материаловедения. Этот набор данных содержит информацию о различных химических формулах и их свойствах, представленную в формате:

Chemical_ Formula     Property_name            Property_Scalar

    He                Electrical conduc.          1
    NO_2              Resistance                  50
    CuO3              Hardness
    ...               ...                        ...
    CuO3              Fluorescence                300
    He                Toxicity                    39
    NO2               Hardness                    80
    ...               ...                         ...

Проблема

Ваша основная проблема заключается в неконсолидированном виде данных, где одна и та же химическая формула может встречаться несколько раз, но с различными свойствами. Вам необходимо структурировать данные таким образом, чтобы можно было легко их анализировать и использовать для различных нужд, например, построения гистограмм.

Решение с использованием Pandas

Для решения данной задачи в Python в среде Jupyter Notebook и с использованием библиотеки Pandas можно применить метод pivot, чтобы преобразовать таблицу в широкий формат. Это позволит вам организовать данные, сгруппировав их по химическим формулам и предусмотрев отдельные столбцы для каждого свойства.

Шаги выполнения

  1. Изучение исходных данных:
    Начнем с создания DataFrame на основе представленного вами набора данных.

    import pandas as pd
    
    df2 = pd.DataFrame({
       "Chemical_Formula": ["He", "NO_2", "CuO3", "CuO3", "He", "NO2"],
       "Property_name": ["Electrical conduc.", "Resistance", "Hardness", "Fluorescence", "Toxicity", "Hardness"],
       "Property_Scalar": [1, 50, 10, 300, 39, 80]
    })
  2. Преобразование данных:
    Применим метод pivot для реорганизации таблицы в широкий формат:

    df3 = df2.pivot(index="Chemical_Formula", columns="Property_name", values="Property_Scalar")

    После выполнения этого кода, вы получите данные в формате, где каждая химическая формула будет иметь свои соответствующие значения свойств в одной строке.

  3. Обработка и анализ данных:
    На данном этапе вы сможете удалить ненужные столбцы или строки, заполнить пустые значения, если это необходимо, и подготовить данные для дальнейшего анализа.

  4. Построение графиков:
    После структурирования данных можно использовать библиотеки, такие как Matplotlib или Seaborn, для построения графиков по проводу или другим свойствам, изменяющимся в зависимости от температуры, если эта информация доступна в вашем наборе данных.

Заключение

Данный подход позволит вам привести данные к более упорядоченному виду, что существенно облегчит их визуализацию и анализ. Это также даст возможность создавать подробные и наглядные графики, решая вашу задачу построения гистограмм.

Использование методологии Pandas для работы с массивами данных в Python помогает оптимизировать выполнение подобных задач и позволяет автоматизировать их до значительной степени с минимальными затратами времени.

Оцените материал
Добавить комментарий

Капча загружается...