English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DataFrame Pandas

   Основные операции с Pandas DataFrame

DataFrame является двумерной структурой данных, то есть данные выстраиваются в таблицу по строкам и столбцам.

Функции DataFrame

Возможные столбцы могут быть различных типов Размеры могут изменяться Маркированные оси (строки и столбцы) Можно выполнять арифметические операции над строками и столбцами

Структура

pandas.Series

Структура Series такова:

Предположим, что мы создаем DataFrame с данными студентов.

Мы можем рассматривать его как представление данных в виде SQL-таблицы или электронной таблицы.

pandas.DataFrame

Можна использовать следующие конструкторы для создания pandas DataFrame-

 pandas.DataFrame(data, index, columns, dtype, copy)

Описание параметров:

data: данные принимают различные формы, такие как ndarray, серия, карта, список, dict, константы и другой DataFrame. index: для меток строк, если индекс не передается, индекс результирующего кадра - Optional Default np.arange(n). columns: для меток столбцов, опциональнаяdefault-синтаксис - np.arange(n). Это происходит только в том случае, если индекс не передается. dtype: тип данных каждого столбца. copy: если значение по умолчанию равно False, то этот командный (или любой из его команд) используется для копирования данных.

Создание DataFrame

Can be created with various inputs to create pandas DataFrame-

Lists dict Series Numpy ndarrays Другой DataFrame

В后续ной части этой главы мы увидим, как использовать эти входные данные для создания DataFrame.

Создание пустого DataFrame

Можно создать базовый DataFrame - это Empty Dataframe.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 df = pd.DataFrame()
 print(df)

Результат выполнения:

 Empty DataFrame
 Columns:  []
 Index:  []

Создание DataFrame из Lists

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [1, 2, 3, 4, 5]
 df = pd.DataFrame(data)
 print(df)

Результат выполнения:

 0
 0  1
 1  2
 2  3
 3  4
 4  5
 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
 df = pd.DataFrame(data, columns=['Name', 'Age'])
 print(df)

Результат выполнения:

       Name    Age
 0      Alex         10
 1      Bob          12
 2      Clarke      13
 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
 df = pd.DataFrame(data, columns=['Name', 'Age'], dtype=float)
 print df

Результат выполнения:

 
      Name    Age
 0      Alex         10.0
 1      Bob          12.0
 2      Clarke      13.0
Обратите внимание:Параметр dtype изменяет тип столбца Age на浮понт.

Создание DataFrame из ndarray / Dict List

Длина всех ndarray должна быть одинаковой. Если передан index, длина индекса должна быть равна длине массива.
Если индекс не передается, то по умолчанию индекс будет равен range(n), где n - это длина массива.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
 df = pd.DataFrame(data)
 print(df)

Результат выполнения:

 
    Age Name
 0 28 Tom
 1 34 Jack
 2 29 Steve
 3 42 Ricky
Обратите внимание:Следуя значениям 0, 1, 2, 3. Это являютсяdefaultindексы, которые назначаются каждому объекту с помощью функции range(n).

Мы используем массив для создания DataFrame с индексом.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
 df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
 print(df)

Результат выполнения:

 
       Age Name
 rank1 28 Tom
 rank2 34 Jack
 rank3 29 Steve
 rank4 42 Ricky
Обратите внимание:Параметр indexassignит индекс каждой строке.

Создание DataFrame из списка словарей

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

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data)
 print(df)

Результат выполнения:

     a b c
 0 1 2 NaN
 1 5 10 20.0
Обратите внимание:NaN (нечисловое значение) добавляется в области отсутствия данных.

Ниже приведен пример того, как создать DataFrame, передавая список словарей и строковый индекс.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data, index=['first', 'second'])
 print(df)

Результат выполнения:

          a b c
 first 1 2 NaN
 second 5 10 20.0

Ниже приведен пример того, как создать DataFrame, содержащий список словарей, строковый индекс и индекс столбцов.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 # У двух столбцов индекс, значения соответствуют ключам словаря
 df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
 # У двух столбцов индекс
 df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
 print(df1)
 print(df2)

Результат выполнения:

 #output df1
       a b
 first 1 2
 second 5 10
 #output df2
       a b1
 first 1 NaN
 second 5 NaN
Обратите внимание:DataFrame df2 создан с использованием индексов столбцов, отличных от ключей словаря; поэтому, в этих местах добавлен NaN. А df1 создан с использованием индексов столбцов, таких как ключи словаря, поэтому добавлен NaN.

Создание DataFrame из Dict Series

Можно передать словарь последовательностей, чтобы сформировать DataFrame. Индекс результата — это объединение всех переданных индексов последовательностей.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df)

Результат выполнения:

   one two
 a 1.0 1
 b 2.0 2
 c 3.0 3
 d NaN 4

Для первой последовательности метка 'd' не была передана, но результатом является то, что для метки 'd' был добавлен NaN.
Теперь давайте разберемся с выбором, добавлением и удалением столбцов на примере.

Запрос столбца

Мы выберем столбец из DataFrame, чтобы понять это.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df ['one'])

Результат выполнения:

   a 1.0
 b 2.0
 c 3.0
 d NaN
 Name: one, dtype: float64

Добавление столбца

Мы рассмотрим, как добавить новый столбец в существующий DataFrame.

# Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 #Добавляем новый столбец, передавая новую последовательность, к существующему DataFrame с метками столбцов
 print ("Добавляем новый столбец, передавая его как Series:")
 df['three'] = pd.Series([10,20,30],index=['a','b','c'])
 print df
 print ("Используя существующие столбцы в DataFrame, добавляем новый столбец:")
 df['four'] = df['one'] + df['three']
 print(df)

Результат выполнения:

 Добавляем новый столбец, передавая его как Series:
 one two three
 a 1.0 1 10.0
 b 2.0 2 20.0
 c 3.0 3 30.0
 d NaN 4 NaN
 Используя существующие столбцы в DataFrame, добавляем новый столбец:
 one two three four
 a 1.0 1 10.0 11.0
 b 2.0 2 20.0 22.0
 c 3.0 3 30.0 33.0
 d NaN 4 NaN NaN

Удаление столбца

Можем удалить или вынуть столбцы; давайте разберемся на примере, как это сделать.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
    'three': pd.Series([10, 20, 30], index=['a', 'b', 'c'])
 df = pd.DataFrame(d)
 print("Our dataframe is:")
 print(df)
 # using del function
 print("Deleting the first column using del function:")
 del df['one']
 print(df)
 # using pop function
 print("Deleting another column using POP function:")
 df.pop('two')
 print(df)

Результат выполнения:

 Our dataframe is:
 one three two
 a 1.0 10.0 1
 b 2.0 20.0 2
 c 3.0 30.0 3
 d NaN NaN 4
 Deleting the first column using del function:
   three two
 a 10.0 1
 b 20.0 2
 c 30.0 3
 d NaN 4
 Deleting another column using POP function:
   three
 a 10.0
 b 20.0
 c 30.0
 d NaN

行查询、添加和删除

现在,我们将通过示例了解行的选择,添加和删除。让我们从选择的概念开始。

按标签查询

可以通过将行标签传递给loc函数来选择行。

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df.loc['b'])

Результат выполнения:

 
   one 2.0
 two 2.0
 Name: b, dtype: float64

结果是一系列带有标签作为DataFrame列名称的系列。并且,系列的名称是用来检索它的标签。

通过整数位置查询

可以通过将整数位置传递给iloc函数来选择行。

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df.iloc[2])

Результат выполнения:

 
   one 3.0
 two 3.0
 Name: c, dtype: float64

切片行

可以使用':'运算符选择多行。

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df[2:4])

Результат выполнения:

 
     one two
 c 3.0 3
 d NaN 4

Добавление строк

Использование функции append для добавления новых строк в DataFrame. Эта функция добавляет строки в конец.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
 df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
 df = df.append(df2)
 print(df)

Результат выполнения:

 
     a b
 0 1 2
 1 3 4
 0 5 6
 1 7 8

Удаление строк

Удаление строк из DataFrame с помощью индексных меток. Если метки повторяются, то удаляются несколько строк.
Если вы заметили, что в вышеупомянутом примере, метки повторяются. Давайте удалим одну метку и увидим, сколько строк будет удалено.

 # Filename: pandas.py
 # Автор: ru.oldtoolbag.com 
 # Импортировать пакет зависимости pandas и дать ему别名
 import pandas as pd
 df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
 df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
 df = df.append(df2)
 # Удалить строки с меткой 0
 df = df.drop(0)
 print(df)

Результат выполнения:

 
     a b
 1 3 4
 1 7 8

В上面的示例е, были удалены две строки, так как они содержат одинаковые метки 0.