Очистка данных в стиле Python с помощью NumPy и Pandas

искусственный интеллект анализ данных
Очистка данных в стиле Python с помощью NumPy и Pandas

Введение в обработку данных

Обработка данных обычно имеет следующие этапы

Коллекция
Очистка/преобразование Очистка данных
ИнтеграцияИнтеграция данных
МоделированиеМоделирование данных
ВизуализацияВизуализация данных

Первые три являются этапом подготовки, а последние два — этапом анализа.

q.JPG

задачи анализа данных

3%60%19%9%9%Время, потраченное дата-инженерамиСборка обучающих наборовтренировочных данныхУборка/организацияСбор данныхMining data for patternothers

% потраченного времени Сборка обучающих наборов обучающих данных 3%

Уборка/организация 60%

Сбор Сбор данных 19%

Данные майнинга для паттерна 9%

others 9%

подготовка данных

Исследование данных

Исследование данных — это процесс создания начального понимания атрибутов (например, распространение или характеристики). Например, размер данных, тип, формат, целостность, взаимосвязь и т. д.

Существует множество инструментов, которые помогут установить ваш личный подход к данным. : MIT DIVE / Python: Matplotlib/Pandas/Numpy

Очистка данных

трудность

  • Обработка пропущенных значений
  • Удалить выбросы
  • устранять несоответствия
  • Обработка зашумленных данных, шумоподавление

данные зашумлены, это влияет на наше понимание и анализ данных. Поэтому нам нужно удалить его перед анализом. Шум данных может быть вызван:

1. Неправильное положение датчика 2. Различные источники данных 3. Сбор данных не стандартизирован 4. Человеческая ошибка, ошибка программирования

данные потеряныОтносится к точке данных, которой нет в исходных данных. Общий метод лечения

w.JPG

Данные содержат выбросы, общий способ найти его

  • Визуальное исследование.
  • статистический тест.
  • Моделирование (линейные модели, ковариации, одноклассовые SVM, локальные выбросы)

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

Преобразование данныхПреобразование данных

метод:

  • Нормализация
  • Агрегация
  • Дискретность

НормализацияИзменяет значение на общий диапазон, но не изменяет разницу между значениями. Нормализация уменьшает влияние домино на способность алгоритма к обучению (в зависимости от алгоритма). Обязательно стандартизируйте функции, неявно взвешивая представление всех функций одинаково.

АгрегацияЭто процесс объединения как минимум двух атрибутов в один (например, двух столбцов данных в один). Это может быть сделано либо автоматически (например, обнаружение корреляции), либо вручную. Агрегация данных снижает изменчивость данных. Он работает со свойствами, а не со значениями.

Подготовка данных с помощью Python

Канал передачи данных:disk.baidu.com/yes/1 бывает 7BQ XT…Код извлечения: 4zh5

Просмотр данных

import matplotlib.pyplot as plt

# readinf the data
df = pd.read_csv("CombinedCyclePowerPlantDirty.csv")

# two samples
print("data samples")
print(df.head(3).T)

# columns and types
print("columns types")
print(df.dtypes)

print("Full Info")
print(df.info())

Просмотрите состав данных через df.info(), вы можете обнаружить, что тип и количество данных разные.

大多数.JPG

очистка данных

df.V.hist()
plt.show()
print("min ", df.V.min())
print("max ", df.V.max())
print("mean ", df.V.mean())

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

Figure_2.png

df = df[df.AP > 0]
df = df[df.AP < 100000]
df = df[df.RH > 0]
df = df[df.RH <= 100]
plt.hist(df.RH)
plt.title("RH")
plt.show()
print(df.info())

def test(value):
    try:
        float(value)
        return True
    except:
        return False

df = df[df.PE.apply(test)]
df.PE = df.PE.apply(float)
print(df.info())#去除了PE中无法被float的数据,并且将数据变成了9502组。

Для очистки данных удалите слишком большие и слишком маленькие значения, чтобы получить следующее изображение

Figure_1.png

Распределение данных более равномерное и интуитивно понятное

e.JPG

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

df.AT = df.AT.apply(lambda x: x.replace("o","0"))#数据中0和o混淆,将o替换为0
df.AT = df.AT.apply(float) #将数据转换为float类型
print(df.info())

Затем очистить неправильные данные в АТ.В это время все данные очищаются, всего 9497 групп

as.JPG

Просмотр взаимосвязи между данными

#在清理数据之后看数据之间的关系
# PE AT
plt.scatter(df.AT,df.PE)
plt.title("PE, vs AT")
plt.show()

Figure_3.png

datasets = {}
for name in df.TCN.unique():
    datasets[name] = df[df.TCN == name]
    plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()

TCN содержит централизованные имена, каждый набор данных создается с каждым именем TCN, а затем на графике мы можем видеть распределение разных имен.Figure_4.png

def corrector(row):
    if row["TCN"] == "Daniel Smithson":
        return (row["AT"]-32)*5/9
    else:
        return row["AT"]


df.AT = df.apply(corrector, axis=1)

datasets = {}
for name in df.TCN.unique():
    datasets[name] = df[df.TCN == name]
    plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()

Figure_5.png