«Анализ данных Pandas» (3) - Реконструкция данных 1

анализ данных
«Анализ данных Pandas» (3) - Реконструкция данных 1

обзор:Мы изучили основы Pandas в предыдущей главе.Во второй главе мы начали входить в бизнес-часть анализа данных.В первом разделе второй главы мы узналиочистка данных, эта часть очень важна, только когда данные станут относительно чистыми, наш последующий анализ данных может быть более мощным. В этом разделе нам нужно сделать реконструкцию данных, которая все еще относится к сфере понимания данных (подготовки).

Перед запуском импортируйте пакеты numpy, pandas и данные.

# 导入基本库
import pandas as pd
import numpy as np
# 载入data文件中的:train-left-up.csv
data=pd.read_csv(r'data\train-left-up.csv')
data

image.png

2 Глава 2: Реконструкция данных

2.4 Объединение данных

2.4.1 Задача 1: Загрузите все данные в папку данных и наблюдайте взаимосвязь между данными

#写入代码
text_left_up = pd.read_csv("data/train-left-up.csv")
text_left_down = pd.read_csv("data/train-left-down.csv")
text_right_up = pd.read_csv("data/train-right-up.csv")
text_right_down = pd.read_csv("data/train-right-down.csv")
#写入代码
text_left_up.head()

image.png

text_left_down.head()

image.png

text_right_up.head()

image.png

text_right_down.head()

image.png

2.4.2: Задача 2: Используйте метод concat: горизонтально объедините данные train-left-up.csv и train-right-up.csv в одну таблицу и сохраните эту таблицу как result_up

#写入代码
result_up=pd.concat([text_left_up,text_right_up],axis=1)
result_up.head()

image.png

pd.concat(object,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False)

Описание общего параметра

  • объект: серия, кадр данных или список последовательностей, состоящих из панелей
  • ось: ось, которую нужно объединить и соединить, 0 — строка, 1 — столбецЗдесь вы можете вспомнить, что ось = 1 — это горизонтальное слияние, а ось = 0 — вертикальное слияние.
  • join: режим соединения внутренний или внешний

2.4.3 Задача 3: Используйте метод concat: горизонтально объедините train-left-down и train-right-down в одну таблицу и сохраните эту таблицу как result_down. Затем результаты result_up и result_down вертикально объединяются в результат.

#写入代码
result_down=pd.concat([text_left_down,text_right_down],axis=1)
result=pd.concat([result_up,result_down],axis=0)
result.head()

image.png

2.4.4 Задача 4. Используйте собственный метод соединения и добавления фрейма данных: выполните задачи задачи 2 и задачи 3.

функция jion:

Описание функции: Соедините два кадра данных по индексу или указанному столбцу.Горизонтальная работа

DataFrame.join(другое, on=None, как='left', lsuffix=”, rsuffix=”, sort=False)

Параметр Описание

  • другое: [DataFrame, или серия с именем, или список DataFrame]. Если передается серия, ее атрибут name должен быть коллекцией, и коллекция будет использоваться в качестве имени столбца результирующего DataFrame.
  • on: [имя столбца, или список/кортеж имен столбцов, или массив аналогичной формы] связанный столбец, по умолчанию используется индексное соединение
  • как: [{'левый', 'правый', 'внешний', 'внутренний'}, по умолчанию: 'левый'] способ соединения, по умолчанию используется левое соединение
  • lsuffix:[string] Суффикс повторяющихся столбцов в левом кадре данных.
  • rsuffix: [string] Суффикс повторяющихся столбцов в правильном DataFrame.
  • sort: [boolean, default, False] Сортировка результатов по ключу соединения лексикографически. Если False, порядок ключей соединения зависит от типа соединения (ключевого слова).

добавить функцию:

Описание функции: добавьте новую строку в объект фрейма данных.Если имя добавленного столбца отсутствует в объекте фрейма данных, оно будет добавлено как новый столбец.вертикальная операция

append(self, other, ignore_index=False, verify_integrity=False)

Параметр Описание

  • другое: другой df;
  • ignore_index: если True, индекс будет переставлен;
  • Verify_integrity: проверьте уникальность индекса. Если есть дубликаты, будет сообщено об ошибке. Если был установлен ignore_index, этот параметр недействителен.

возвращаемое значение:

Возвращает новый объект, добавленный для завершения соединения

#写入代码
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down)
result.head()

image.png

2.4.5 Задача 5. Используйте метод слияния Panads и метод добавления DataFrame: выполните задачи задачи 2 и задачи 3.

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

Параметры следующие:

  • left: левый объект DataFrame для сшивания
  • right: правильный объект DataFrame для объединения
  • on: Имя столбца или уровня индекса для присоединения. Должен находиться в левом и правом объектах DataFrame. Если значение не передано, а значения left_index и right_index равны False, пересечение столбцов в DataFrame будет рассматриваться как ключ соединения.
  • left_on: в качестве ключа используется столбец или уровень индекса в левом кадре данных. Может быть именем столбца, именем уровня индекса или массивом длины, равной длине DataFrame.
  • right_on: в качестве ключа используется столбец или уровень индекса в левом кадре данных. Может быть именем столбца, именем уровня индекса или массивом длины, равной длине DataFrame.
  • left_index: если True, используйте индекс (метку строки) в левом кадре данных в качестве ключа соединения. Для DataFrame с MultiIndex (иерархическим) количество уровней должно соответствовать количеству ключей соединения в правом DataFrame.
  • right_index: Функция аналогична left_index.
  • как: один из «левых», «правых», «внешних», «внутренних». По умолчанию внутренний. внутренний - это пересечение, а внешний - это объединение. Например, слева: ['A','B','C']; справа[''A,'C','D']; если внутренняя часть находится на пересечении, буква А, которая появляется слева, купит ту, которая появляется справа A. Сопоставлен и склеен. Если это не B, он будет потерян, если он не сопоставлен справа. 'outer' принимает объединение, вхождение A будет сопоставляться одно за другим, а отсутствующая часть будет добавлена ​​к отсутствующему значению, если оно не появляется одновременно.
  • sort: лексикографически сортирует полученный DataFrame по ключу соединения. По умолчанию установлено значение True, установка значения False во многих случаях значительно улучшит производительность.
  • суффиксы: кортеж строковых суффиксов для перекрывающихся столбцов. По умолчанию ('x', 'y').
  • копирование: всегда копируйте данные из переданного объекта DataFrame (по умолчанию True), даже если перестроение индекса не требуется.
  • индикатор: добавляет в выходной DataFrame столбец с именем _merge, содержащий информацию об источнике каждой строки. _merge является категориальным типом и принимает значение left_only для наблюдений, чьи ключи слияния появляются только в «левом» DataFrame, и right_only для наблюдений, чьи ключи слияния появляются только в «правом» DataFrame, и если в обоих случаях, если ключ слияния точка наблюдения есть в обоих, она только левая.
#写入代码
result_up = pd.merge(text_left_up,text_right_up,left_index=True,right_index=True)
result_down = pd.merge(text_left_down,text_right_down,left_index=True,right_index=True)
result = resul_up.append(result_down)
result.head()

2.4.6 Задача 6: Сохраните заполненные данные как result.csv

#写入代码
result.to_csv('result.csv')

2.5 Взгляд на данные с другой точки зрения

2.5.1 Задача 1. Превратить наши данные в серийные данные

#写入代码
# 将完整的数据加载出来
text = pd.read_csv('result.csv')
text.head()

image.png

#写入代码
# stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引。
unit_result=text.stack().head(20)
unit_result.head(20)

image.pngПроцедура стека означает поворот столбцов набора данных в строки, а та же процедура распаковки означает поворот строк данных в столбцы.

Есть две распространенные иерархические структуры данных, одна — таблица, другая — «фигурные скобки», то есть следующие две формы:

微信截图_20210818175351.pngТаблица имеет индексы в направлении строки и столбца (аналогично DataFrame), а структура фигурных скобок имеет только индекс в «направлении столбца» (аналогично иерархической серии), и структура более склонна к стеку (Series- стек, легко запомнить). Функция стека изменит данные со "структуры таблицы" на "структуру фигурных скобок", то есть ее индекс строки станет индексом столбца. Напротив, функция распаковки изменит данные со "структуры фигурных скобок" на " структура таблицы», то есть изменить индекс столбца слоя на индекс строки.